Commit bba67e0e authored by Trond Myklebust's avatar Trond Myklebust
Browse files

NFS: Remove BKL usage from open()



All the NFSv4 stateful operations are already protected by other locks (in
particular by the rpc_sequence locks.

Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent b6a2e569
Loading
Loading
Loading
Loading
+0 −6
Original line number Diff line number Diff line
@@ -139,10 +139,8 @@ nfs_opendir(struct inode *inode, struct file *filp)

	nfs_inc_stats(inode, NFSIOS_VFSOPEN);

	lock_kernel();
	/* Call generic open code in order to cache credentials */
	res = nfs_open(inode, filp);
	unlock_kernel();
	return res;
}

@@ -1019,9 +1017,7 @@ static struct dentry *nfs_atomic_lookup(struct inode *dir, struct dentry *dentry
	}

	/* Open the file on the server */
	lock_kernel();
	res = nfs4_atomic_open(dir, dentry, nd);
	unlock_kernel();
	if (IS_ERR(res)) {
		error = PTR_ERR(res);
		switch (error) {
@@ -1083,9 +1079,7 @@ static int nfs_open_revalidate(struct dentry *dentry, struct nameidata *nd)
	 * operations that change the directory. We therefore save the
	 * change attribute *before* we do the RPC call.
	 */
	lock_kernel();
	ret = nfs4_open_revalidate(dir, dentry, openflags, nd);
	unlock_kernel();
out:
	dput(parent);
	if (!ret)
+0 −2
Original line number Diff line number Diff line
@@ -128,9 +128,7 @@ nfs_file_open(struct inode *inode, struct file *filp)
		return res;

	nfs_inc_stats(inode, NFSIOS_VFSOPEN);
	lock_kernel();
	res = nfs_open(inode, filp);
	unlock_kernel();
	return res;
}

+0 −2
Original line number Diff line number Diff line
@@ -451,9 +451,7 @@ static struct nfs4_state *nfs4_try_open_cached(struct nfs4_opendata *opendata)
		/* Save the delegation */
		memcpy(stateid.data, delegation->stateid.data, sizeof(stateid.data));
		rcu_read_unlock();
		lock_kernel();
		ret = nfs_may_open(state->inode, state->owner->so_cred, open_mode);
		unlock_kernel();
		if (ret != 0)
			goto out;
		ret = -EAGAIN;