mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-03-22 07:27:12 +08:00
Merge tag 'nfs-for-7.0-2' of git://git.linux-nfs.org/projects/anna/linux-nfs
Pull NFS client fixes from Anna Schumaker: - Fix NFS KConfig typos - Decrement re_receiving on the early exit paths - return EISDIR on nfs3_proc_create if d_alias is a dir * tag 'nfs-for-7.0-2' of git://git.linux-nfs.org/projects/anna/linux-nfs: NFS: Fix NFS KConfig typos xprtrdma: Decrement re_receiving on the early exit paths nfs: return EISDIR on nfs3_proc_create if d_alias is a dir
This commit is contained in:
@@ -87,7 +87,7 @@ config NFS_V4
|
|||||||
space programs which can be found in the Linux nfs-utils package,
|
space programs which can be found in the Linux nfs-utils package,
|
||||||
available from http://linux-nfs.org/.
|
available from http://linux-nfs.org/.
|
||||||
|
|
||||||
If unsure, say Y.
|
If unsure, say N.
|
||||||
|
|
||||||
config NFS_SWAP
|
config NFS_SWAP
|
||||||
bool "Provide swap over NFS support"
|
bool "Provide swap over NFS support"
|
||||||
@@ -100,6 +100,7 @@ config NFS_SWAP
|
|||||||
config NFS_V4_0
|
config NFS_V4_0
|
||||||
bool "NFS client support for NFSv4.0"
|
bool "NFS client support for NFSv4.0"
|
||||||
depends on NFS_V4
|
depends on NFS_V4
|
||||||
|
default y
|
||||||
help
|
help
|
||||||
This option enables support for minor version 0 of the NFSv4 protocol
|
This option enables support for minor version 0 of the NFSv4 protocol
|
||||||
(RFC 3530) in the kernel's NFS client.
|
(RFC 3530) in the kernel's NFS client.
|
||||||
|
|||||||
@@ -392,8 +392,13 @@ nfs3_proc_create(struct inode *dir, struct dentry *dentry, struct iattr *sattr,
|
|||||||
if (status != 0)
|
if (status != 0)
|
||||||
goto out_release_acls;
|
goto out_release_acls;
|
||||||
|
|
||||||
if (d_alias)
|
if (d_alias) {
|
||||||
|
if (d_is_dir(d_alias)) {
|
||||||
|
status = -EISDIR;
|
||||||
|
goto out_dput;
|
||||||
|
}
|
||||||
dentry = d_alias;
|
dentry = d_alias;
|
||||||
|
}
|
||||||
|
|
||||||
/* When we created the file with exclusive semantics, make
|
/* When we created the file with exclusive semantics, make
|
||||||
* sure we set the attributes afterwards. */
|
* sure we set the attributes afterwards. */
|
||||||
|
|||||||
@@ -1362,7 +1362,7 @@ void rpcrdma_post_recvs(struct rpcrdma_xprt *r_xprt, int needed)
|
|||||||
needed += RPCRDMA_MAX_RECV_BATCH;
|
needed += RPCRDMA_MAX_RECV_BATCH;
|
||||||
|
|
||||||
if (atomic_inc_return(&ep->re_receiving) > 1)
|
if (atomic_inc_return(&ep->re_receiving) > 1)
|
||||||
goto out;
|
goto out_dec;
|
||||||
|
|
||||||
/* fast path: all needed reps can be found on the free list */
|
/* fast path: all needed reps can be found on the free list */
|
||||||
wr = NULL;
|
wr = NULL;
|
||||||
@@ -1385,7 +1385,7 @@ void rpcrdma_post_recvs(struct rpcrdma_xprt *r_xprt, int needed)
|
|||||||
++count;
|
++count;
|
||||||
}
|
}
|
||||||
if (!wr)
|
if (!wr)
|
||||||
goto out;
|
goto out_dec;
|
||||||
|
|
||||||
rc = ib_post_recv(ep->re_id->qp, wr,
|
rc = ib_post_recv(ep->re_id->qp, wr,
|
||||||
(const struct ib_recv_wr **)&bad_wr);
|
(const struct ib_recv_wr **)&bad_wr);
|
||||||
@@ -1400,9 +1400,10 @@ void rpcrdma_post_recvs(struct rpcrdma_xprt *r_xprt, int needed)
|
|||||||
--count;
|
--count;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
out_dec:
|
||||||
if (atomic_dec_return(&ep->re_receiving) > 0)
|
if (atomic_dec_return(&ep->re_receiving) > 0)
|
||||||
complete(&ep->re_done);
|
complete(&ep->re_done);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
trace_xprtrdma_post_recvs(r_xprt, count);
|
trace_xprtrdma_post_recvs(r_xprt, count);
|
||||||
ep->re_receive_count += count;
|
ep->re_receive_count += count;
|
||||||
|
|||||||
Reference in New Issue
Block a user