1. 29 6月, 2012 18 次提交
  2. 25 6月, 2012 1 次提交
  3. 22 6月, 2012 5 次提交
  4. 21 6月, 2012 9 次提交
    • J
      Btrfs: delay iput with async extents · cb77fcd8
      Josef Bacik 提交于
      There is some concern that these iput()'s could be the final iputs and could
      induce lockups on people waiting on writeback.  This would happen in the
      rare case that we don't create ordered extents because of an error, but it
      is theoretically possible and we already have a mechanism to deal with this
      so just make them delayed iputs to negate any worry.
      Signed-off-by: NJosef Bacik <josef@redhat.com>
      Signed-off-by: NChris Mason <chris.mason@fusionio.com>
      cb77fcd8
    • J
      Btrfs: add a missing spin_lock · e18fca73
      Josef Bacik 提交于
      When fixing up the locking in the delayed ref destruction work I accidently
      broke the locking myself ;(.  Add back a spin_lock that should be there and
      we are now all set.  Thanks,
      Btrfs: add a missing spin_lock
      
      When fixing up the locking in the delayed ref destruction work I accidently
      broke the locking myself ;(.  Add back a spin_lock that should be there and
      we are now all set.  Thanks,
      Reported-by: NDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: NJosef Bacik <josef@redhat.com>
      Signed-off-by: NChris Mason <chris.mason@fusionio.com>
      e18fca73
    • A
      Btrfs: don't assume to be on the correct extent in add_all_parents · 69bca40d
      Alexander Block 提交于
      add_all_parents did assume that path is already at a correct extent data
      item, which may not be true in case of data extents that were partly
      rewritten and splitted.
      
      We need to check if we're on a matching extent for every item and only
      for the ones after the first. The loop is changed to do this now.
      
      This patch also fixes a bug introduced with commit 3b127fd8 "Btrfs:
      remove obsolete btrfs_next_leaf call from __resolve_indirect_ref".
      The removal of next_leaf did sometimes result in slot==nritems when
      the above described case happens, and thus resulting in invalid values
      (e.g. wanted_obejctid) in add_all_parents (leading to missed backrefs
      or even crashes).
      Signed-off-by: NAlexander Block <ablock84@googlemail.com>
      Signed-off-by: NJan Schmidt <list.btrfs@jan-o-sch.net>
      Signed-off-by: NChris Mason <chris.mason@fusionio.com>
      69bca40d
    • A
      Btrfs: introduce btrfs_next_old_item · 1c8f52a5
      Alexander Block 提交于
      We introduce btrfs_next_old_item that uses btrfs_next_old_leaf instead
      of btrfs_next_leaf.
      
      btrfs_next_item is also changed to simply call btrfs_next_old_item with
      time_seq being 0.
      Signed-off-by: NAlexander Block <ablock84@googlemail.com>
      Signed-off-by: NChris Mason <chris.mason@fusionio.com>
      1c8f52a5
    • K
      mm: correctly synchronize rss-counters at exit/exec · 4fe7efdb
      Konstantin Khlebnikov 提交于
      do_exit() and exec_mmap() call sync_mm_rss() before mm_release() does
      put_user(clear_child_tid) which can update task->rss_stat and thus make
      mm->rss_stat inconsistent.  This triggers the "BUG:" printk in check_mm().
      
      Let's fix this bug in the safest way, and optimize/cleanup this later.
      Reported-by: NMarkus Trippelsdorf <markus@trippelsdorf.de>
      Signed-off-by: NKonstantin Khlebnikov <khlebnikov@openvz.org>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Cc: Hugh Dickins <hughd@google.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      4fe7efdb
    • R
      nilfs2: ensure proper cache clearing for gc-inodes · fbb24a3a
      Ryusuke Konishi 提交于
      A gc-inode is a pseudo inode used to buffer the blocks to be moved by
      garbage collection.
      
      Block caches of gc-inodes must be cleared every time a garbage collection
      function (nilfs_clean_segments) completes.  Otherwise, stale blocks
      buffered in the caches may be wrongly reused in successive calls of the GC
      function.
      
      For user files, this is not a problem because their gc-inodes are
      distinguished by a checkpoint number as well as an inode number.  They
      never buffer different blocks if either an inode number, a checkpoint
      number, or a block offset differs.
      
      However, gc-inodes of sufile, cpfile and DAT file can store different data
      for the same block offset.  Thus, the nilfs_clean_segments function can
      move incorrect block for these meta-data files if an old block is cached.
      I found this is really causing meta-data corruption in nilfs.
      
      This fixes the issue by ensuring cache clear of gc-inodes and resolves
      reported GC problems including checkpoint file corruption, b-tree
      corruption, and the following warning during GC.
      
        nilfs_palloc_freev: entry number 307234 already freed.
        ...
      Signed-off-by: NRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
      Tested-by: NRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
      Cc: <stable@vger.kernel.org>	[2.6.37+]
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      fbb24a3a
    • J
      xfs: fix debug_object WARN at xfs_alloc_vextent() · 3b876c8f
      Jeff Liu 提交于
      Fengguang reports:
      
      [  780.529603] XFS (vdd): Ending clean mount
      [  781.454590] ODEBUG: object is on stack, but not annotated
      [  781.455433] ------------[ cut here ]------------
      [  781.455433] WARNING: at /c/kernel-tests/sound/lib/debugobjects.c:301 __debug_object_init+0x173/0x1f1()
      [  781.455433] Hardware name: Bochs
      [  781.455433] Modules linked in:
      [  781.455433] Pid: 26910, comm: kworker/0:2 Not tainted 3.4.0+ #51
      [  781.455433] Call Trace:
      [  781.455433]  [<ffffffff8106bc84>] warn_slowpath_common+0x83/0x9b
      [  781.455433]  [<ffffffff8106bcb6>] warn_slowpath_null+0x1a/0x1c
      [  781.455433]  [<ffffffff814919a5>] __debug_object_init+0x173/0x1f1
      [  781.455433]  [<ffffffff81491c65>] debug_object_init+0x14/0x16
      [  781.455433]  [<ffffffff8108842a>] __init_work+0x20/0x22
      [  781.455433]  [<ffffffff8134ea56>] xfs_alloc_vextent+0x6c/0xd5
      
      Use INIT_WORK_ONSTACK in xfs_alloc_vextent instead of INIT_WORK.
      Reported-by: NWu Fengguang <wfg@linux.intel.com>
      Signed-off-by: NJie Liu <jeff.liu@oracle.com>
      Signed-off-by: NBen Myers <bpm@sgi.com>
      3b876c8f
    • A
      xfs: xfs_vm_writepage clear iomap_valid when !buffer_uptodate (REV2) · 66f93113
      Alain Renaud 提交于
      On filesytems with a block size smaller than PAGE_SIZE we currently have
      a problem with unwritten extents.  If a we have multi-block page for
      which an unwritten extent has been allocated, and only some of the
      buffers have been written to, and they are not contiguous, we can expose
      stale data from disk in the blocks between the writes after extent
      conversion.
      
      Example of a page with unwritten and real data.
      buffer  content
      0       empty  b_state = 0
      1       DATA   b_state = 0x1023 Uptodate,Dirty,Mapped,Unwritten
      2       DATA   b_state = 0x1023 Uptodate,Dirty,Mapped,Unwritten
      3       empty  b_state = 0
      4       empty  b_state = 0
      5       DATA   b_state = 0x1023 Uptodate,Dirty,Mapped,Unwritten
      6       DATA   b_state = 0x1023 Uptodate,Dirty,Mapped,Unwritten
      7       empty  b_state = 0
      
      Buffers 1, 2, 5, and 6 have been written to, leaving 0, 3, 4, and 7
      empty.  Currently buffers 1, 2, 5, and 6 are added to a single ioend,
      and when IO has completed, extent conversion creates a real extent from
      block 1 through block 6, leaving 0 and 7 unwritten.  However buffers 3
      and 4 were not written to disk, so stale data is exposed from those
      blocks on a subsequent read.
      
      Fix this by setting iomap_valid = 0 when we find a buffer that is not
      Uptodate.  This ensures that buffers 5 and 6 are not added to the same
      ioend as buffers 1 and 2.  Later these blocks will be converted into two
      separate real extents, leaving the blocks in between unwritten.
      Signed-off-by: NAlain Renaud <arenaud@sgi.com>
      Reviewed-by: NDave Chinner <dchinner@redhat.com>
      Signed-off-by: NBen Myers <bpm@sgi.com>
      66f93113
    • B
      NFS: Force the legacy idmapper to be single threaded · b1027439
      Bryan Schumaker 提交于
      It was initially coded under the assumption that there would only be one
      request at a time, so use a lock to enforce this requirement..
      Signed-off-by: NBryan Schumaker <bjschuma@netapp.com>
      CC: stable@vger.kernel.org [3.4+]
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      b1027439
  5. 20 6月, 2012 4 次提交
  6. 18 6月, 2012 3 次提交