@@ -191,15 +191,17 @@ static ssize_t nfs42_proc_copy(struct file *src, loff_t pos_src,
args.cp_src[0].u.nl4_addr.na_netid,
args.cp_src[0].u.nl4_addr.na_uaddr_len,
args.cp_src[0].u.nl4_addr.na_uaddr);
+
+ nfs4_stateid_copy(&args.src_stateid, &cn_res->cnr_stateid);
+ } else {
+ status = nfs42_set_rw_stateid(&args.src_stateid, src, FMODE_READ);
+ if (status)
+ return status;
}
if (!(server->caps & NFS_CAP_COPY))
return -ENOTSUPP;
- status = nfs42_set_rw_stateid(&args.src_stateid, src, FMODE_READ);
- if (status)
- return status;
-
status = nfs42_set_rw_stateid(&args.dst_stateid, dst, FMODE_WRITE);
if (status)
return status;