mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-29 12:55:24 -04:00
NFSv4: Fix nfs4_inode_make_writeable()
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 <trond.myklebust@hammerspace.com>
This commit is contained in:
@@ -644,10 +644,18 @@ int nfs4_inode_return_delegation(struct inode *inode)
|
||||
*/
|
||||
int nfs4_inode_make_writeable(struct inode *inode)
|
||||
{
|
||||
if (!nfs4_has_session(NFS_SERVER(inode)->nfs_client) ||
|
||||
!nfs4_check_delegation(inode, FMODE_WRITE))
|
||||
return nfs4_inode_return_delegation(inode);
|
||||
return 0;
|
||||
struct nfs_delegation *delegation;
|
||||
|
||||
rcu_read_lock();
|
||||
delegation = nfs4_get_valid_delegation(inode);
|
||||
if (delegation == NULL ||
|
||||
(nfs4_has_session(NFS_SERVER(inode)->nfs_client) &&
|
||||
(delegation->type & FMODE_WRITE))) {
|
||||
rcu_read_unlock();
|
||||
return 0;
|
||||
}
|
||||
rcu_read_unlock();
|
||||
return nfs4_inode_return_delegation(inode);
|
||||
}
|
||||
|
||||
static void nfs_mark_return_if_closed_delegation(struct nfs_server *server,
|
||||
|
||||
Reference in New Issue
Block a user