1. 06 Feb, 2011 3 commits
    • Tsutomu Itoh's avatar
      btrfs: cleanup error handling in btrfs_unlink_inode() · 554233a6
      Tsutomu Itoh authored
      When btrfs_alloc_path() fails, btrfs_free_path() need not be called.
      Therefore, it changes the branch ahead.
      Signed-off-by: default avatarTsutomu Itoh <t-itoh@jp.fujitsu.com>
      Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
      554233a6
    • Josef Bacik's avatar
      Btrfs: exclude super blocks when we read in block groups · 3c14874a
      Josef Bacik authored
      This has been resulting in a BUT_ON(ret) after btrfs_reserve_extent in
      btrfs_cow_file_range.  The reason is we don't actually calculate the bytes_super
      for a block group until we go to cache it, which means that the space_info can
      hand out reservations for space that it doesn't actually have, and we can run
      out of data space.  This is also a problem if you are using space caching since
      we don't ever calculate bytes_super for the block groups.  So instead everytime
      we read a block group call exclude_super_stripes, which calculates the
      bytes_super for the block group so it can be left out of the space_info.  Then
      whenever caching completes we just call free_excluded_extents so that the super
      excluded extents are freed up.  Also if we are unmounting and we hit any block
      groups that haven't been cached we still need to call free_excluded_extents to
      make sure things are cleaned up properly.  Thanks,
      Reported-by: default avatarArne Jansen <sensille@gmx.net>
      Signed-off-by: default avatarJosef Bacik <josef@redhat.com>
      Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
      3c14874a
    • Josef Bacik's avatar
      Btrfs: make sure search_bitmap finds something in remove_from_bitmap · 13dbc089
      Josef Bacik authored
      When we're cleaning up the tree log we need to be able to remove free space from
      the block group.  The problem is if that free space spans bitmaps we would not
      find the space since we're looking for too many bytes.  So make sure the amount
      of bytes we search for is limited to either the number of bytes we want, or the
      number of bytes left in the bitmap.  This was tested by a user who was hitting
      the BUG() after search_bitmap.  With this patch he can now mount his fs.
      Thanks,
      Signed-off-by: default avatarJosef Bacik <josef@redhat.com>
      Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
      13dbc089
  2. 01 Feb, 2011 3 commits
  3. 31 Jan, 2011 2 commits
    • Chris Mason's avatar
      Btrfs: catch errors from btrfs_sync_log · b31eabd8
      Chris Mason authored
      btrfs_sync_log returns -EAGAIN when we need full transaction commits
      instead of small log commits, but sometimes we were dropping the return
      value.
      
      In practice, we check for this a few different ways, but this is still a
      bug that can leave off full log commits when we really need them.
      Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
      b31eabd8
    • Josef Bacik's avatar
      Btrfs: make shrink_delalloc a little friendlier · b1953bce
      Josef Bacik authored
      Xfstests 224 will just sit there and spin for ever until eventually we give up
      flushing delalloc and exit.  On my box this took several hours.  I could not
      interrupt this process either, even though we use INTERRUPTIBLE.  So do 2 things
      
      1) Keep us from looping over and over again without reclaiming anything
      2) If we get interrupted exit the loop
      
      I tested this and the test now exits in a reasonable amount of time, and can be
      interrupted with ctrl+c.  Thanks,
      Signed-off-by: default avatarJosef Bacik <josef@redhat.com>
      Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
      b1953bce
  4. 28 Jan, 2011 12 commits
  5. 26 Jan, 2011 12 commits
  6. 17 Jan, 2011 1 commit
    • liubo's avatar
      Btrfs: forced readonly mounts on errors · acce952b
      liubo authored
      This patch comes from "Forced readonly mounts on errors" ideas.
      
      As we know, this is the first step in being more fault tolerant of disk
      corruptions instead of just using BUG() statements.
      
      The major content:
      - add a framework for generating errors that should result in filesystems
        going readonly.
      - keep FS state in disk super block.
      - make sure that all of resource will be freed and released at umount time.
      - make sure that fter FS is forced readonly on error, there will be no more
        disk change before FS is corrected. For this, we should stop write operation.
      
      After this patch is applied, the conversion from BUG() to such a framework can
      happen incrementally.
      Signed-off-by: default avatarLiu Bo <liubo2009@cn.fujitsu.com>
      Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
      acce952b
  7. 16 Jan, 2011 7 commits