diff options
author | Chris Mason <chris.mason@oracle.com> | 2007-09-10 19:58:16 -0400 |
---|---|---|
committer | David Woodhouse <dwmw2@hera.kernel.org> | 2007-09-10 19:58:16 -0400 |
commit | 86479a04eef8f304a13aeb8b64bcc8e506a68268 (patch) | |
tree | cda7e66d469bcdc2f41144ea91405aeb96d1f777 /fs/btrfs/tree-defrag.c | |
parent | 8e21528f87854314792aaef4d279bc9e5a9be997 (diff) | |
download | linux-stable-86479a04eef8f304a13aeb8b64bcc8e506a68268.tar.gz linux-stable-86479a04eef8f304a13aeb8b64bcc8e506a68268.tar.bz2 linux-stable-86479a04eef8f304a13aeb8b64bcc8e506a68268.zip |
Add support for defragging files via btrfsctl -d. Avoid OOM on extent tree
defrag.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/tree-defrag.c')
-rw-r--r-- | fs/btrfs/tree-defrag.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/btrfs/tree-defrag.c b/fs/btrfs/tree-defrag.c index 35fd20d24645..420597127ed1 100644 --- a/fs/btrfs/tree-defrag.c +++ b/fs/btrfs/tree-defrag.c @@ -113,6 +113,8 @@ static int defrag_walk_down(struct btrfs_trans_handle *trans, } WARN_ON(*level < 0); WARN_ON(*level >= BTRFS_MAX_LEVEL); + clear_buffer_defrag(path->nodes[*level]); + clear_buffer_defrag_done(path->nodes[*level]); btrfs_block_release(root, path->nodes[*level]); path->nodes[*level] = NULL; *level += 1; @@ -143,6 +145,7 @@ static int defrag_walk_up(struct btrfs_trans_handle *trans, return 0; } else { clear_buffer_defrag(path->nodes[*level]); + clear_buffer_defrag_done(path->nodes[*level]); btrfs_block_release(root, path->nodes[*level]); path->nodes[*level] = NULL; *level = i + 1; |