Btrfs updates
Hi everyone,
The for-linus branch of the btrfs tree:
git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs.git for-linus
Has our current set of fixes. This is fairly small, Alexandre Oliva has been chasing problems in our block allocator and kicked out important fixes.
Jan Schmidt fixed a merge error in the raid repair code, we're now properly repairing failed blocks (io errors or crc errors) without having to run a scrub.
Alexandre Oliva (5) commits (+8/-8):
Btrfs: skip block groups without enough space for a cluster (+1/-1)
Btrfs: start search for new cluster at the beginning (+2/-4)
Btrfs: reset cluster's max_size when creating bitmap (+1/-0)
Btrfs: skip allocation attempt from empty cluster (+3/-3)
Btrfs: initialize new bitmaps' list (+1/-0)
Li Zefan (1) commits (+3/-3):
Btrfs: fix oops when calling statfs on readonly device
Arnd Hannemann (1) commits (+2/-2):
Fix URL of btrfs-progs git repository in docs
Jan Schmidt (1) commits (+20/-7):
Btrfs: fix meta data raid-repair merge problem
Dan Carpenter (1) commits (+5/-0):
btrfs scrub: handle -ENOMEM from init_ipath()
Mike Fleetwood (1) commits (+1/-1):
Btrfs: Don't error on resizing FS to same size
Miao Xie (1) commits (+22/-5):
Btrfs: fix deadlock on metadata reservation when evicting a inode
Total: (11) commits (+60/-25)
Documentation/filesystems/btrfs.txt | 4 ++-- fs/btrfs/ctree.h | 3 +++ fs/btrfs/extent-tree.c | 34 +++++++++++++++++++++++----------- fs/btrfs/extent_io.c | 27 ++++++++++++++++++++------- fs/btrfs/free-space-cache.c | 2 ++ fs/btrfs/inode.c | 2 +- fs/btrfs/ioctl.c | 2 +- fs/btrfs/scrub.c | 5 +++++ fs/btrfs/super.c | 6 +++--- 9 files changed, 60 insertions(+), 25 deletions(-)
Hi, Chris and Oliva
Quoted 6 lines · Chris Mason
git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs.gitfor-linusHas our current set of fixes. This is fairly small, Alexandre Oliva has been chasing problems in our block allocator and kicked out important fixes.
Quoted 6 lines
Jan Schmidt fixed a merge error in the raid repair code, we're now properly repairing failed blocks (io errors or crc errors) without having to run a scrub.
Alexandre Oliva (5) commits (+8/-8):
Btrfs: skip block groups without enough space for a cluster (+1/-1)
This patch introduce a bug that we can not allocate blocks from the cluster with enough space and it may make the block allocation fail.
This is because the check that the above patch introduced make the allocator skip the cluster allocation, and jump to the uncluster allocation without reclaiming all the blocks in the cluster, At this time, if all the free space is in the cluster, and no space in the block group, the allocation will fail. (we can trigger this bug on SSD.)
Fortunately, the following patch written by Oliva can fix this bug.
[PATCH 08/20] Btrfs: try to allocate from cluster even at LOOP_NO_EMPTY_SIZE
Thanks
Miao
Quoted 40 lines
Btrfs: start search for new cluster at the beginning (+2/-4)
Btrfs: reset cluster'smax_sizewhen creating bitmap (+1/-0)
Btrfs: skip allocation attempt from empty cluster (+3/-3)
Btrfs: initialize new bitmaps' list (+1/-0)Li Zefan (1) commits (+3/-3):
Btrfs: fix oops when calling statfs on readonly deviceArnd Hannemann (1) commits (+2/-2):
Fix URL of btrfs-progs git repository in docsJan Schmidt (1) commits (+20/-7):
Btrfs: fix meta data raid-repair merge problemDan Carpenter (1) commits (+5/-0):
btrfs scrub: handle-ENOMEMfrominit_ipath()Mike Fleetwood (1) commits (+1/-1):
Btrfs: Don't error on resizing FS to same sizeMiao Xie (1) commits (+22/-5):
Btrfs: fix deadlock on metadata reservation when evicting a inodeTotal: (11) commits (+60/-25)
Documentation/filesystems/btrfs.txt | 4 ++-- fs/btrfs/ctree.h | 3 +++ fs/btrfs/extent-tree.c | 34 +++++++++++++++++++++++----------- fs/btrfs/extent_io.c | 27 ++++++++++++++++++++------- fs/btrfs/free-space-cache.c | 2 ++ fs/btrfs/inode.c | 2 +- fs/btrfs/ioctl.c | 2 +- fs/btrfs/scrub.c | 5 +++++ fs/btrfs/super.c | 6 +++--- 9 files changed, 60 insertions(+), 25 deletions(-)--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 25 lines · Miao Xie
Hi, Chris and Oliva
Quoted 6 lines · Chris Mason
git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs.gitfor-linusHas our current set of fixes. This is fairly small, Alexandre Oliva has been chasing problems in our block allocator and kicked out important fixes.
Quoted 6 lines
Jan Schmidt fixed a merge error in the raid repair code, we're now properly repairing failed blocks (io errors or crc errors) without having to run a scrub.
Alexandre Oliva (5) commits (+8/-8):
Btrfs: skip block groups without enough space for a cluster (+1/-1)This patch introduce a bug that we can not allocate blocks from the cluster with enough space and it may make the block allocation fail.
This is because the check that the above patch introduced make the allocator skip the cluster allocation, and jump to the uncluster allocation without reclaiming all the blocks in the cluster, At this time, if all the free space is in the cluster, and no space in the block group, the allocation will fail. (we can trigger this bug on SSD.)
Quoted 3 lines
Fortunately, the following patch written by Oliva can fix this bug.
[PATCH 08/20] Btrfs: try to allocate from cluster even at
LOOP_NO_EMPTY_SIZE
Thanks, I'll push this 08/20 out as well.
-chris
Quoted 4 lines · Chris Mason
Quoted 1 line · Miao Xie
[PATCH 08/20] Btrfs: try to allocate from cluster even at
LOOP_NO_EMPTY_SIZEThanks, I'll push this 08/20 out as well.
Please pick
Li Zefan: Btrfs: check if the to-be-added device is writable Liu Bo: Btrfs: drop spin lock when memory alloc fails
(collected in branch fixes-20111205 at my repo)
I overlooked them and forgot to include in the fixes branch before the last pull request, sorry.
david
Quoted 26 lines · Chris Mason
Quoted 25 lines · Miao Xie
Hi, Chris and Oliva
Quoted 6 lines · Chris Mason
git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs.gitfor-linusHas our current set of fixes. This is fairly small, Alexandre Oliva has been chasing problems in our block allocator and kicked out important fixes.
Quoted 6 lines
Jan Schmidt fixed a merge error in the raid repair code, we're now properly repairing failed blocks (io errors or crc errors) without having to run a scrub.
Alexandre Oliva (5) commits (+8/-8):
Btrfs: skip block groups without enough space for a cluster (+1/-1)This patch introduce a bug that we can not allocate blocks from the cluster with enough space and it may make the block allocation fail.
This is because the check that the above patch introduced make the allocator skip the cluster allocation, and jump to the uncluster allocation without reclaiming all the blocks in the cluster, At this time, if all the free space is in the cluster, and no space in the block group, the allocation will fail. (we can trigger this bug on SSD.)
Quoted 5 lines
Quoted 3 lines
Fortunately, the following patch written by Oliva can fix this bug.
[PATCH 08/20] Btrfs: try to allocate from cluster even at
LOOP_NO_EMPTY_SIZEThanks, I'll push this 08/20 out as well.
I'm sorry for my careless test.
I tested it again just now, I found the above patch could not fix the bug completely, we still need
[PATCH 16/20] Btrfs: try cluster but don't advance in search list
After applying these two patch, all my test can pass.
Thanks
Miao