diff options
author | Chris Mason <chris.mason@oracle.com> | 2007-08-10 14:06:19 -0400 |
---|---|---|
committer | David Woodhouse <dwmw2@hera.kernel.org> | 2007-08-10 14:06:19 -0400 |
commit | e9d0b13b5bbb58c9b840e407a8d181442f799966 (patch) | |
tree | d51a7e111a824e883c347c83745109400231de1c /fs/btrfs/inode.c | |
parent | 409eb95d7f6632d5af32b795244ce68a29e49319 (diff) |
Btrfs: Btree defrag on the extent-mapping tree as well
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/inode.c')
-rw-r--r-- | fs/btrfs/inode.c | 23 |
1 files changed, 2 insertions, 21 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 12aa043b9f6f..5c05ecbc5726 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c | |||
@@ -2159,9 +2159,7 @@ int btrfs_ioctl(struct inode *inode, struct file *filp, unsigned int | |||
2159 | { | 2159 | { |
2160 | struct btrfs_root *root = BTRFS_I(inode)->root; | 2160 | struct btrfs_root *root = BTRFS_I(inode)->root; |
2161 | struct btrfs_ioctl_vol_args vol_args; | 2161 | struct btrfs_ioctl_vol_args vol_args; |
2162 | struct btrfs_trans_handle *trans; | ||
2163 | int ret = 0; | 2162 | int ret = 0; |
2164 | int err; | ||
2165 | struct btrfs_dir_item *di; | 2163 | struct btrfs_dir_item *di; |
2166 | int namelen; | 2164 | int namelen; |
2167 | struct btrfs_path *path; | 2165 | struct btrfs_path *path; |
@@ -2201,25 +2199,8 @@ int btrfs_ioctl(struct inode *inode, struct file *filp, unsigned int | |||
2201 | 2199 | ||
2202 | case BTRFS_IOC_DEFRAG: | 2200 | case BTRFS_IOC_DEFRAG: |
2203 | mutex_lock(&root->fs_info->fs_mutex); | 2201 | mutex_lock(&root->fs_info->fs_mutex); |
2204 | trans = btrfs_start_transaction(root, 1); | 2202 | btrfs_defrag_root(root, 0); |
2205 | memset(&root->defrag_progress, 0, | 2203 | btrfs_defrag_root(root->fs_info->extent_root, 0); |
2206 | sizeof(root->defrag_progress)); | ||
2207 | while (1) { | ||
2208 | root->defrag_running = 1; | ||
2209 | err = btrfs_defrag_leaves(trans, root, 0); | ||
2210 | |||
2211 | btrfs_end_transaction(trans, root); | ||
2212 | mutex_unlock(&root->fs_info->fs_mutex); | ||
2213 | |||
2214 | btrfs_btree_balance_dirty(root); | ||
2215 | |||
2216 | mutex_lock(&root->fs_info->fs_mutex); | ||
2217 | trans = btrfs_start_transaction(root, 1); | ||
2218 | if (err != -EAGAIN) | ||
2219 | break; | ||
2220 | } | ||
2221 | root->defrag_running = 0; | ||
2222 | btrfs_end_transaction(trans, root); | ||
2223 | mutex_unlock(&root->fs_info->fs_mutex); | 2204 | mutex_unlock(&root->fs_info->fs_mutex); |
2224 | ret = 0; | 2205 | ret = 0; |
2225 | break; | 2206 | break; |