<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/nfs/export.c, branch linux-5.16.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-5.16.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-5.16.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2021-11-05T18:54:40Z</updated>
<entry>
<title>NFS: Remove the nfs4_label argument from nfs_fhget()</title>
<updated>2021-11-05T18:54:40Z</updated>
<author>
<name>Anna Schumaker</name>
</author>
<published>2021-10-22T17:11:11Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=cf7ab00aabbf9c8f1ec72edff15849ddc23aa6a7'/>
<id>urn:sha1:cf7ab00aabbf9c8f1ec72edff15849ddc23aa6a7</id>
<content type='text'>
Signed-off-by: Anna Schumaker &lt;Anna.Schumaker@Netapp.com&gt;
Signed-off-by: Trond Myklebust &lt;trond.myklebust@hammerspace.com&gt;
</content>
</entry>
<entry>
<title>NFS: Remove the nfs4_label from the nfs4_getattr_res</title>
<updated>2021-11-05T18:54:39Z</updated>
<author>
<name>Anna Schumaker</name>
</author>
<published>2021-10-22T17:11:07Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2ef61e0eaa333e4e9c348c41a4b7abfb34b8736d'/>
<id>urn:sha1:2ef61e0eaa333e4e9c348c41a4b7abfb34b8736d</id>
<content type='text'>
Signed-off-by: Anna Schumaker &lt;Anna.Schumaker@Netapp.com&gt;
Signed-off-by: Trond Myklebust &lt;trond.myklebust@hammerspace.com&gt;
</content>
</entry>
<entry>
<title>NFS: Remove the nfs4_label from the nfs4_lookupp_res struct</title>
<updated>2021-11-05T18:54:39Z</updated>
<author>
<name>Anna Schumaker</name>
</author>
<published>2021-10-22T17:11:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ba4bc8dc4d937df2b407393435a302550be0ad82'/>
<id>urn:sha1:ba4bc8dc4d937df2b407393435a302550be0ad82</id>
<content type='text'>
Signed-off-by: Anna Schumaker &lt;Anna.Schumaker@Netapp.com&gt;
Signed-off-by: Trond Myklebust &lt;trond.myklebust@hammerspace.com&gt;
</content>
</entry>
<entry>
<title>nfs: don't atempt blocking locks on nfs reexports</title>
<updated>2021-08-26T19:32:10Z</updated>
<author>
<name>J. Bruce Fields</name>
</author>
<published>2021-08-20T21:02:04Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f657f8eef3ff870552c9fd2839e0061046f44618'/>
<id>urn:sha1:f657f8eef3ff870552c9fd2839e0061046f44618</id>
<content type='text'>
NFS implements blocking locks by blocking inside its lock method.  In
the reexport case, this blocks the nfs server thread, which could lead
to deadlocks since an nfs server thread might be required to unlock the
conflicting lock.  It also causes a crash, since the nfs server thread
assumes it can free the lock when its lm_notify lock callback is called.

Ideal would be to make the nfs lock method return without blocking in
this case, but for now it works just not to attempt blocking locks.  The
difference is just that the original client will have to poll (as it
does in the v4.0 case) instead of getting a callback when the lock's
available.

Signed-off-by: J. Bruce Fields &lt;bfields@redhat.com&gt;
Acked-by: Anna Schumaker &lt;Anna.Schumaker@Netapp.com&gt;
Signed-off-by: Chuck Lever &lt;chuck.lever@oracle.com&gt;
</content>
</entry>
<entry>
<title>NFS: Add a cache validity flag argument to nfs_revalidate_inode()</title>
<updated>2021-04-13T00:11:44Z</updated>
<author>
<name>Trond Myklebust</name>
</author>
<published>2021-03-25T15:04:34Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1f3208b2d6975f31b9c7c6bf174b84fe9c97492f'/>
<id>urn:sha1:1f3208b2d6975f31b9c7c6bf174b84fe9c97492f</id>
<content type='text'>
Add an argument to nfs_revalidate_inode() to allow callers to specify
which attributes they need to check for validity.

Signed-off-by: Trond Myklebust &lt;trond.myklebust@hammerspace.com&gt;
</content>
</entry>
<entry>
<title>NFS: fix nfs_fetch_iversion()</title>
<updated>2021-04-05T13:04:21Z</updated>
<author>
<name>Trond Myklebust</name>
</author>
<published>2021-03-24T19:32:21Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b876d708316bf9b6b9678eb2beb289b93cfe6369'/>
<id>urn:sha1:b876d708316bf9b6b9678eb2beb289b93cfe6369</id>
<content type='text'>
The change attribute is always set by all NFS client versions so get rid
of the open-coded version.

