<feed xmlns='http://www.w3.org/2005/Atom'>
<title>lwn.git/fs/nfs/delegation.c, branch docs-5.6</title>
<subtitle>Linux kernel documentation tree maintained by Jonathan Corbet</subtitle>
<id>http://mirrors.hust.edu.cn/git/lwn.git/atom?h=docs-5.6</id>
<link rel='self' href='http://mirrors.hust.edu.cn/git/lwn.git/atom?h=docs-5.6'/>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/'/>
<updated>2019-11-04T02:28:46+00:00</updated>
<entry>
<title>NFSv4: Handle NFS4ERR_OLD_STATEID in delegreturn</title>
<updated>2019-11-04T02:28:46+00:00</updated>
<author>
<name>Trond Myklebust</name>
<email>trond.myklebust@hammerspace.com</email>
</author>
<published>2019-10-24T22:00:35+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=246afc0aa5a7c66b081fbcab4d70ec379df3cb62'/>
<id>urn:sha1:246afc0aa5a7c66b081fbcab4d70ec379df3cb62</id>
<content type='text'>
If the server returns NFS4ERR_OLD_STATEID in response to our delegreturn,
we want to sync to the most recent seqid for the delegation stateid. However
if we are already at the most recent, we have two possibilities:

- an OPEN reply is still outstanding and will return a new seqid
- an earlier OPEN reply was dropped on the floor due to a timeout.

In the latter case, we may end up unable to complete the delegreturn,
so we want to bump the seqid to a value greater than the cached value.
While this may cause us to lose the delegation in the former case,
it should now be safe to assume that the client will replay the OPEN
if necessary in order to get a new valid stateid.

Signed-off-by: Trond Myklebust &lt;trond.myklebust@hammerspace.com&gt;
</content>
</entry>
<entry>
<title>NFSv4: Fix races between open and delegreturn</title>
<updated>2019-11-04T02:28:46+00:00</updated>
<author>
<name>Trond Myklebust</name>
<email>trond.myklebust@hammerspace.com</email>
</author>
<published>2019-10-21T17:56:59+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=ee05f456772d4e3a04b539187473f50c394da5fa'/>
<id>urn:sha1:ee05f456772d4e3a04b539187473f50c394da5fa</id>
<content type='text'>
If the server returns the same delegation in an open that we just used
in a delegreturn, we need to ensure we don't apply that stateid if
the delegreturn has freed it on the server.
To do so, we ensure that we do not free the storage for the delegation
until either it is replaced by a new one, or we throw the inode out of
cache.

Signed-off-by: Trond Myklebust &lt;trond.myklebust@hammerspace.com&gt;
</content>
</entry>
<entry>
<title>NFS: nfs_inode_find_state_and_recover() fix stateid matching</title>
<updated>2019-11-04T02:28:46+00:00</updated>
<author>
<name>Trond Myklebust</name>
<email>trond.myklebust@hammerspace.com</email>
</author>
<published>2019-10-26T14:16:15+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=42c304c34e2d2c73d301b222418ac019918a1c59'/>
<id>urn:sha1:42c304c34e2d2c73d301b222418ac019918a1c59</id>
<content type='text'>
In nfs_inode_find_state_and_recover() we want to mark for recovery
only those stateids that match or are older than the supplied
stateid parameter.

Signed-off-by: Trond Myklebust &lt;trond.myklebust@hammerspace.com&gt;
</content>
</entry>
<entry>
<title>NFSv4: Fix nfs4_inode_make_writeable()</title>
<updated>2019-11-04T02:28:46+00:00</updated>
<author>
<name>Trond Myklebust</name>
<email>trond.myklebust@hammerspace.com</email>
</author>
<published>2019-10-27T17:48:18+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=3887ce1aac3a02df3d992cf82d0c644d26d64635'/>
<id>urn:sha1:3887ce1aac3a02df3d992cf82d0c644d26d64635</id>
<content type='text'>
Fix the checks in nfs4_inode_make_writeable() to ignore the case where
we hold no delegations. Currently, in such a case, we automatically
flush writes.

