Messages in this thread | | | Date | Wed, 10 Feb 2021 05:08:05 +0100 | From | Michał Mirosław <> | Subject | Re: [PATCH RFC 4/6] btrfs: Check if the filesystem is has mixed type of devices |
| |
On Tue, Feb 09, 2021 at 09:30:38PM +0100, Michal Rostecki wrote: > From: Michal Rostecki <mrostecki@suse.com> > > Add the btrfs_check_mixed() function which checks if the filesystem has > the mixed type of devices (non-rotational and rotational). This > information is going to be used in roundrobin raid1 read policy.a [...] > @@ -669,8 +699,12 @@ static int btrfs_open_one_device(struct btrfs_fs_devices *fs_devices, > } > > q = bdev_get_queue(bdev); > - if (!blk_queue_nonrot(q)) > + rotating = !blk_queue_nonrot(q); > + device->rotating = rotating; > + if (rotating) > fs_devices->rotating = true; > + if (!fs_devices->mixed) > + fs_devices->mixed = btrfs_check_mixed(fs_devices, rotating); [...]
Since this is adding to a set, a faster way is:
if (fs_devices->rotating != rotating) fs_devices->mixed = true;
The scan might be necessary on device removal, though.
> - if (!blk_queue_nonrot(q)) > + rotating = !blk_queue_nonrot(q); > + device->rotating = rotating; > + if (rotating) > fs_devices->rotating = true; > + if (!fs_devices->mixed) > + fs_devices->mixed = btrfs_check_mixed(fs_devices, rotating);
Duplication. Maybe pull all this into a function?
Best Regards, Michał Mirosław
| |