<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/adfs/inode.c, branch linux-5.8.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-5.8.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-5.8.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2020-01-21T01:12:42Z</updated>
<entry>
<title>fs/adfs: mostly divorse inode number from indirect disc address</title>
<updated>2020-01-21T01:12:42Z</updated>
<author>
<name>Russell King</name>
</author>
<published>2019-12-09T11:11:38Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=25e5d4df3b46a345dccc0a07f998ce443077b4ff'/>
<id>urn:sha1:25e5d4df3b46a345dccc0a07f998ce443077b4ff</id>
<content type='text'>
Avoid using the inode number as the indirect disc address, even though
these currently have the same value.

Signed-off-by: Russell King &lt;rmk+kernel@armlinux.org.uk&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>fs/adfs: inode: fix adfs_mode2atts()</title>
<updated>2020-01-21T01:12:40Z</updated>
<author>
<name>Russell King</name>
</author>
<published>2019-12-09T11:08:23Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=81916245ce231f7405ce444161d09b8a899a38af'/>
<id>urn:sha1:81916245ce231f7405ce444161d09b8a899a38af</id>
<content type='text'>
Fix adfs_mode2atts() to actually update the file permissions on the
media rather than using the current inode mode.  Note also that
directories do not have read/write permissions stored on the media.

Signed-off-by: Russell King &lt;rmk+kernel@armlinux.org.uk&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>fs/adfs: inode: update timestamps to centisecond precision</title>
<updated>2020-01-21T01:12:40Z</updated>
<author>
<name>Russell King</name>
</author>
<published>2019-12-09T11:08:18Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=eeeb9dd98ec353a19988b010223f29a8783127fa'/>
<id>urn:sha1:eeeb9dd98ec353a19988b010223f29a8783127fa</id>
<content type='text'>
Despite ADFS timestamps having centi-second granularity, and Linux
gaining fine-grained timestamp support in v2.5.48, fs/adfs was never
updated.

Update fs/adfs to centi-second support, and ensure that the inode ctime
always reflects what is written in underlying media.

Signed-off-by: Russell King &lt;rmk+kernel@armlinux.org.uk&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>Merge branch 'work.adfs' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs</title>
<updated>2019-07-19T18:33:22Z</updated>
<author>
<name>Linus Torvalds</name>
</author>
<published>2019-07-19T18:33:22Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d2fbf4b6d585e40f2369675148777abce3abd0e7'/>
<id>urn:sha1:d2fbf4b6d585e40f2369675148777abce3abd0e7</id>
<content type='text'>
Pull adfs updates from Al Viro:
 "More ADFS patches from Russell King"

* 'work.adfs' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
  fs/adfs: add time stamp and file type helpers
  fs/adfs: super: limit idlen according to directory type
  fs/adfs: super: fix use-after-free bug
  fs/adfs: super: safely update options on remount
  fs/adfs: super: correct superblock flags
  fs/adfs: clean up indirect disc addresses and fragment IDs
  fs/adfs: clean up error message printing
  fs/adfs: use %pV for error messages
  fs/adfs: use format_version from disc_record
  fs/adfs: add helper to get filesystem size
  fs/adfs: add helper to get discrecord from map
  fs/adfs: correct disc record structure
</content>
</entry>
<entry>
<title>fs/adfs: add time stamp and file type helpers</title>
<updated>2019-06-27T00:14:14Z</updated>
<author>
<name>Russell King</name>
</author>
<published>2019-06-04T13:50:24Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b4ed8f75c82876342b3399942427392ba5f3bbb5'/>
<id>urn:sha1:b4ed8f75c82876342b3399942427392ba5f3bbb5</id>
<content type='text'>
Add some helpers to check whether the inode has a time stamp and file
type, and to parse the file type from the load address.