Fixes: 3cc55f4434b4 ("nfs: use change attribute for NFS re-exports")
Signed-off-by: Trond Myklebust &lt;trond.myklebust@hammerspace.com&gt;
</content>
</entry>
<entry>
<title>nfs: use change attribute for NFS re-exports</title>
<updated>2021-01-30T16:47:12Z</updated>
<author>
<name>J. Bruce Fields</name>
</author>
<published>2021-01-29T19:26:29Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3cc55f4434b421d37300aa9a167ace7d60b45ccf'/>
<id>urn:sha1:3cc55f4434b421d37300aa9a167ace7d60b45ccf</id>
<content type='text'>
When exporting NFS, we may as well use the real change attribute
returned by the original server instead of faking up a change attribute
from the ctime.

Note we can't do that by setting I_VERSION--that would also turn on the
logic in iversion.h which treats the lower bit specially, and that
doesn't make sense for NFS.

So instead we define a new export operation for filesystems like NFS
that want to manage the change attribute themselves.

Signed-off-by: J. Bruce Fields &lt;bfields@redhat.com&gt;
Reviewed-by: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Chuck Lever &lt;chuck.lever@oracle.com&gt;
</content>
</entry>
<entry>
<title>nfsd: Record NFSv4 pre/post-op attributes as non-atomic</title>
<updated>2020-12-09T14:39:38Z</updated>
<author>
<name>Trond Myklebust</name>
</author>
<published>2020-12-01T04:14:27Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=716a8bc7f706eeef80ab42c99d9f210eda845c81'/>
<id>urn:sha1:716a8bc7f706eeef80ab42c99d9f210eda845c81</id>
<content type='text'>
For the case of NFSv4, specify to the client that the pre/post-op
attributes were not recorded atomically with the main operation.

Signed-off-by: Trond Myklebust &lt;trond.myklebust@hammerspace.com&gt;
Signed-off-by: Chuck Lever &lt;chuck.lever@oracle.com&gt;
</content>
</entry>
<entry>
<title>nfsd: Set PF_LOCAL_THROTTLE on local filesystems only</title>
<updated>2020-12-09T14:39:38Z</updated>
<author>
<name>Trond Myklebust</name>
</author>
<published>2020-11-30T22:03:19Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=01cbf3853959feec40ec9b9a399e12a021cd4d81'/>
<id>urn:sha1:01cbf3853959feec40ec9b9a399e12a021cd4d81</id>
<content type='text'>
Don't set PF_LOCAL_THROTTLE on remote filesystems like NFS, since they
aren't expected to ever be subject to double buffering.

Signed-off-by: Trond Myklebust &lt;trond.myklebust@hammerspace.com&gt;
Signed-off-by: Chuck Lever &lt;chuck.lever@oracle.com&gt;
</content>
</entry>
<entry>
<title>nfsd: close cached files prior to a REMOVE or RENAME that would replace target</title>
<updated>2020-12-09T14:39:38Z</updated>
<author>
<name>Jeff Layton</name>
</author>
<published>2020-11-30T22:03:16Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=7f84b488f9add1d5cca3e6197c95914c7bd3c1cf'/>
<id>urn:sha1:7f84b488f9add1d5cca3e6197c95914c7bd3c1cf</id>
<content type='text'>
It's not uncommon for some workloads to do a bunch of I/O to a file and
delete it just afterward. If knfsd has a cached open file however, then
the file may still be open when the dentry is unlinked. If the
underlying filesystem is nfs, then that could trigger it to do a
sillyrename.

On a REMOVE or RENAME scan the nfsd_file cache for open files that
correspond to the inode, and proactively unhash and put their
references. This should prevent any delete-on-last-close activity from
occurring, solely due to knfsd's open file cache.

This must be done synchronously though so we use the variants that call
flush_delayed_fput. There are deadlock possibilities if you call
flush_delayed_fput while holding locks, however. In the case of
nfsd_rename, we don't even do the lookups of the dentries to be renamed
until we've locked for rename.

Once we've figured out what the target dentry is for a rename, check to
see whether there are cached open files associated with it. If there
are, then unwind all of the locking, close them all, and then reattempt
the rename.

None of this is really necessary for "typical" filesystems though. It's
mostly of use for NFS, so declare a new export op flag and use that to
determine whether to close the files beforehand.

Signed-off-by: Jeff Layton &lt;jeff.layton@primarydata.com&gt;
Signed-off-by: Lance Shelton &lt;lance.shelton@hammerspace.com&gt;
Signed-off-by: Trond Myklebust &lt;trond.myklebust@hammerspace.com&gt;
Signed-off-by: Chuck Lever &lt;chuck.lever@oracle.com&gt;
</content>
</entry>
</feed>
