summaryrefslogtreecommitdiffstats
path: root/fs/nfs/nfs4file.c
diff options
context:
space:
mode:
authorOlga Kornievskaia <kolga@netapp.com>2019-10-08 22:34:36 +0200
committerOlga Kornievskaia <olga.kornievskaia@gmail.com>2019-10-09 18:05:56 +0200
commit0b9018b9cab9b6a30fd6758ff0745ff74efcf374 (patch)
tree700e0b52989eb63b38619c364de60c19373202bd /fs/nfs/nfs4file.c
parentNFS: inter ssc open (diff)
downloadlinux-0b9018b9cab9b6a30fd6758ff0745ff74efcf374.tar.xz
linux-0b9018b9cab9b6a30fd6758ff0745ff74efcf374.zip
NFS: skip recovery of copy open on dest server
Mark the open created for the source file on the destination server. Then if this open is going thru a recovery, then fail the recovery as we don't need to be recoving a "fake" open. We need to fail the ongoing READs and vfs_copy_file_range(). Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
Diffstat (limited to 'fs/nfs/nfs4file.c')
-rw-r--r--fs/nfs/nfs4file.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/nfs/nfs4file.c b/fs/nfs/nfs4file.c
index 1898262a2cb1..a932fc9ca9c4 100644
--- a/fs/nfs/nfs4file.c
+++ b/fs/nfs/nfs4file.c
@@ -352,6 +352,7 @@ nfs42_ssc_open(struct vfsmount *ss_mnt, struct nfs_fh *src_fh,
if (ctx->state == NULL)
goto out_stateowner;
+ set_bit(NFS_SRV_SSC_COPY_STATE, &ctx->state->flags);
set_bit(NFS_OPEN_STATE, &ctx->state->flags);
memcpy(&ctx->state->open_stateid.other, &stateid->other,
NFS4_STATEID_OTHER_SIZE);