Skip to contentSkip to conversation

Btrfs updates

GIT PULL Chris Mason 3 participants 5 messages Dec 1, 2011 – Dec 6, 2011 Btrfs file system

lore
Share & tools
lore
#0 lore raw

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(-)
#1 lore raw

Hi, Chris and Oliva

Quoted 6 lines · Chris Mason

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.

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'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(-)

--
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

#2 lore raw
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.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.

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

#3 lore raw
Quoted 4 lines · Chris Mason
Quoted 1 line · Miao Xie

[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.

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

#4 lore raw
In reply to Chris Mason
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.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.

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_SIZE

Thanks, 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