mirror of https://gitee.com/openkylin/linux.git
NFS: for "inter" copy treat ESTALE as ENOTSUPP
If the client sends an "inter" copy to the destination server but it only supports "intra" copy, it can return ESTALE (since it doesn't know anything about the file handle from the other server and does not recognize the special case of "inter" copy). Translate this error as ENOTSUPP and also send OFFLOAD_CANCEL to the source server so that it can clean up state. Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
This commit is contained in:
parent
0b9018b9ca
commit
7e350197a1
|
@ -391,6 +391,11 @@ ssize_t nfs42_proc_copy(struct file *src, loff_t pos_src,
|
|||
args.sync = true;
|
||||
dst_exception.retry = 1;
|
||||
continue;
|
||||
} else if (err == -ESTALE &&
|
||||
!nfs42_files_from_same_server(src, dst)) {
|
||||
nfs42_do_offload_cancel_async(src, &args.src_stateid);
|
||||
err = -EOPNOTSUPP;
|
||||
break;
|
||||
}
|
||||
|
||||
err2 = nfs4_handle_exception(server, err, &src_exception);
|
||||
|
|
Loading…
Reference in New Issue