Signed-off-by: Trond Myklebust &lt;trond.myklebust@hammerspace.com&gt;
</content>
</entry>
<entry>
<title>NFSv4: Don't reclaim delegations that have been returned or revoked</title>
<updated>2019-11-04T02:28:46+00:00</updated>
<author>
<name>Trond Myklebust</name>
<email>trond.myklebust@hammerspace.com</email>
</author>
<published>2019-10-22T12:52:47+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=1deed572351806322c3d9af005c2cf931ff23174'/>
<id>urn:sha1:1deed572351806322c3d9af005c2cf931ff23174</id>
<content type='text'>
If the delegation has already been revoked, we want to avoid reclaiming
it on reboot.

Signed-off-by: Trond Myklebust &lt;trond.myklebust@hammerspace.com&gt;
</content>
</entry>
<entry>
<title>NFSv4: Ignore requests to return the delegation if it was revoked</title>
<updated>2019-11-04T02:28:46+00:00</updated>
<author>
<name>Trond Myklebust</name>
<email>trond.myklebust@hammerspace.com</email>
</author>
<published>2019-10-22T17:40:47+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=af20b7b850c5786979f773ba25dab70c85914466'/>
<id>urn:sha1:af20b7b850c5786979f773ba25dab70c85914466</id>
<content type='text'>
If the delegation was revoked, or is already being returned, just
clear the NFS_DELEGATION_RETURN and NFS_DELEGATION_RETURN_IF_CLOSED
flags and keep going.

Signed-off-by: Trond Myklebust &lt;trond.myklebust@hammerspace.com&gt;
</content>
</entry>
<entry>
<title>NFSv4: Revoke the delegation on success in nfs4_delegreturn_done()</title>
<updated>2019-11-04T02:28:46+00:00</updated>
<author>
<name>Trond Myklebust</name>
<email>trond.myklebust@hammerspace.com</email>
</author>
<published>2019-10-21T18:22:14+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=d51f91d262aae047ea3b1496e333a83ce70bb48a'/>
<id>urn:sha1:d51f91d262aae047ea3b1496e333a83ce70bb48a</id>
<content type='text'>
If the delegation was successfully returned, then mark it as revoked.

Signed-off-by: Trond Myklebust &lt;trond.myklebust@hammerspace.com&gt;
</content>
</entry>
<entry>
<title>NFSv4: Update the stateid seqid in nfs_revoke_delegation()</title>
<updated>2019-11-04T02:28:46+00:00</updated>
<author>
<name>Trond Myklebust</name>
<email>trond.myklebust@hammerspace.com</email>
</author>
<published>2019-10-21T18:15:32+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=f2d47b5502054749b278cdaf9cb9a60415cf884a'/>
<id>urn:sha1:f2d47b5502054749b278cdaf9cb9a60415cf884a</id>
<content type='text'>
If we revoke a delegation, but the stateid's seqid is newer, then
ensure we update the seqid when marking the delegation as revoked.

Signed-off-by: Trond Myklebust &lt;trond.myklebust@hammerspace.com&gt;
</content>
</entry>
<entry>
<title>NFSv4: Clear the NFS_DELEGATION_REVOKED flag in nfs_update_inplace_delegation()</title>
<updated>2019-11-04T02:28:45+00:00</updated>
<author>
<name>Trond Myklebust</name>
<email>trond.myklebust@hammerspace.com</email>
</author>
<published>2019-10-21T18:17:34+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=ae084a32ee9230ca78c88d646efa0157b2dbca29'/>
<id>urn:sha1:ae084a32ee9230ca78c88d646efa0157b2dbca29</id>
<content type='text'>
If the server sent us a new delegation stateid that is more recent than
the one that got revoked, then clear the NFS_DELEGATION_REVOKED flag.

Signed-off-by: Trond Myklebust &lt;trond.myklebust@hammerspace.com&gt;
</content>
</entry>
<entry>
<title>NFSv4: Hold the delegation spinlock when updating the seqid</title>
<updated>2019-11-04T02:28:45+00:00</updated>
<author>
<name>Trond Myklebust</name>
<email>trond.myklebust@hammerspace.com</email>
</author>
<published>2019-10-21T18:11:00+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=e0f07896affd27ec378857dd6fccad0a43e52d35'/>
<id>urn:sha1:e0f07896affd27ec378857dd6fccad0a43e52d35</id>
<content type='text'>
Signed-off-by: Trond Myklebust &lt;trond.myklebust@hammerspace.com&gt;
</content>
</entry>
</feed>