Signed-off-by: Russell King &lt;rmk+kernel@armlinux.org.uk&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>fs/adfs: clean up indirect disc addresses and fragment IDs</title>
<updated>2019-06-27T00:14:14Z</updated>
<author>
<name>Russell King</name>
</author>
<published>2019-06-04T13:49:57Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5ed70bb47767d1f57a5e85e585a327917ded0373'/>
<id>urn:sha1:5ed70bb47767d1f57a5e85e585a327917ded0373</id>
<content type='text'>
We use a variety of different names for the indirect disc address of
the current object, use a variety of different types, and print it in
a variety of different ways. Bring some consistency to this by naming
it "indaddr", use u32 or __u32 as the type since it fits in 32-bits,
and always print it with %06x (with no leading hex prefix.)

When printing it was a directory identifer, use "dir %06x" otherwise
use "object %06x".

Do the same for fragment IDs and the parent indirect disc addresses.

Signed-off-by: Russell King &lt;rmk+kernel@armlinux.org.uk&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500</title>
<updated>2019-06-19T15:09:55Z</updated>
<author>
<name>Thomas Gleixner</name>
</author>
<published>2019-06-04T08:11:33Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d2912cb15bdda8ba4a5dd73396ad62641af2f520'/>
<id>urn:sha1:d2912cb15bdda8ba4a5dd73396ad62641af2f520</id>
<content type='text'>
Based on 2 normalized pattern(s):

  this program is free software you can redistribute it and or modify
  it under the terms of the gnu general public license version 2 as
  published by the free software foundation

  this program is free software you can redistribute it and or modify
  it under the terms of the gnu general public license version 2 as
  published by the free software foundation #

extracted by the scancode license scanner the SPDX license identifier

  GPL-2.0-only

has been chosen to replace the boilerplate/reference in 4122 file(s).

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Reviewed-by: Enrico Weigelt &lt;info@metux.net&gt;
Reviewed-by: Kate Stewart &lt;kstewart@linuxfoundation.org&gt;
Reviewed-by: Allison Randal &lt;allison@lohutok.net&gt;
Cc: linux-spdx@vger.kernel.org
Link: https://lkml.kernel.org/r/20190604081206.933168790@linutronix.de
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>adfs: use timespec64 for time conversion</title>
<updated>2018-08-22T17:52:51Z</updated>
<author>
<name>Arnd Bergmann</name>
</author>
<published>2018-08-22T05:01:09Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d9edcbc42c77b719e03dedb2aff719ae19659a0f'/>
<id>urn:sha1:d9edcbc42c77b719e03dedb2aff719ae19659a0f</id>
<content type='text'>
We just truncate the seconds to 32-bit in one place now, so this can
trivially be converted over to using timespec64 consistently.

Link: http://lkml.kernel.org/r/20180620100133.4035614-1-arnd@arndb.de
Signed-off-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Cc: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>adfs: don't put inodes into icache</title>
<updated>2018-08-03T20:03:33Z</updated>
<author>
<name>Al Viro</name>
</author>
<published>2018-06-30T07:15:49Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d8e78da8682028ad53d040339a2b9d6fb6092d63'/>
<id>urn:sha1:d8e78da8682028ad53d040339a2b9d6fb6092d63</id>
<content type='text'>
We never look them up in there; inode_fake_hash() will make them appear
hashed for mark_inode_dirty() purposes.  And don't leave them around
until memory pressure kicks them out - we never look them up again.

Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>vfs: change inode times to use struct timespec64</title>
<updated>2018-06-05T23:57:31Z</updated>
<author>
<name>Deepa Dinamani</name>
</author>
<published>2018-05-09T02:36:02Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=95582b00838837fc07e042979320caf917ce3fe6'/>
<id>urn:sha1:95582b00838837fc07e042979320caf917ce3fe6</id>
<content type='text'>
struct timespec is not y2038 safe. Transition vfs to use
y2038 safe struct timespec64 instead.

The change was made with the help of the following cocinelle
script. This catches about 80% of the changes.
All the header file and logic changes are included in the
first 5 rules. The rest are trivial substitutions.
I avoid changing any of the function signatures or any other
filesystem specific data structures to keep the patch simple
for review.

The script can be a little shorter by combining different cases.
But, this version was sufficient for my usecase.

