2019-01-08 17:55:41

by Olga Kornievskaia

[permalink] [raw]
Subject: [PATCH 1/1] NFSv4.2 fix unnecessary retry in nfs4_copy_file_range

Currently nfs42_proc_copy_file_range() can not return EAGAIN.

Fixes: e4648aa4f98a ("NFS recover from destination server reboot for copies")
Signed-off-by: Olga Kornievskaia <[email protected]>
---
fs/nfs/nfs4file.c | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/fs/nfs/nfs4file.c b/fs/nfs/nfs4file.c
index 46d691b..81554af 100644
--- a/fs/nfs/nfs4file.c
+++ b/fs/nfs/nfs4file.c
@@ -137,11 +137,7 @@ static ssize_t nfs4_copy_file_range(struct file *file_in, loff_t pos_in,

if (file_inode(file_in) == file_inode(file_out))
return -EINVAL;
-retry:
- ret = nfs42_proc_copy(file_in, pos_in, file_out, pos_out, count);
- if (ret == -EAGAIN)
- goto retry;
- return ret;
+ return nfs42_proc_copy(file_in, pos_in, file_out, pos_out, count);
}

static loff_t nfs4_file_llseek(struct file *filep, loff_t offset, int whence)
--
1.8.3.1



2019-01-11 19:04:32

by Anna Schumaker

[permalink] [raw]
Subject: Re: [PATCH 1/1] NFSv4.2 fix unnecessary retry in nfs4_copy_file_range

Hi Olga,

On Tue, 2019-01-08 at 12:55 -0500, Olga Kornievskaia wrote:
> Currently nfs42_proc_copy_file_range() can not return EAGAIN.
>
> Fixes: e4648aa4f98a ("NFS recover from destination server reboot for copies")
> Signed-off-by: Olga Kornievskaia <[email protected]>
> ---
> fs/nfs/nfs4file.c | 6 +-----
> 1 file changed, 1 insertion(+), 5 deletions(-)
>
> diff --git a/fs/nfs/nfs4file.c b/fs/nfs/nfs4file.c
> index 46d691b..81554af 100644
> --- a/fs/nfs/nfs4file.c
> +++ b/fs/nfs/nfs4file.c
> @@ -137,11 +137,7 @@ static ssize_t nfs4_copy_file_range(struct file *file_in,
> loff_t pos_in,
>
> if (file_inode(file_in) == file_inode(file_out))
> return -EINVAL;
> -retry:
> - ret = nfs42_proc_copy(file_in, pos_in, file_out, pos_out, count);
> - if (ret == -EAGAIN)
> - goto retry;
> - return ret;
> + return nfs42_proc_copy(file_in, pos_in, file_out, pos_out, count);

I think this is the only user of the variable "ret", so can you remove its
declaration at the top of this function too?

CC [M] fs/nfs/nfs4file.o
fs/nfs/nfs4file.c: In function ‘nfs4_copy_file_range’:
fs/nfs/nfs4file.c:136:10: error: unused variable ‘ret’ [-Werror=unused-variable]
ssize_t ret;
^~~
cc1: all warnings being treated as errors

Thanks,
Anna

> }
>
> static loff_t nfs4_file_llseek(struct file *filep, loff_t offset, int whence)