Hi Linus, The for-linus branch of the btrfs git tree: git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs.git for-linus sha: 8965593e41dd2d0e2a2f1e6f245336005ea94a2c Has our fixes since rc1. These are pretty small, for the most part we''re nailing some regressions in the mount error handling code and tweaking the ENOSPC throttling. My for-linus tree is against 3.1, but this was tested against 3.2-rc1 as well. Miao Xie (6) commits (+47/-23): Btrfs: Abstract similar code for btrfs_block_rsv_add{, _noflush} (+12/-16) Btrfs: fix deadlock caused by the race between relocation (+2/-2) Btrfs: fix no reserved space for writing out inode cache (+24/-4) Btrfs: fix unreleased path in btrfs_orphan_cleanup() (+3/-0) Btrfs: fix nocow when deleting the item (+4/-1) Btrfs: fix orphan backref nodes (+2/-0) Ilya Dryomov (5) commits (+43/-46): Btrfs: avoid null dereference and leaks when bailing from open_ctree() (+15/-20) Btrfs: close devices on all error paths in open_ctree() (+3/-4) Btrfs: fix subvol_name leak on error in btrfs_mount() (+3/-1) Btrfs: fix memory leak in btrfs_parse_early_options() (+1/-0) Btrfs: rework error handling in btrfs_mount() (+21/-21) Chris Mason (2) commits (+56/-33): Btrfs: fix oops on NULL trans handle in btrfs_truncate (+9/-7) Btrfs: tweak the delayed inode reservations again (+47/-26) Josef Bacik (2) commits (+93/-16): Btrfs: only map pages if we know we need them when reading the space cache (+10/-7) Btrfs: fix our reservations for updating an inode when completing io (+83/-9) slyich@gmail.com (1) commits (+5/-3): btrfs: fix double-free ''tree_root'' in ''btrfs_mount()'' Arne Jansen (1) commits (+29/-35): Btrfs: handle bio_add_page failure gracefully in scrub David Sterba (1) commits (+2/-2): btrfs: rename the option to nospace_cache Total: (18) commits fs/btrfs/btrfs_inode.h | 4 +-- fs/btrfs/delayed-inode.c | 58 +++++++++++++++++++++++++++++- fs/btrfs/disk-io.c | 42 +++++++++------------ fs/btrfs/extent-tree.c | 50 ++++++++++++++++---------- fs/btrfs/free-space-cache.c | 17 +++++---- fs/btrfs/inode-map.c | 28 ++++++++++++-- fs/btrfs/inode.c | 84 +++++++++++++++++++++++++++++-------------- fs/btrfs/relocation.c | 2 + fs/btrfs/scrub.c | 64 +++++++++++++++------------------ fs/btrfs/super.c | 49 ++++++++++++++----------- fs/btrfs/transaction.c | 4 +- fs/btrfs/volumes.c | 5 ++- 12 files changed, 262 insertions(+), 145 deletions(-)
Hi everyone, The for-linus branch of the linux-btrfs repo has some important fixes: git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs.git for-linus The most important in the bunch fixes the btrfs cache flushing. This one probably explains many of the corruptions that have been reported, especially on multi-device filesystems. I had a hard time hitting it locally, partially because it is much less likely to happen for fsync based commits and most of my tests used fsyncs to exercise the commit code. Ceph users running with -o notreelog were dramatically more likely to trigger the corruptions. The problem was that btrfs was triggering cache flushes before the last copy of the super block, instead of doing them before the first copy. We also needed to be more careful about getting flushes done to all the devices in a multi-device FS before writing any of the supers. To help verify the new code, I wrote up a writeback-caching elevator, which I sent posted earlier today for comments/review. Many thanks to Alexandre Oliva and Arne Jansen for helping nail this down. Outside of the cache flushes, we also have a fix from Liu Bo for corruptions when snapshotting with mount -o inode_cache enabled. My for-linus branch is still against 3.1, but these were tested on Linus git as well. Josef Bacik (3) commits (+90/-42): Btrfs: wait on caching if we''re loading the free space cache (+81/-41) Btrfs: clear pages dirty for io and set them extent mapped (+5/-0) Btrfs: sectorsize align offsets in fiemap (+4/-1) Chris Mason (2) commits (+141/-18): Btrfs: remove free-space-cache.c WARN during log replay (+7/-1) Btrfs: fix barrier flushes (+134/-17) Li Zefan (2) commits (+16/-38): Btrfs: avoid unnecessary bitmap search for cluster setup (+4/-38) Btrfs: fix to search one more bitmap for cluster setup (+12/-0) Jan Schmidt (1) commits (+4/-4): btrfs: mirror_num should be int, not u64 Jeff Mahoney (1) commits (+9/-6): btrfs: Fix up 32/64-bit compatibility for new ioctls Liu Bo (1) commits (+26/-1): Btrfs: fix tree corruption after multi-thread snapshots and inode_cache flush Arnd Hannemann (1) commits (+3/-3): Btrfs: prefix resize related printks with btrfs: David Sterba (1) commits (+4/-2): btrfs: fix stat blocks accounting Total: (12) commits (+290/-111) fs/btrfs/backref.c | 2 +- fs/btrfs/ctree.c | 17 +++++- fs/btrfs/ctree.h | 5 +- fs/btrfs/disk-io.c | 147 +++++++++++++++++++++++++++++++++++++----- fs/btrfs/extent-tree.c | 119 +++++++++++++++++++++++------------ fs/btrfs/extent_io.c | 9 ++- fs/btrfs/extent_io.h | 2 +- fs/btrfs/free-space-cache.c | 63 ++++++++----------- fs/btrfs/inode.c | 6 +- fs/btrfs/ioctl.c | 15 +++-- fs/btrfs/scrub.c | 2 +- fs/btrfs/transaction.c | 8 +++ fs/btrfs/volumes.h | 6 ++ 13 files changed, 290 insertions(+), 111 deletions(-)
Hi everyone, The for-linus branch of the btrfs repository: git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs.git for-linus Has a few more fixes. The most notable here are two more patches from Alexandre''s batch of allocator fixes. The other two fix corner cases in the state code and in the code to add devices. Alexandre Oliva (2) commits (+49/-51): Btrfs: try to allocate from cluster even at LOOP_NO_EMPTY_SIZE (+18/-8) Btrfs: try cluster but don''t advance in search list (+31/-43) Liu Bo (1) commits (+16/-8): Btrfs: drop spin lock when memory alloc fails Li Zefan (1) commits (+1/-1): Btrfs: check if the to-be-added device is writable Total: (4) commits (+66/-60) fs/btrfs/extent-tree.c | 100 +++++++++++++++++++++++------------------------ fs/btrfs/extent_io.c | 24 ++++++++---- fs/btrfs/volumes.c | 2 +- 3 files changed, 66 insertions(+), 60 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