virtual patch

@ depends on patch @
identifier now;
@@
- struct timespec
+ struct timespec64
  current_time ( ... )
  {
- struct timespec now = current_kernel_time();
+ struct timespec64 now = current_kernel_time64();
  ...
- return timespec_trunc(
+ return timespec64_trunc(
  ... );
  }

@ depends on patch @
identifier xtime;
@@
 struct \( iattr \| inode \| kstat \) {
 ...
-       struct timespec xtime;
+       struct timespec64 xtime;
 ...
 }

@ depends on patch @
identifier t;
@@
 struct inode_operations {
 ...
int (*update_time) (...,
-       struct timespec t,
+       struct timespec64 t,
...);
 ...
 }

@ depends on patch @
identifier t;
identifier fn_update_time =~ "update_time$";
@@
 fn_update_time (...,
- struct timespec *t,
+ struct timespec64 *t,
 ...) { ... }

@ depends on patch @
identifier t;
@@
lease_get_mtime( ... ,
- struct timespec *t
+ struct timespec64 *t
  ) { ... }

@te depends on patch forall@
identifier ts;
local idexpression struct inode *inode_node;
identifier i_xtime =~ "^i_[acm]time$";
identifier ia_xtime =~ "^ia_[acm]time$";
identifier fn_update_time =~ "update_time$";
identifier fn;
expression e, E3;
local idexpression struct inode *node1;
local idexpression struct inode *node2;
local idexpression struct iattr *attr1;
local idexpression struct iattr *attr2;
local idexpression struct iattr attr;
identifier i_xtime1 =~ "^i_[acm]time$";
identifier i_xtime2 =~ "^i_[acm]time$";
identifier ia_xtime1 =~ "^ia_[acm]time$";
identifier ia_xtime2 =~ "^ia_[acm]time$";
@@
(
(
- struct timespec ts;
+ struct timespec64 ts;
|
- struct timespec ts = current_time(inode_node);
+ struct timespec64 ts = current_time(inode_node);
)

&lt;+... when != ts
(
- timespec_equal(&amp;inode_node-&gt;i_xtime, &amp;ts)
+ timespec64_equal(&amp;inode_node-&gt;i_xtime, &amp;ts)
|
- timespec_equal(&amp;ts, &amp;inode_node-&gt;i_xtime)
+ timespec64_equal(&amp;ts, &amp;inode_node-&gt;i_xtime)
|
- timespec_compare(&amp;inode_node-&gt;i_xtime, &amp;ts)
+ timespec64_compare(&amp;inode_node-&gt;i_xtime, &amp;ts)
|
- timespec_compare(&amp;ts, &amp;inode_node-&gt;i_xtime)
+ timespec64_compare(&amp;ts, &amp;inode_node-&gt;i_xtime)
|
ts = current_time(e)
|
fn_update_time(..., &amp;ts,...)
|
inode_node-&gt;i_xtime = ts
|
node1-&gt;i_xtime = ts
|
ts = inode_node-&gt;i_xtime
|
&lt;+... attr1-&gt;ia_xtime ...+&gt; = ts
|
ts = attr1-&gt;ia_xtime
|
ts.tv_sec
|
ts.tv_nsec
|
btrfs_set_stack_timespec_sec(..., ts.tv_sec)
|
btrfs_set_stack_timespec_nsec(..., ts.tv_nsec)
|
- ts = timespec64_to_timespec(
+ ts =
...
-)
|
- ts = ktime_to_timespec(
+ ts = ktime_to_timespec64(
...)
|
- ts = E3
+ ts = timespec_to_timespec64(E3)
|
- ktime_get_real_ts(&amp;ts)
+ ktime_get_real_ts64(&amp;ts)
|
fn(...,
- ts
+ timespec64_to_timespec(ts)
,...)
)
...+&gt;
(
&lt;... when != ts
- return ts;
+ return timespec64_to_timespec(ts);
...&gt;
)
|
- timespec_equal(&amp;node1-&gt;i_xtime1, &amp;node2-&gt;i_xtime2)
+ timespec64_equal(&amp;node1-&gt;i_xtime2, &amp;node2-&gt;i_xtime2)
|
- timespec_equal(&amp;node1-&gt;i_xtime1, &amp;attr2-&gt;ia_xtime2)
+ timespec64_equal(&amp;node1-&gt;i_xtime2, &amp;attr2-&gt;ia_xtime2)
|
- timespec_compare(&amp;node1-&gt;i_xtime1, &amp;node2-&gt;i_xtime2)
+ timespec64_compare(&amp;node1-&gt;i_xtime1, &amp;node2-&gt;i_xtime2)
|
node1-&gt;i_xtime1 =
- timespec_trunc(attr1-&gt;ia_xtime1,
+ timespec64_trunc(attr1-&gt;ia_xtime1,
...)
|
- attr1-&gt;ia_xtime1 = timespec_trunc(attr2-&gt;ia_xtime2,
+ attr1-&gt;ia_xtime1 =  timespec64_trunc(attr2-&gt;ia_xtime2,
...)
|
- ktime_get_real_ts(&amp;attr1-&gt;ia_xtime1)
+ ktime_get_real_ts64(&amp;attr1-&gt;ia_xtime1)
|
- ktime_get_real_ts(&amp;attr.ia_xtime1)
+ ktime_get_real_ts64(&amp;attr.ia_xtime1)
)

@ depends on patch @
struct inode *node;
struct iattr *attr;
identifier fn;
identifier i_xtime =~ "^i_[acm]time$";
identifier ia_xtime =~ "^ia_[acm]time$";
expression e;
@@
(
- fn(node-&gt;i_xtime);
+ fn(timespec64_to_timespec(node-&gt;i_xtime));
|
 fn(...,
- node-&gt;i_xtime);
+ timespec64_to_timespec(node-&gt;i_xtime));
|
- e = fn(attr-&gt;ia_xtime);
+ e = fn(timespec64_to_timespec(attr-&gt;ia_xtime));
)

@ depends on patch forall @
struct inode *node;
struct iattr *attr;
identifier i_xtime =~ "^i_[acm]time$";
identifier ia_xtime =~ "^ia_[acm]time$";
identifier fn;
@@
{
+ struct timespec ts;
&lt;+...
(
+ ts = timespec64_to_timespec(node-&gt;i_xtime);
fn (...,
- &amp;node-&gt;i_xtime,
+ &amp;ts,
...);
|
+ ts = timespec64_to_timespec(attr-&gt;ia_xtime);
fn (...,
- &amp;attr-&gt;ia_xtime,
+ &amp;ts,
...);
)
...+&gt;
}

@ depends on patch forall @
struct inode *node;
struct iattr *attr;
struct kstat *stat;
identifier ia_xtime =~ "^ia_[acm]time$";
identifier i_xtime =~ "^i_[acm]time$";
identifier xtime =~ "^[acm]time$";
identifier fn, ret;
@@
{
+ struct timespec ts;
&lt;+...
(
+ ts = timespec64_to_timespec(node-&gt;i_xtime);
ret = fn (...,
- &amp;node-&gt;i_xtime,
+ &amp;ts,
...);
|
+ ts = timespec64_to_timespec(node-&gt;i_xtime);
ret = fn (...,
- &amp;node-&gt;i_xtime);
+ &amp;ts);
|
+ ts = timespec64_to_timespec(attr-&gt;ia_xtime);
ret = fn (...,
- &amp;attr-&gt;ia_xtime,
+ &amp;ts,
...);
|
+ ts = timespec64_to_timespec(attr-&gt;ia_xtime);
ret = fn (...,
- &amp;attr-&gt;ia_xtime);
+ &amp;ts);
|
+ ts = timespec64_to_timespec(stat-&gt;xtime);
ret = fn (...,
- &amp;stat-&gt;xtime);
+ &amp;ts);
)
...+&gt;
}

