Re: [PATCH] NFS: Retry a zero-length short read

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Mar 16, 2016 at 10:22 AM, Benjamin Coddington
<bcodding@xxxxxxxxxx> wrote:
> On Wed, 16 Mar 2016, Trond Myklebust wrote:
>
>> On Wed, Mar 16, 2016 at 5:17 AM, Benjamin Coddington
>> <bcodding@xxxxxxxxxx> wrote:
>> >
>> > A zero-length short read without eof should be retried rather than sending
>> > an error to the application.
>>
>>
>> In what situation would returning a 0 length read not be a bug? If the
>> server intended that we back off and retry, it has the alternative of
>> sending a JUKEBOX/DELAY error.
>
> If the server completes a local read but then another writer comes in and
> appends to the file before the server checks if it needs to set EOF, then
> the response might be 0 length without EOF set.

Why isn't that EOF check done atomically with the read itself? This
still sounds like a server bug to me.

> I'm also using https://tools.ietf.org/html/rfc7530#section-16.23.5 to guide
> how I think the client should behave; it says that the client should retry
> a short read without eof set.  I think that should include a response with
> 0 length.

>> > Signed-off-by: Benjamin Coddington <bcodding@xxxxxxxxxx>
>> > ---
>> >  fs/nfs/read.c |    5 -----
>> >  1 files changed, 0 insertions(+), 5 deletions(-)
>> >
>> > diff --git a/fs/nfs/read.c b/fs/nfs/read.c
>> > index eb31e23..7269d42 100644
>> > --- a/fs/nfs/read.c
>> > +++ b/fs/nfs/read.c
>> > @@ -244,11 +244,6 @@ static void nfs_readpage_retry(struct rpc_task *task,
>> >
>> >         /* This is a short read! */
>> >         nfs_inc_stats(hdr->inode, NFSIOS_SHORTREAD);
>> > -       /* Has the server at least made some progress? */
>> > -       if (resp->count == 0) {
>> > -               nfs_set_pgio_error(hdr, -EIO, argp->offset);
>> > -               return;
>> > -       }
>> >
>> >         /* For non rpc-based layout drivers, retry-through-MDS */
>> >         if (!task->tk_ops) {
>> > --
>> > 1.7.1
>> >
>>
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux