Btrfs: autodetect SSD devices
During mount, btrfs will check the queue nonrot flag for all the devices found in the FS. If they are all non-rotating, SSD mode is enabled by default. If the FS was mounted with -o nossd, the non-rotating flag is ignored. Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
@@ -605,6 +605,9 @@ static int __btrfs_open_devices(struct btrfs_fs_devices *fs_devices,
|
||||
device->in_fs_metadata = 0;
|
||||
device->mode = flags;
|
||||
|
||||
if (!blk_queue_nonrot(bdev_get_queue(bdev)))
|
||||
fs_devices->rotating = 1;
|
||||
|
||||
fs_devices->open_devices++;
|
||||
if (device->writeable) {
|
||||
fs_devices->rw_devices++;
|
||||
@@ -1473,6 +1476,9 @@ int btrfs_init_new_device(struct btrfs_root *root, char *device_path)
|
||||
root->fs_info->fs_devices->rw_devices++;
|
||||
root->fs_info->fs_devices->total_rw_bytes += device->total_bytes;
|
||||
|
||||
if (!blk_queue_nonrot(bdev_get_queue(bdev)))
|
||||
root->fs_info->fs_devices->rotating = 1;
|
||||
|
||||
total_bytes = btrfs_super_total_bytes(&root->fs_info->super_copy);
|
||||
btrfs_set_super_total_bytes(&root->fs_info->super_copy,
|
||||
total_bytes + device->total_bytes);
|
||||
|
Reference in New Issue
Block a user