@ depends on patch @
struct inode *node;
struct inode *node2;
identifier i_xtime1 =~ "^i_[acm]time$";
identifier i_xtime2 =~ "^i_[acm]time$";
identifier i_xtime3 =~ "^i_[acm]time$";
struct iattr *attrp;
struct iattr *attrp2;
struct iattr attr ;
identifier ia_xtime1 =~ "^ia_[acm]time$";
identifier ia_xtime2 =~ "^ia_[acm]time$";
struct kstat *stat;
struct kstat stat1;
struct timespec64 ts;
identifier xtime =~ "^[acmb]time$";
expression e;
@@
(
( node-&gt;i_xtime2 \| attrp-&gt;ia_xtime2 \| attr.ia_xtime2 \) = node-&gt;i_xtime1  ;
|
 node-&gt;i_xtime2 = \( node2-&gt;i_xtime1 \| timespec64_trunc(...) \);
|
 node-&gt;i_xtime2 = node-&gt;i_xtime1 = node-&gt;i_xtime3 = \(ts \| current_time(...) \);
|
 node-&gt;i_xtime1 = node-&gt;i_xtime3 = \(ts \| current_time(...) \);
|
 stat-&gt;xtime = node2-&gt;i_xtime1;
|
 stat1.xtime = node2-&gt;i_xtime1;
|
( node-&gt;i_xtime2 \| attrp-&gt;ia_xtime2 \) = attrp-&gt;ia_xtime1  ;
|
( attrp-&gt;ia_xtime1 \| attr.ia_xtime1 \) = attrp2-&gt;ia_xtime2;
|
- e = node-&gt;i_xtime1;
+ e = timespec64_to_timespec( node-&gt;i_xtime1 );
|
- e = attrp-&gt;ia_xtime1;
+ e = timespec64_to_timespec( attrp-&gt;ia_xtime1 );
|
node-&gt;i_xtime1 = current_time(...);
|
 node-&gt;i_xtime2 = node-&gt;i_xtime1 = node-&gt;i_xtime3 =
- e;
+ timespec_to_timespec64(e);
|
 node-&gt;i_xtime1 = node-&gt;i_xtime3 =
- e;
+ timespec_to_timespec64(e);
|
- node-&gt;i_xtime1 = e;
+ node-&gt;i_xtime1 = timespec_to_timespec64(e);
)

