diff options
author | Trond Myklebust <trond.myklebust@primarydata.com> | 2018-04-08 21:06:40 -0400 |
---|---|---|
committer | Trond Myklebust <trond.myklebust@hammerspace.com> | 2018-06-04 12:07:07 -0400 |
commit | 2f28dc385afd59f04cd42f0ced16050aa8db85e9 (patch) | |
tree | 561735c404e1a5d1f692b1f9c8bdc8c860b1cf3a | |
parent | 771734f291404285e40cb75713c60635ed5c61ca (diff) |
NFSv4: Don't ask for delegated attributes when adding a hard link
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
-rw-r--r-- | fs/nfs/nfs4proc.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index 744a6367618d..544cdcb79b4f 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c | |||
@@ -4378,11 +4378,12 @@ static int nfs4_proc_rename_done(struct rpc_task *task, struct inode *old_dir, | |||
4378 | static int _nfs4_proc_link(struct inode *inode, struct inode *dir, const struct qstr *name) | 4378 | static int _nfs4_proc_link(struct inode *inode, struct inode *dir, const struct qstr *name) |
4379 | { | 4379 | { |
4380 | struct nfs_server *server = NFS_SERVER(inode); | 4380 | struct nfs_server *server = NFS_SERVER(inode); |
4381 | __u32 bitmask[NFS4_BITMASK_SZ]; | ||
4381 | struct nfs4_link_arg arg = { | 4382 | struct nfs4_link_arg arg = { |
4382 | .fh = NFS_FH(inode), | 4383 | .fh = NFS_FH(inode), |
4383 | .dir_fh = NFS_FH(dir), | 4384 | .dir_fh = NFS_FH(dir), |
4384 | .name = name, | 4385 | .name = name, |
4385 | .bitmask = server->attr_bitmask, | 4386 | .bitmask = bitmask, |
4386 | }; | 4387 | }; |
4387 | struct nfs4_link_res res = { | 4388 | struct nfs4_link_res res = { |
4388 | .server = server, | 4389 | .server = server, |
@@ -4404,9 +4405,9 @@ static int _nfs4_proc_link(struct inode *inode, struct inode *dir, const struct | |||
4404 | status = PTR_ERR(res.label); | 4405 | status = PTR_ERR(res.label); |
4405 | goto out; | 4406 | goto out; |
4406 | } | 4407 | } |
4407 | arg.bitmask = nfs4_bitmask(server, res.label); | ||
4408 | 4408 | ||
4409 | nfs4_inode_make_writeable(inode); | 4409 | nfs4_inode_make_writeable(inode); |
4410 | nfs4_bitmap_copy_adjust_setattr(bitmask, nfs4_bitmask(server, res.label), inode); | ||
4410 | 4411 | ||
4411 | status = nfs4_call_sync(server->client, server, &msg, &arg.seq_args, &res.seq_res, 1); | 4412 | status = nfs4_call_sync(server->client, server, &msg, &arg.seq_args, &res.seq_res, 1); |
4412 | if (!status) { | 4413 | if (!status) { |