All of lore.kernel.org
 help / color / mirror / Atom feed
* open_downgrade use
@ 2016-06-01 20:31 Olga Kornievskaia
  2016-06-01 20:41 ` Trond Myklebust
  0 siblings, 1 reply; 6+ messages in thread
From: Olga Kornievskaia @ 2016-06-01 20:31 UTC (permalink / raw)
  To: linux-nfs

I'm failing to think of what can trigger an open_downgrade?
I thought the following example should trigger an open downgrade:

fd0 = open(foo, RDRW)   -- should be open on the wire for "both"
fd1 = open(foo, RDONLY)  -- should be open on the wire for "read"
close(fd0) -- should trigger an open_downgrade
read(fd1)
close(fd1)

However this commit says that it's not allowed by the spec.

commit cd9288ffaea4359d5cfe2b8d264911506aed26a4
Author: Trond Myklebust <trond.myklebust@primarydata.com>
Date:   Thu Sep 18 11:51:32 2014 -0400

    NFSv4: Fix another bug in the close/open_downgrade code

    James Drew reports another bug whereby the NFS client is now sending
    an OPEN_DOWNGRADE in a situation where it should really have sent a
    CLOSE: the client is opening the file for O_RDWR, but then trying to
    do a downgrade to O_RDONLY, which is not allowed by the NFSv4 spec.

    Reported-by: James Drews <drews@engr.wisc.edu>
    Link: http://lkml.kernel.org/r/541AD7E5.8020409@engr.wisc.edu
    Fixes: aee7af356e15 (NFSv4: Fix problems with close in the presence...)
    Cc: stable@vger.kernel.org # 2.6.33+
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>

If RDWR to RDONLY isn't allowed then why do we have OPEN_DOWNGRADE at all?

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-06-07 14:26 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-01 20:31 open_downgrade use Olga Kornievskaia
2016-06-01 20:41 ` Trond Myklebust
2016-06-01 20:59   ` Olga Kornievskaia
2016-06-01 22:10     ` Frank Filz
2016-06-02 19:48     ` Olga Kornievskaia
2016-06-07 14:26       ` Olga Kornievskaia

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.