Signed-off-by: Deepa Dinamani &lt;deepa.kernel@gmail.com&gt;
Cc: &lt;anton@tuxera.com&gt;
Cc: &lt;balbi@kernel.org&gt;
Cc: &lt;bfields@fieldses.org&gt;
Cc: &lt;darrick.wong@oracle.com&gt;
Cc: &lt;dhowells@redhat.com&gt;
Cc: &lt;dsterba@suse.com&gt;
Cc: &lt;dwmw2@infradead.org&gt;
Cc: &lt;hch@lst.de&gt;
Cc: &lt;hirofumi@mail.parknet.co.jp&gt;
Cc: &lt;hubcap@omnibond.com&gt;
Cc: &lt;jack@suse.com&gt;
Cc: &lt;jaegeuk@kernel.org&gt;
Cc: &lt;jaharkes@cs.cmu.edu&gt;
Cc: &lt;jslaby@suse.com&gt;
Cc: &lt;keescook@chromium.org&gt;
Cc: &lt;mark@fasheh.com&gt;
Cc: &lt;miklos@szeredi.hu&gt;
Cc: &lt;nico@linaro.org&gt;
Cc: &lt;reiserfs-devel@vger.kernel.org&gt;
Cc: &lt;richard@nod.at&gt;
Cc: &lt;sage@redhat.com&gt;
Cc: &lt;sfrench@samba.org&gt;
Cc: &lt;swhiteho@redhat.com&gt;
Cc: &lt;tj@kernel.org&gt;
Cc: &lt;trond.myklebust@primarydata.com&gt;
Cc: &lt;tytso@mit.edu&gt;
Cc: &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
</feed>
