public inbox for linux-nfs@vger.kernel.org
 help / color / mirror / Atom feed
From: Soumya Koduri <skoduri@redhat.com>
To: Anna Schumaker <schumakeranna@gmail.com>
Cc: linux-nfs@vger.kernel.org, Matt Benjamin <mbenjamin@redhat.com>
Subject: Re: NFS client behavior on WRITE_DELEGATION
Date: Fri, 7 Dec 2018 20:36:53 +0530	[thread overview]
Message-ID: <d20c87e0-dc56-70e6-aef8-0131e5d8fd01@redhat.com> (raw)
In-Reply-To: <9ebd1b22-234c-f9ae-b3f8-015fe8e81a27@redhat.com>



On 12/6/18 8:40 PM, Soumya Koduri wrote:
> Hi Anna,
> 
> Thanks a lot for the response. To understand client behavior under 
> various scenarios, I started with a simple "C" program which does below 
> operations in a loop on a nfsv4.1 mount point-
> 
> while(..)
> {
> OPEN,
> LOCK,
> READ/WRITE,
> UNLCK,
> CLOSE
> }
> 
> While examining the pkt traces, I observed that even when granted 
> WRITE_DELEGATION, there are WRITEs (though asynchronous & followed by 
> COMMIT) sent to the server for each of those iterations. So could it be 
> because of the kernel flushing out the data?
> 
> Also I noticed that the behavior of WRITE_DELEGATION granted for 
> OPEN(O_RDWR) is different when compared to the one granted to 
> OPEN(O_WRONLY)
> 
> 1) When the file is opened with OPEN4_SHARE_ACCESS_WRITE and a 
> OPEN_DELEGATE_WRITE delegation is granted, subsequent OPENs are avoided 
> and not sent to the server as expected, whereas
> If the file is opened with OPEN4_SHARE_ACCESS_BOTH and granted 
> OPEN_DELEGATE_WRITE, the next open is sent to server resulting in server 
> recalling the delegation it granted to the same client.
> 
> 2) And to that recall request, client responded back with EBADHANDLE error.
> 
> This doesn't seem right. Could you please confirm.
> 
> (Maybe the server also can avoid conflicting the OPENfrom the same 
> client to which it granted the delegation)

Apologies. This seem to have resulted from a server-side issue. On 
further debugging, I found that server rejected READ op with 
ERR_BAD_STATEID if there is WRITE_delegation granted to that file. This 
may have led nfs client to discard the delegation granted and send 
subsequent OPEN to server.

I think the server should allow READs if the access is 
OPEN4_SHARE_ACCESS_BOTH and its the same client which holds the write 
delegation. Will send out a patch to fix it.

So the only question I have for now is if/how client can save WRITEs 
from being sent to the server while holding write delegation. Please 
share your thoughts.

Thanks,
Soumya


> 
> Thanks,
> Soumya
> 
> On 12/6/18 1:52 AM, Anna Schumaker wrote:
>> Hi Soumya,
>>
>> What conditions are you seeing the writes?  It could be the kernel 
>> trying to flush out data to free up memory for other processes.
>>
>> I don't think preemptively writing back data is necessarily a bad 
>> thing though, even with a write delegation.  If the server decides to 
>> recall the delegation, we wouldn't keep it waiting as long while we 
>> write back local data.  Additionally, if the client crashes then any 
>> updates might have already had a chance to sync to the server.
>>
>> I hope this helps!
>> Anna
>>
>> On Mon, Dec 3, 2018 at 2:55 AM Soumya Koduri <skoduri@redhat.com 
>> <mailto:skoduri@redhat.com>> wrote:
>>
>>     Hi,
>>
>>     In our NFSv4.1 Delegations testing we observed that NFS client sends
>>     WRITE requests to the server even when granted WRITE_DELEGATION. I 
>> see
>>     that only OPEN/CLOSE and LOCK operations are served locally by the
>>     client.
>>
>>     Please confirm if this behavior is expected and if yes, can it be
>>     improved to avoid sending WRITEs to the server until the application
>>     does fsync.
>>
>>     Thanks,
>>     Soumya
>>

      reply	other threads:[~2018-12-07 15:07 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-03  7:52 NFS client behavior on WRITE_DELEGATION Soumya Koduri
     [not found] ` <CAFX2JfmYMnKoiQ0Kjt8SGLx2H=3GwwtLHco0wMR4xVHkJpLaoQ@mail.gmail.com>
2018-12-05 20:30   ` Anna Schumaker
2018-12-06 15:10   ` Soumya Koduri
2018-12-07 15:06     ` Soumya Koduri [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d20c87e0-dc56-70e6-aef8-0131e5d8fd01@redhat.com \
    --to=skoduri@redhat.com \
    --cc=linux-nfs@vger.kernel.org \
    --cc=mbenjamin@redhat.com \
    --cc=schumakeranna@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox