Hi everyone, The for-linus branch of the btrfs-unstable repo is reading for pulling: git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable.git for-linus This started off as a larger pull, but I had to pull out a number of cleanups from Fujitsu, Novell and a few others (sorry guys) while hunting a crash during stress.sh. It looks like it is unrelated to those commits, but I had to pull out a bunch of them until I can be sure I understand the bug. I''ll have another pull request with the fully tested cleanups on Monday. Depending on how Linus does rc1, they might end up as the start of my 3.2 branch. This pull has the commits that I''ve been able to run through extensive testing. The biggest change here is switching the btrfs tree locks to a reader/writer lock. This has been one of our biggest bottlenecks for some time, and it was consistently at the top of profiles on large machines. The new locks do away with all the adaptive spinning inside of btrfs and rely on the spinning/blocking hints in the code to decide when it must block. The reader/writer locks break the code I had in place to use kmap on metadata buffers, so all of our metadata is now in lowmem. I did test this on a 32 bit VM, but x86-32 users will want to poke gently. I also adapted Tejun''s lockdep fixes for the btrfs locks, and so far I haven''t seen any lockdep warnings. Josef has a series of enospc fixes and tweaks here as well. His bigger patch to start reworking the enospc reservations seems to be causing the corruptions during stress.sh, so it will wait for 3.2. Josef Bacik (11) commits (+320/-322): Btrfs: use the normal checksumming infrastructure for free space cache (+59/-110) Btrfs: do transaction space reservation before joining the transaction (+17/-42) Btrfs: fix how we merge extent states and deal with cached states (+11/-12) Btrfs: try to only do one btrfs_search_slot in do_setxattr (+42/-33) Btrfs: use find_or_create_page instead of grab_cache_page (+9/-7) Btrfs: serialize flushers in reserve_metadata_bytes (+51/-21) Btrfs: fix deadlock when throttling transactions (+9/-2) Btrfs: fix enospc problems with delalloc (+86/-60) Btrfs: use a worker thread to do caching (+27/-29) Btrfs: don''t flush delalloc arbitrarily (+0/-3) Btrfs: tag pages for writeback in sync (+9/-3) Chris Mason (7) commits (+642/-699): Btrfs: make sure reserve_metadata_bytes doesn''t leak out strange errors (+6/-1) Btrfs: use the commit_root for reading free_space_inode crcs (+28/-19) Btrfs: reduce extent_state lock contention for metadata (+41/-14) Btrfs: switch the btrfs tree locks to reader/writer (+431/-218) Btrfs: remove lockdep magic from btrfs_next_leaf (+5/-31) Btrfs: stop using highmem for extent_buffers (+52/-378) Btrfs: make a lockdep class for each root (+79/-38) Miao Xie (1) commits (+21/-7): Btrfs: fix BUG_ON() caused by ENOSPC when relocating space Total: (19) fs/btrfs/btrfs_inode.h | 16 ++- fs/btrfs/ctree.c | 457 +++++++++++++++++++------------------------ fs/btrfs/ctree.h | 14 +- fs/btrfs/delayed-inode.c | 2 +- fs/btrfs/dir-item.c | 9 +- fs/btrfs/disk-io.c | 116 ++++++++---- fs/btrfs/disk-io.h | 10 +- fs/btrfs/extent-tree.c | 285 +++++++++++++++------------- fs/btrfs/extent_io.c | 168 ++++++++-------- fs/btrfs/extent_io.h | 35 ++-- fs/btrfs/file-item.c | 41 +--- fs/btrfs/file.c | 11 +- fs/btrfs/free-space-cache.c | 173 ++++++----------- fs/btrfs/inode.c | 90 ++++------ fs/btrfs/ioctl.c | 8 +- fs/btrfs/locking.c | 280 ++++++++++++++------------- fs/btrfs/locking.h | 36 ++++- fs/btrfs/relocation.c | 3 +- fs/btrfs/struct-funcs.c | 100 +++------- fs/btrfs/transaction.c | 47 +++-- fs/btrfs/tree-log.c | 6 +- fs/btrfs/volumes.c | 2 +- fs/btrfs/xattr.c | 66 ++++--- 23 files changed, 965 insertions(+), 1010 deletions(-)
Hi everyone, The for-linus branch of the btrfs-unstable tree: git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable.git for-linus Has our current pull request for 3.1-rc. The for-linus branch includes 3.1-rc2 because it two fixes from Dan Carpenter and Jeff Mahoney that only apply to 3.1. The master branch of btrfs-unstable is based on 3.0, and includes everything except those two changes. This is a variety pack of fixes. We do have another fix pending for a race in our readdir optimizations, but Josef will work that out with Al Viro and send it in later this week (or early next). Chris Mason (1) commits (+17/-0): Btrfs: force unplugs when switching from high to regular priority bios Dan Carpenter (2) commits (+10/-4): btrfs: unlock on error in btrfs_file_llseek() (+8/-4) btrfs: memory leak in btrfs_add_inode_defrag() (+2/-0) Jeff Mahoney (1) commits (+8/-4): btrfs: btrfs_permission''s RO check shouldn''t apply to device nodes Josef Bacik (2) commits (+43/-2): Btrfs: set i_size properly when fallocating (+14/-0) Btrfs: detect wether a device supports discard (+29/-2) Li Zefan (1) commits (+2/-4): Btrfs: use plain page_address() in header fields setget functions Miao Xie (2) commits (+12/-6): Btrfs: fix uninitialized sync_pending (+1/-1) Btrfs: fix wrong free space information (+11/-5) Sage Weil (1) commits (+4/-0): Btrfs: truncate pages from clone ioctl target range Tsutomu Itoh (1) commits (+16/-10): Btrfs: forced readonly when btrfs_drop_snapshot() fails liubo (3) commits (+72/-14): Btrfs: check if there is enough space for balancing smarter (+35/-6) Btrfs: fix a bug of balance on full multi-disk partitions (+13/-4) Btrfs: fix an oops of log replay (+24/-4) Total: (14) commits (+183/-43) fs/btrfs/ctree.h | 10 ++--- fs/btrfs/extent-tree.c | 75 +++++++++++++++++++++++++++++++++--------- fs/btrfs/file.c | 28 ++++++++++++++-- fs/btrfs/free-space-cache.c | 16 ++++++--- fs/btrfs/inode.c | 12 ++++-- fs/btrfs/ioctl.c | 4 ++ fs/btrfs/tree-log.c | 28 ++++++++++++++-- fs/btrfs/volumes.c | 51 +++++++++++++++++++++++++++-- fs/btrfs/volumes.h | 2 + 9 files changed, 183 insertions(+), 43 deletions(-)
Hi Chris, Josef, Can some form of the clone ioctl transaction start reservation fix go in soon as well? That hits a BUG_ON every time. Thanks! sage On Thu, 18 Aug 2011, Chris Mason wrote:> Hi everyone, > > The for-linus branch of the btrfs-unstable tree: > > git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable.git for-linus > > Has our current pull request for 3.1-rc. The for-linus branch includes > 3.1-rc2 because it two fixes from Dan Carpenter and Jeff Mahoney that > only apply to 3.1. > > The master branch of btrfs-unstable is based on 3.0, and includes > everything except those two changes. > > This is a variety pack of fixes. We do have another fix pending for a > race in our readdir optimizations, but Josef will work that out with Al > Viro and send it in later this week (or early next). > > Chris Mason (1) commits (+17/-0): > Btrfs: force unplugs when switching from high to regular priority bios > > Dan Carpenter (2) commits (+10/-4): > btrfs: unlock on error in btrfs_file_llseek() (+8/-4) > btrfs: memory leak in btrfs_add_inode_defrag() (+2/-0) > > Jeff Mahoney (1) commits (+8/-4): > btrfs: btrfs_permission''s RO check shouldn''t apply to device nodes > > Josef Bacik (2) commits (+43/-2): > Btrfs: set i_size properly when fallocating (+14/-0) > Btrfs: detect wether a device supports discard (+29/-2) > > Li Zefan (1) commits (+2/-4): > Btrfs: use plain page_address() in header fields setget functions > > Miao Xie (2) commits (+12/-6): > Btrfs: fix uninitialized sync_pending (+1/-1) > Btrfs: fix wrong free space information (+11/-5) > > Sage Weil (1) commits (+4/-0): > Btrfs: truncate pages from clone ioctl target range > > Tsutomu Itoh (1) commits (+16/-10): > Btrfs: forced readonly when btrfs_drop_snapshot() fails > > liubo (3) commits (+72/-14): > Btrfs: check if there is enough space for balancing smarter (+35/-6) > Btrfs: fix a bug of balance on full multi-disk partitions (+13/-4) > Btrfs: fix an oops of log replay (+24/-4) > > Total: (14) commits (+183/-43) > > fs/btrfs/ctree.h | 10 ++--- > fs/btrfs/extent-tree.c | 75 +++++++++++++++++++++++++++++++++--------- > fs/btrfs/file.c | 28 ++++++++++++++-- > fs/btrfs/free-space-cache.c | 16 ++++++--- > fs/btrfs/inode.c | 12 ++++-- > fs/btrfs/ioctl.c | 4 ++ > fs/btrfs/tree-log.c | 28 ++++++++++++++-- > fs/btrfs/volumes.c | 51 +++++++++++++++++++++++++++-- > fs/btrfs/volumes.h | 2 + > 9 files changed, 183 insertions(+), 43 deletions(-) > -- > To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > >-- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Excerpts from Sage Weil''s message of 2011-08-18 17:51:54 -0400:> Hi Chris, Josef, > > Can some form of the clone ioctl transaction start reservation fix go in > soon as well? That hits a BUG_ON every time.Sorry Sage, I thought I had that one. I''ll get it in the next pull. -chris -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html