1. 10 Feb, 2010 6 commits
    • Jeff Layton's avatar
      nfs: handle NFSv2 -EKEYEXPIRED returns from RPC layer appropriately · 97cefcc6
      Jeff Layton authored
      Add a wrapper around rpc_call_sync that handles -EKEYEXPIRED errors from
      the RPC layer as it would an -EJUKEBOX error if NFSv2 had such a thing.
      Also, add a handler for that error for async calls that makes it
      resubmit the RPC on -EKEYEXPIRED.
      Signed-off-by: default avatarJeff Layton <jlayton@redhat.com>
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      97cefcc6
    • Jeff Layton's avatar
      nfs: handle NFSv3 -EKEYEXPIRED errors as we would -EJUKEBOX · b68d69b8
      Jeff Layton authored
      We're using -EKEYEXPIRED to indicate that a krb5 credcache contains an
      expired ticket and that we should have the NFS layer retry the RPC call
      instead of returning an error back to the caller. Handle this as we
      would an -EJUKEBOX error return.
      Signed-off-by: default avatarJeff Layton <jlayton@redhat.com>
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      b68d69b8
    • Jeff Layton's avatar
      nfs4: handle -EKEYEXPIRED errors from RPC layer · 2c643488
      Jeff Layton authored
      If a KRB5 TGT ticket expires, we don't want to return an error
      immediatel. If someone has a long running job and just forgets to run
      "kinit" in time then this will make it fail.
      
      Instead, we want to treat this situation as we would NFS4ERR_DELAY and
      retry the upcall after delaying a bit with an exponential backoff.
      
      This patch just makes any place that would handle NFS4ERR_DELAY also
      handle -EKEYEXPIRED the same way. In the future, we may want to be more
      sophisticated however and handle hard vs. soft mounts differently, or
      specify some upper limit on how long we'll wait for a new TGT to be
      acquired.
      Signed-off-by: default avatarJeff Layton <jlayton@redhat.com>
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      2c643488
    • Jeff Layton's avatar
      sunrpc: parse and return errors reported by gssd · dc5ddce9
      Jeff Layton authored
      The kernel currently ignores any error code sent by gssd and always
      considers it to be -EACCES. In order to better handle the situation of
      an expired KRB5 TGT, the kernel needs to be able to parse and deal with
      the errors that gssd sends. Aside from -EACCES the only error we care
      about is -EKEYEXPIRED, which we're using to indicate that the upper
      layers should retry the call a little later.
      
      To maintain backward compatibility with older gssd's, any error other
      than -EKEYEXPIRED is interpreted as -EACCES.
      Signed-off-by: default avatarJeff Layton <jlayton@redhat.com>
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      dc5ddce9
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://neil.brown.name/md · ac73fddf
      Linus Torvalds authored
      * 'for-linus' of git://neil.brown.name/md:
        md: fix some lockdep issues between md and sysfs.
        md: fix 'degraded' calculation when starting a reshape.
      ac73fddf
    • NeilBrown's avatar
      md: fix some lockdep issues between md and sysfs. · ef286f6f
      NeilBrown authored
      ======
      This fix is related to
          http://bugzilla.kernel.org/show_bug.cgi?id=15142
      but does not address that exact issue.
      ======
      
      sysfs does like attributes being removed while they are being accessed
      (i.e. read or written) and waits for the access to complete.
      
      As accessing some md attributes takes the same lock that is held while
      removing those attributes a deadlock can occur.
      
      This patch addresses 3 issues in md that could lead to this deadlock.
      
      Two relate to calling flush_scheduled_work while the lock is held.
      This is probably a bad idea in general and as we use schedule_work to
      delete various sysfs objects it is particularly bad.
      
      In one case flush_scheduled_work is called from md_alloc (called by
      md_probe) called from do_md_run which holds the lock.  This call is
      only present to ensure that ->gendisk is set.  However we can be sure
      that gendisk is always set (though possibly we couldn't when that code
      was originally written.  This is because do_md_run is called in three
      different contexts:
        1/ from md_ioctl.  This requires that md_open has succeeded, and it
           fails if ->gendisk is not set.
        2/ from writing a sysfs attribute.  This can only happen if the
           mddev has been registered in sysfs which happens in md_alloc
           after ->gendisk has been set.
        3/ from autorun_array which is only called by autorun_devices, which
           checks for ->gendisk to be set before calling autorun_array.
      So the call to md_probe in do_md_run can be removed, and the check on
      ->gendisk can also go.
      
      
      In the other case flush_scheduled_work is being called in do_md_stop,
      purportedly to wait for all md_delayed_delete calls (which delete the
      component rdevs) to complete.  However there really isn't any need to
      wait for them - they have already been disconnected in all important
      ways.
      
      The third issue is that raid5->stop() removes some attribute names
      while the lock is held.  There is already some infrastructure in place
      to delay attribute removal until after the lock is released (using
      schedule_work).  So extend that infrastructure to remove the
      raid5_attrs_group.
      
      This does not address all lockdep issues related to the sysfs
      "s_active" lock.  The rest can be address by splitting that lockdep
      context between symlinks and non-symlinks which hopefully will happen.
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      ef286f6f
  2. 09 Feb, 2010 5 commits
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs · 3af9cf11
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs:
        9p: fix p9_client_destroy unconditional calling v9fs_put_trans
        9p: fix memory leak in v9fs_parse_options()
        9p: Fix the kernel crash on a failed mount
        9p: fix option parsing
        9p: Include fsync support for 9p client
        net/9p: fix statsize inside twstat
        net/9p: fail when user specifies a transport which we can't find
        net/9p: fix virtio transport to correctly update status on connect
      3af9cf11
    • NeilBrown's avatar
      md: fix 'degraded' calculation when starting a reshape. · 9eb07c25
      NeilBrown authored
      This code was written long ago when it was not possible to
      reshape a degraded array.  Now it is so the current level of
      degraded-ness needs to be taken in to account.  Also newly addded
      devices should only reduce degradedness if they are deemed to be
      in-sync.
      
      In particular, if you convert a RAID5 to a RAID6, and increase the
      number of devices at the same time, then the 5->6 conversion will
      make the array degraded so the current code will produce a wrong
      value for 'degraded' - "-1" to be precise.
      
      If the reshape runs to completion end_reshape will calculate a correct
      new value for 'degraded', but if a device fails during the reshape an
      incorrect decision might be made based on the incorrect value of
      "degraded".
      
      This patch is suitable for 2.6.32-stable and if they are still open,
      2.6.31-stable and 2.6.30-stable as well.
      
      Cc: stable@kernel.org
      Reported-by: default avatarMichael Evans <mjevans1983@gmail.com>
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      9eb07c25
    • Linus Torvalds's avatar
      Merge branch 'for-2.6.33' of git://linux-nfs.org/~bfields/linux · deb0c98c
      Linus Torvalds authored
      * 'for-2.6.33' of git://linux-nfs.org/~bfields/linux:
        Revert "nfsd4: fix error return when pseudoroot missing"
      deb0c98c
    • Eric Van Hensbergen's avatar
      9p: fix p9_client_destroy unconditional calling v9fs_put_trans · 8781ff94
      Eric Van Hensbergen authored
      restructure client create code to handle error cases better and
      only cleanup initialized portions of the stack.
      Signed-off-by: default avatarVenkateswararao Jujjuri <jvrao@us.ibm.com>
      Signed-off-by: default avatarEric Van Hensbergen <ericvh@gmail.com>
      8781ff94
    • Linus Torvalds's avatar
      Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2 · a5f28ae4
      Linus Torvalds authored
      * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2:
        ocfs2/cluster: Make o2net connect messages KERN_NOTICE
        ocfs2/dlm: Fix printing of lockname
        ocfs2: Fix contiguousness check in ocfs2_try_to_merge_extent_map()
        ocfs2/dlm: Remove BUG_ON in dlm recovery when freeing locks of a dead node
        ocfs2: Plugs race between the dc thread and an unlock ast message
        ocfs2: Remove overzealous BUG_ON during blocked lock processing
        ocfs2: Do not downconvert if the lock level is already compatible
        ocfs2: Prevent a livelock in dlmglue
        ocfs2: Fix setting of OCFS2_LOCK_BLOCKED during bast
        ocfs2: Use compat_ptr in reflink_arguments.
        ocfs2/dlm: Handle EAGAIN for compatibility - v2
        ocfs2: Add parenthesis to wrap the check for O_DIRECT.
        ocfs2: Only bug out when page size is larger than cluster size.
        ocfs2: Fix memory overflow in cow_by_page.
        ocfs2/dlm: Print more messages during lock migration
        ocfs2/dlm: Ignore LVBs of locks in the Blocked list
        ocfs2/trivial: Remove trailing whitespaces
        ocfs2: fix a misleading variable name
        ocfs2: Sync max_inline_data_with_xattr from tools.
        ocfs2: Fix refcnt leak on ocfs2_fast_follow_link() error path
      a5f28ae4
  3. 08 Feb, 2010 24 commits
  4. 07 Feb, 2010 5 commits