06 Jan, 2012

1 commit


16 Nov, 2011

1 commit

  • Address the possible performance regression mentioned in "nfsd4: hash
    lockowners to simplify RELEASE_LOCKOWNER" by providing a separate
    (lockowner, inode) hash.

    Really, I doubt this matters much, but I think it's likely we'll change
    these data structures here and I'd rather that the need for (owner,
    inode) lookups be well-documented.

    Signed-off-by: J. Bruce Fields

    J. Bruce Fields
     

24 Oct, 2011

1 commit


18 Oct, 2011

3 commits

  • Move idr preallocation out of stateid initialization, into stateid
    allocation, so that we no longer have to handle any errors from the
    former.

    This is a little subtle due to the way the idr code manages these
    preallocated items--document that in comments.

    Signed-off-by: J. Bruce Fields

    J. Bruce Fields
     
  • If process_open1() creates a new open owner, but the open later fails,
    the current code will leave the open owner around. It won't be on the
    close_lru list, and the client isn't expected to send a CLOSE, so it
    will hang around as long as the client does.

    Similarly, if process_open1() removes an existing open owner from the
    close lru, anticipating that an open owner that previously had no
    associated stateid's now will, but the open subsequently fails, then
    we'll again be left with the same leak.

    Fix both problems.

    Reported-by: Bryan Schumaker
    Signed-off-by: J. Bruce Fields

    J. Bruce Fields
     
  • Signed-off-by: J. Bruce Fields

    J. Bruce Fields
     

11 Oct, 2011

2 commits


27 Sep, 2011

4 commits


19 Sep, 2011

2 commits

  • Look up closed stateid's in the stateid hash like any other stateid
    rather than searching the close lru.

    This is simpler, and fixes a bug: currently we handle only the case of a
    close that is the last close for a given stateowner, but not the case of
    a close for a stateowner that still has active opens on other files.
    Thus in a case like:

    open(owner, file1)
    open(owner, file2)
    close(owner, file2)
    close(owner, file2)

    the final close won't be recognized as a retransmission.

    Signed-off-by: J. Bruce Fields

    J. Bruce Fields
     
  • Including the full clientid in the on-the-wire stateid allows more
    reliable detection of bad vs. expired stateid's, simplifies code, and
    ensures we won't reuse the opaque part of the stateid (as we currently
    do when the same openowner closes and reopens the same file).

    Signed-off-by: J. Bruce Fields

    J. Bruce Fields
     

17 Sep, 2011

2 commits


14 Sep, 2011

5 commits


07 Sep, 2011

1 commit


04 Sep, 2011

1 commit


01 Sep, 2011

4 commits


28 Aug, 2011

2 commits


20 Aug, 2011

1 commit

  • The set of errors here does *not* agree with the set of errors specified
    in the rfc!

    While we're there, turn this macros into a function, for the usual
    reasons, and move it to the one place where it's actually used.

    Cc: stable@kernel.org
    Signed-off-by: J. Bruce Fields

    J. Bruce Fields
     

16 Jul, 2011

1 commit


18 Mar, 2011

1 commit


14 Feb, 2011

1 commit

  • Instead of acquiring one lease each time another client opens a file,
    nfsd can acquire just one lease to represent all of them, and reference
    count it to determine when to release it.

    This fixes a regression introduced by
    c45821d263a8a5109d69a9e8942b8d65bcd5f31a "locks: eliminate fl_mylease
    callback": after that patch, only the struct file * is used to determine
    who owns a given lease. But since we recently converted the server to
    share a single struct file per open, if we acquire multiple leases on
    the same file from nfsd, it then becomes impossible on unlocking a lease
    to determine which of those leases (all of whom share the same struct
    file *) we meant to remove.

    Thanks to Takashi Iwai for catching a bug in a previous
    version of this patch.

    Tested-by: Takashi Iwai
    Signed-off-by: J. Bruce Fields

    J. Bruce Fields
     

12 Jan, 2011

4 commits


05 Jan, 2011

2 commits

  • when callback is generated in NFSv4 server, it doesn't set the source
    address. When an alias IP is utilized on NFSv4 server and suppose the
    client is accessing via that alias IP (e.g. eth0:0), the client invokes
    the callback to the IP address that is set on the original device (e.g.
    eth0). This behavior results in timeout of xprt.
    The patch sets the IP address that the client should invoke callback to.

    Signed-off-by: Takuma Umeya
    [bfields@redhat.com: Simplify gen_callback arguments, use helper function]
    Signed-off-by: J. Bruce Fields

    Takuma Umeya
     
  • When we converted to sharing struct filess between nfs4 opens I went too
    far and also used the same mechanism for delegations. But keeping
    a reference to the struct file ensures it will outlast the lease, and
    allows us to remove the lease with the same file as we added it.

    Signed-off-by: J. Bruce Fields

    J. Bruce Fields
     

21 Oct, 2010

1 commit

  • The minorversion seems more a property of the client than the callback
    channel.

    Some time we should probably also enforce consistent minorversion usage
    from the client; for now, this is just a cosmetic change.

    Signed-off-by: J. Bruce Fields

    J. Bruce Fields