1. 07 Apr, 2010 15 commits
  2. 06 Apr, 2010 12 commits
  3. 05 Apr, 2010 13 commits
    • Nick Piggin's avatar
      Fix up possibly racy module refcounting · 5fbfb18d
      Nick Piggin authored
      Module refcounting is implemented with a per-cpu counter for speed.
      However there is a race when tallying the counter where a reference may
      be taken by one CPU and released by another.  Reference count summation
      may then see the decrement without having seen the previous increment,
      leading to lower than expected count.  A module which never has its
      actual reference drop below 1 may return a reference count of 0 due to
      this race.
      
      Module removal generally runs under stop_machine, which prevents this
      race causing bugs due to removal of in-use modules.  However there are
      other real bugs in module.c code and driver code (module_refcount is
      exported) where the callers do not run under stop_machine.
      
      Fix this by maintaining running per-cpu counters for the number of
      module refcount increments and the number of refcount decrements.  The
      increments are tallied after the decrements, so any decrement seen will
      always have its corresponding increment counted.  The final refcount is
      the difference of the total increments and decrements, preventing a
      low-refcount from being returned.
      Signed-off-by: default avatarNick Piggin <npiggin@suse.de>
      Acked-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      5fbfb18d
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 · 7da23b86
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6:
        [SCSI] qla1280: retain firmware for error recovery
        [SCSI] attirbute_container: Initialize sysfs attributes with sysfs_attr_init
        [SCSI] advansys: fix regression with request_firmware change
        [SCSI] qla2xxx: Updated version number to 8.03.02-k2.
        [SCSI] qla2xxx: Prevent sending mbx commands from sysfs during isp reset.
        [SCSI] qla2xxx: Disable MSI on qla24xx chips other than QLA2432.
        [SCSI] qla2xxx: Check to make sure multique and CPU affinity support is not enabled at the same time.
        [SCSI] qla2xxx: Correct vp_idx checking during PORT_UPDATE processing.
        [SCSI] qla2xxx: Honour "Extended BB credits" bit for CNAs.
        [SCSI] scsi_transport_fc: Make sure commands are completed when rport is offline
        [SCSI] libiscsi: Fix recovery slowdown regression
      7da23b86
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs · 749d2297
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs:
        9p: saving negative to unsigned char
        9p: return on mutex_lock_interruptible()
        9p: Creating files with names too long should fail with ENAMETOOLONG.
        9p: Make sure we are able to clunk the cached fid on umount
        9p: drop nlink remove
        fs/9p: Clunk the fid resulting from partial walk of the name
        9p: documentation update
        9p: Fix setting of protocol flags in v9fs_session_info structure.
      749d2297
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable · 795d580b
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:
        Btrfs: add check for changed leaves in setup_leaf_for_split
        Btrfs: create snapshot references in same commit as snapshot
        Btrfs: fix small race with delalloc flushing waitqueue's
        Btrfs: use add_to_page_cache_lru, use __page_cache_alloc
        Btrfs: fix chunk allocate size calculation
        Btrfs: kill max_extent mount option
        Btrfs: fail to mount if we have problems reading the block groups
        Btrfs: check btrfs_get_extent return for IS_ERR()
        Btrfs: handle kmalloc() failure in inode lookup ioctl
        Btrfs: dereferencing freed memory
        Btrfs: Simplify num_stripes's calculation logical for __btrfs_alloc_chunk()
        Btrfs: Add error handle for btrfs_search_slot() in btrfs_read_chunk_tree()
        Btrfs: Remove unnecessary finish_wait() in wait_current_trans()
        Btrfs: add NULL check for do_walk_down()
        Btrfs: remove duplicate include in ioctl.c
      
      Fix trivial conflict in fs/btrfs/compression.c due to slab.h include
      cleanups.
      795d580b
    • Eric Paris's avatar
      audit: preface audit printk with audit · 449cedf0
      Eric Paris authored
      There have been a number of reports of people seeing the message:
      "name_count maxed, losing inode data: dev=00:05, inode=3185"
      in dmesg.  These usually lead to people reporting problems to the filesystem
      group who are in turn clueless what they mean.
      
      Eventually someone finds me and I explain what is going on and that
      these come from the audit system.  The basics of the problem is that the
      audit subsystem never expects a single syscall to 'interact' (for some
      wish washy meaning of interact) with more than 20 inodes.  But in fact
      some operations like loading kernel modules can cause changes to lots of
      inodes in debugfs.
      
      There are a couple real fixes being bandied about including removing the
      fixed compile time limit of 20 or not auditing changes in debugfs (or
      both) but neither are small and obvious so I am not sending them for
      immediate inclusion (I hope Al forwards a real solution next devel
      window).
      
      In the meantime this patch simply adds 'audit' to the beginning of the
      crap message so if a user sees it, they come blame me first and we can
      talk about what it means and make sure we understand all of the reasons
      it can happen and make sure this gets solved correctly in the long run.
      Signed-off-by: default avatarEric Paris <eparis@redhat.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      449cedf0
    • Dan Carpenter's avatar
      9p: saving negative to unsigned char · 3dc9fef6
      Dan Carpenter authored
      Saving -EINVAL as unsigned char truncates the high bits and changes it
      into 234 instead of -22.  This breaks the test for "if (ret == -EINVAL)"
      in parse_opts().
      Signed-off-by: default avatarDan Carpenter <error27@gmail.com>
      Signed-off-by: default avatarEric Van Hensbergen <ericvh@gmail.com>
      3dc9fef6
    • Dan Carpenter's avatar
      9p: return on mutex_lock_interruptible() · 85a770a8
      Dan Carpenter authored
      If "err" is -EINTR here the original code calls mutex_unlock() and then
      returns, but it should just return directly.
      Signed-off-by: default avatarDan Carpenter <error27@gmail.com>
      Signed-off-by: default avatarEric Van Hensbergen <ericvh@gmail.com>
      
      ------------------------------------------------------------------------------
      Download Intel&#174; Parallel Studio Eval
      Try the new software tools for yourself. Speed compiling, find bugs
      proactively, and fine-tune applications for parallel performance.
      See why Intel Parallel Studio got high marks during beta.
      http://p.sf.net/sfu/intel-sw-dev
      85a770a8
    • Chris Mason's avatar
      Btrfs: add check for changed leaves in setup_leaf_for_split · 109f6aef
      Chris Mason authored
      setup_leaf_for_split needs to drop the path and search again, and has
      checks to see if the item we want to split changed size.  But, it misses
      the case where the leaf changed and now has enough room for the item
      we want to insert.
      
      This adds an extra check to make sure the leaf really needs splitting
      before we call btrfs_split_leaf(), which keeps us from trying to split
      a leaf with a single item.
      
      btrfs_split_leaf() will blindly split the single item leaf, leaving us
      with one good leaf and one empty leaf and then a crash.
      Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
      109f6aef
    • Sage Weil's avatar
      Btrfs: create snapshot references in same commit as snapshot · 6bdb72de
      Sage Weil authored
      This creates the reference to a new snapshot in the same commit as the
      snapshot itself.  This avoids the need for a second commit in order for a
      snapshot to be persistent, and also avoids the problem of "leaking" a
      new snapshot tree root if the host crashes before the second commit takes
      place.
      
      It is not at all clear to me why it wasn't always done this way.  If there
      is still a reason for the two-stage {create,finish}_pending_snapshots()
      approach I'm missing something!  :)
      
      I've been running this for a couple weeks under pretty heavy usage (a few
      snapshots per minute) without obvious problems.
      Signed-off-by: default avatarSage Weil <sage@newdream.net>
      Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
      6bdb72de
    • Josef Bacik's avatar
      Btrfs: fix small race with delalloc flushing waitqueue's · b5cb1600
      Josef Bacik authored
      Everytime we start a new flushing thread, we init the waitqueue if there isn't a
      flushing thread running.  The problem with this is we check
      space_info->flushing, which we clear right before doing a wake_up on the
      flushing waitqueue, which causes problems if we init the waitqueue in the middle
      of clearing the flushing flagh and calling wake_up.  This is hard to hit, but
      the code is wrong anyway, so init the flushing/allocating waitqueue when
      creating the space info and let it be.  I haven't seen the panic since I've been
      using this patch.  Thanks,
      Signed-off-by: default avatarJosef Bacik <josef@redhat.com>
      Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
      b5cb1600
    • Nick Piggin's avatar
      Btrfs: use add_to_page_cache_lru, use __page_cache_alloc · 28ecb609
      Nick Piggin authored
      Pagecache pages should be allocated with __page_cache_alloc, so they
      obey pagecache memory policies.
      
      add_to_page_cache_lru is exported, so it should be used. Benefits over
      using a private pagevec: neater code, 128 bytes fewer stack used, percpu
      lru ordering is preserved, and finally don't need to flush pagevec
      before returning so batching may be shared with other LRU insertions.
      
      Signed-off-by: Nick Piggin <npiggin@suse.de>:
      Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
      28ecb609
    • Linus Torvalds's avatar
      Merge branch 'slabh' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc · b66696e3
      Linus Torvalds authored
      * 'slabh' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc:
        eeepc-wmi: include slab.h
        staging/otus: include slab.h from usbdrv.h
        percpu: don't implicitly include slab.h from percpu.h
        kmemcheck: Fix build errors due to missing slab.h
        include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
        iwlwifi: don't include iwl-dev.h from iwl-devtrace.h
        x86: don't include slab.h from arch/x86/include/asm/pgtable_32.h
      
      Fix up trivial conflicts in include/linux/percpu.h due to
      is_kernel_percpu_address() having been introduced since the slab.h
      cleanup with the percpu_up.c splitup.
      b66696e3
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu · 9e74e7c8
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu:
        module: add stub for is_module_percpu_address
        percpu, module: implement and use is_kernel/module_percpu_address()
        module: encapsulate percpu handling better and record percpu_size
      9e74e7c8