1. 08 8月, 2010 1 次提交
    • D
      AFS: Fix the module init error handling · df44f9f4
      David Howells 提交于
      Fix the module init error handling.  There are a bunch of goto labels for
      aborting the init procedure at different points and just undoing what needs
      undoing - they aren't all in the right places, however.
      
      This can lead to an oops like the following:
      
      	BUG: unable to handle kernel NULL pointer dereference at 0000000000000020
      	IP: [<ffffffff81042a31>] destroy_workqueue+0x17/0xc0
      	...
      	Modules linked in: kafs(+) dns_resolver rxkad af_rxrpc fscache
      
      	Pid: 2171, comm: insmod Not tainted 2.6.35-cachefs+ #319 DG965RY/
      	...
      	Process insmod (pid: 2171, threadinfo ffff88003ca6a000, task ffff88003dcc3050)
      	...
      	Call Trace:
      	 [<ffffffffa0055994>] afs_callback_update_kill+0x10/0x12 [kafs]
      	 [<ffffffffa007d1c5>] afs_init+0x190/0x1ce [kafs]
      	 [<ffffffffa007d035>] ? afs_init+0x0/0x1ce [kafs]
      	 [<ffffffff810001ef>] do_one_initcall+0x59/0x14e
      	 [<ffffffff8105f7ee>] sys_init_module+0x9c/0x1de
      	 [<ffffffff81001eab>] system_call_fastpath+0x16/0x1b
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      df44f9f4
  2. 07 8月, 2010 10 次提交
  3. 06 8月, 2010 14 次提交
  4. 05 8月, 2010 2 次提交
    • E
      ext4: re-inline ext4_rec_len_(to|from)_disk functions · 0cfc9255
      Eric Sandeen 提交于
      commit 3d0518f4, "ext4: New rec_len encoding for very
      large blocksizes" made several changes to this path, but from
      a perf perspective, un-inlining ext4_rec_len_from_disk() seems
      most significant.  This function is called from ext4_check_dir_entry(),
      which on a file-creation workload is called extremely often.
      
      I tested this with bonnie:
      
      # bonnie++ -u root -s 0 -f -x 200 -d /mnt/test -n 32
      
      (this does 200 iterations) and got this for the file creations:
      
      ext4 stock:   Average =  21206.8 files/s
      ext4 inlined: Average =  22346.7 files/s  (+5%)
      Signed-off-by: NEric Sandeen <sandeen@redhat.com>
      Signed-off-by: N"Theodore Ts'o" <tytso@mit.edu>
      0cfc9255
    • T
      block_dev: always serialize exclusive open attempts · e75aa858
      Tejun Heo 提交于
      bd_prepare_to_claim() incorrectly allowed multiple attempts for
      exclusive open to progress in parallel if the attempting holders are
      identical.  This triggered BUG_ON() as reported in the following bug.
      
        https://bugzilla.kernel.org/show_bug.cgi?id=16393
      
      __bd_abort_claiming() is used to finish claiming blocks and doesn't
      work if multiple openers are inside a claiming block.  Allowing
      multiple parallel open attempts to continue doesn't gain anything as
      those are serialized down in the call chain anyway.  Fix it by always
      allowing only single open attempt in a claiming block.
      
      This problem can easily be reproduced by adding a delay after
      bd_prepare_to_claim() and attempting to mount two partitions of a
      disk.
      
      stable: only applicable to v2.6.35
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Reported-by: NMarkus Trippelsdorf <markus@trippelsdorf.de>
      Cc: stable@kernel.org
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      e75aa858
  5. 04 8月, 2010 11 次提交
  6. 03 8月, 2010 2 次提交