Btrfs: use larger metadata clusters in ssd mode
authorChris Mason <chris.mason@oracle.com>
Thu, 12 Feb 2009 14:41:38 +0000 (09:41 -0500)
committerChris Mason <chris.mason@oracle.com>
Thu, 12 Feb 2009 14:41:38 +0000 (09:41 -0500)
Larger metadata clusters can significantly improve writeback performance
on ssd drives with large erasure blocks.  The larger clusters make it
more likely a given IO will completely overwrite the ssd block, so it
doesn't have to do an internal rwm cycle.

On spinning media, lager metadata clusters end up spreading out the
metadata more over time, which makes fsck slower, so we don't want this
to be the default.

Signed-off-by: Chris Mason <chris.mason@oracle.com>
fs/btrfs/extent-tree.c

index 376656f65b337f0b028bd8910feec3a9dd2bc1be..c59e12036e20f33eb816c3852d7742688b139c39 100644 (file)
@@ -2872,7 +2872,8 @@ static noinline int find_free_extent(struct btrfs_trans_handle *trans,
 
        if (data & BTRFS_BLOCK_GROUP_METADATA) {
                last_ptr = &root->fs_info->last_alloc;
-               empty_cluster = 64 * 1024;
+               if (!btrfs_test_opt(root, SSD))
+                       empty_cluster = 64 * 1024;
        }
 
        if ((data & BTRFS_BLOCK_GROUP_DATA) && btrfs_test_opt(root, SSD))