btrfs: let tree defrag work in SSD mode
authorDavid Sterba <dsterba@suse.cz>
Fri, 24 Apr 2015 14:44:30 +0000 (16:44 +0200)
committerChris Mason <clm@fb.com>
Wed, 3 Jun 2015 02:34:33 +0000 (19:34 -0700)
Long time ago (2008) the defrag was automatic for new b-tree writes but
has been disabled after performance problems. There was a leftover in
tree-defrag.c that effectively stops any defragmentation on b-trees.
This is a bit unexpected and IMHO undesired. The SSD mode is an
optimization and defrag is supposed to work if the users asks for it.

Related commits:

6702ed490ca0bb44e17131818a5a18b773957c5a
Btrfs: Add run time btree defrag, and an ioctl to force btree defrag

e18e4809b10e6c9efb5fe10c1ddcb4ebb690d517
Btrfs: Add mount -o ssd, which includes optimizations for seek free
storage

b3236e68bf86b3ae87f58984a1822369225211cb
Btrfs: Leave on the tree defragger in mount -o ssd, it still helps there

9afbb0b752ef30a429c45b9de6706e28ad1a36e1
Btrfs: Disable tree defrag in SSD mode

The last three commits switch the defrag+ssd off/on/off and the last one

3f157a2fd2ad731e1ed9964fecdc5f459f04a4a4
Btrfs: Online btree defragmentation fixes

misses the bits from tree-defrag.c to revert to the behaviour introduced
in e18e4809b10e.

Signed-off-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Chris Mason <clm@fb.com>
fs/btrfs/tree-defrag.c

index a63719cc95787e2c6c2c8e55c4d674de3f58e19b..a4b9c8b2d35ab9d93676588ad426726788f032ce 100644 (file)
@@ -52,9 +52,6 @@ int btrfs_defrag_leaves(struct btrfs_trans_handle *trans,
        if (!test_bit(BTRFS_ROOT_REF_COWS, &root->state))
                goto out;
 
-       if (btrfs_test_opt(root, SSD))
-               goto out;
-
        path = btrfs_alloc_path();
        if (!path)
                return -ENOMEM;