[GIT PULL] Btrfs fixes
From: Chris Mason
Date: Mon Nov 21 2011 - 20:30:45 EST
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(-)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/