diff options
author | Yan Zheng <zheng.yan@oracle.com> | 2008-12-11 16:30:39 -0500 |
---|---|---|
committer | Chris Mason <chris.mason@oracle.com> | 2008-12-11 16:30:39 -0500 |
commit | d2fb3437e4d8d12c73c587615ad187d5288547ec (patch) | |
tree | 894e4c698970dd35226b2614b8a38fb8a96580e7 /fs/btrfs/ioctl.c | |
parent | cfc8ea87201dc9bb6aeb3fc80c61abee83e7cc06 (diff) |
Btrfs: fix leaking block group on balance
The block group structs are referenced in many different
places, and it's not safe to free while balancing. So, those block
group structs were simply leaked instead.
This patch replaces the block group pointer in the inode with the starting byte
offset of the block group and adds reference counting to the block group
struct.
Signed-off-by: Yan Zheng <zheng.yan@oracle.com>
Diffstat (limited to 'fs/btrfs/ioctl.c')
-rw-r--r-- | fs/btrfs/ioctl.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index 69c4a07f5869..5d67858ce993 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c | |||
@@ -173,7 +173,7 @@ static noinline int create_subvol(struct btrfs_root *root, | |||
173 | trans = btrfs_start_transaction(new_root, 1); | 173 | trans = btrfs_start_transaction(new_root, 1); |
174 | BUG_ON(!trans); | 174 | BUG_ON(!trans); |
175 | 175 | ||
176 | ret = btrfs_create_subvol_root(new_root, dentry, trans, new_dirid, | 176 | ret = btrfs_create_subvol_root(trans, new_root, dentry, new_dirid, |
177 | BTRFS_I(dir)->block_group); | 177 | BTRFS_I(dir)->block_group); |
178 | if (ret) | 178 | if (ret) |
179 | goto fail; | 179 | goto fail; |