1. 29 8月, 2012 1 次提交
  2. 09 8月, 2012 1 次提交
  3. 31 7月, 2012 1 次提交
  4. 26 7月, 2012 3 次提交
  5. 25 7月, 2012 1 次提交
    • D
      btrfs: allow cross-subvolume file clone · 362a20c5
      David Sterba 提交于
      Lift the EXDEV condition and allow different root trees for files being
      cloned, then pass source inode's root when searching for extents.
      Cloning is not allowed to cross vfsmounts, ie. when two subvolumes from
      one filesystem are mounted separately.
      Signed-off-by: NDavid Sterba <dsterba@suse.cz>
      362a20c5
  6. 24 7月, 2012 6 次提交
  7. 23 7月, 2012 1 次提交
  8. 12 7月, 2012 2 次提交
  9. 16 6月, 2012 1 次提交
  10. 15 6月, 2012 3 次提交
    • L
      Btrfs: do not resize a seeding device · 4e42ae1b
      Liu Bo 提交于
      Seeding devices are not supposed to change any more.
      Signed-off-by: NLiu Bo <liubo2009@cn.fujitsu.com>
      Signed-off-by: NChris Mason <chris.mason@fusionio.com>
      4e42ae1b
    • L
      Btrfs: fix defrag regression · 6c282eb4
      Li Zefan 提交于
      If a file has 3 small extents:
      
      | ext1 | ext2 | ext3 |
      
      Running "btrfs fi defrag" will only defrag the last two extents, if those
      extent mappings hasn't been read into memory from disk.
      
      This bug was introduced by commit 17ce6ef8
      ("Btrfs: add a check to decide if we should defrag the range")
      
      The cause is, that commit looked into previous and next extents using
      lookup_extent_mapping() only.
      
      While at it, remove the code that checks the previous extent, since
      it's sufficient to check the next extent.
      Signed-off-by: NLi Zefan <lizefan@huawei.com>
      6c282eb4
    • J
      Btrfs: use rcu to protect device->name · 606686ee
      Josef Bacik 提交于
      Al pointed out that we can just toss out the old name on a device and add a
      new one arbitrarily, so anybody who uses device->name in printk could
      possibly use free'd memory.  Instead of adding locking around all of this he
      suggested doing it with RCU, so I've introduced a struct rcu_string that
      does just that and have gone through and protected all accesses to
      device->name that aren't under the uuid_mutex with rcu_read_lock().  This
      protects us and I will use it for dealing with removing the device that we
      used to mount the file system in a later patch.  Thanks,
      Reviewed-by: NDavid Sterba <dsterba@suse.cz>
      Signed-off-by: NJosef Bacik <josef@redhat.com>
      606686ee
  11. 30 5月, 2012 5 次提交
  12. 26 5月, 2012 1 次提交
  13. 19 4月, 2012 1 次提交
  14. 29 3月, 2012 5 次提交
  15. 27 3月, 2012 1 次提交
    • J
      Btrfs: fix regression in scrub path resolving · 7a3ae2f8
      Jan Schmidt 提交于
      In commit 4692cf58 we introduced new backref walking code for btrfs. This
      assumes we're searching live roots, which requires a transaction context.
      While scrubbing, however, we must not join a transaction because this could
      deadlock with the commit path. Additionally, what scrub really wants to do
      is resolving a logical address in the commit root it's currently checking.
      
      This patch adds support for logical to path resolving on commit roots and
      makes scrub use that.
      Signed-off-by: NJan Schmidt <list.btrfs@jan-o-sch.net>
      7a3ae2f8
  16. 22 3月, 2012 3 次提交
  17. 23 2月, 2012 1 次提交
  18. 17 2月, 2012 1 次提交
    • M
      Btrfs: fix deadlock on page lock when doing auto-defragment · 600a45e1
      Miao Xie 提交于
      When I ran xfstests circularly on a auto-defragment btrfs, the deadlock
      happened.
      
      Steps to reproduce:
      [tty0]
       # export MOUNT_OPTIONS="-o autodefrag"
       # export TEST_DEV=<partition1>
       # export TEST_DIR=<mountpoint1>
       # export SCRATCH_DEV=<partition2>
       # export SCRATCH_MNT=<mountpoint2>
       # while [ 1 ]
       > do
       > ./check 091 127 263
       > sleep 1
       > done
      [tty1]
       # while [ 1 ]
       > do
       > echo 3 > /proc/sys/vm/drop_caches
       > done
      
      Several hours later, the test processes will hang on, and the deadlock will
      happen on page lock.
      
      The reason is that:
        Auto defrag task		Flush thread			Test task
      				btrfs_writepages()
      				  add ordered extent
      				  (including page 1, 2)
      				  set page 1 writeback
      				  set page 2 writeback
      				endio_fn()
      				  end page 2 writeback
      								release page 2
      lock page 1
      alloc and lock page 2
      page 2 is not uptodate
        btrfs_readpage()
          start ordered extent()
          btrfs_writepages()
            try  to lock page 1
      
      so deadlock happens.
      
      Fix this bug by unlocking the page which is in writeback, and re-locking it
      after the writeback end.
      Signed-off-by: NMiao Xie <miax@cn.fujitsu.com>
      600a45e1
  19. 27 1月, 2012 1 次提交
  20. 17 1月, 2012 1 次提交
    • J
      Btrfs: add a delalloc mutex to inodes for delalloc reservations · f248679e
      Josef Bacik 提交于
      I was using i_mutex for this, but we're getting bogus lockdep warnings by doing
      that and theres no real way to get rid of those, so just stop using i_mutex to
      protect delalloc metadata reservations and use a delalloc mutex instead.  This
      shouldn't be contended often at all, only if you are writing and mmap writing to
      the file at the same time.  Thanks,
      Signed-off-by: NJosef Bacik <josef@redhat.com>
      f248679e