mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-12 21:44:06 +08:00
loop: fold loop_update_rotational into loop_reconfigure_limits
This prepares for moving the rotational flag into the queue_limits and also fixes it for the case where the loop device is backed by a block device. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Damien Le Moal <dlemoal@kernel.org> Reviewed-by: Hannes Reinecke <hare@suse.de> Reviewed-by: Bart Van Assche <bvanassche@acm.org> Link: https://lore.kernel.org/r/20240617060532.127975-9-hch@lst.de Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
4ce37fe093
commit
97dd4a43d6
@ -916,24 +916,6 @@ static void loop_free_idle_workers_timer(struct timer_list *timer)
|
||||
return loop_free_idle_workers(lo, false);
|
||||
}
|
||||
|
||||
static void loop_update_rotational(struct loop_device *lo)
|
||||
{
|
||||
struct file *file = lo->lo_backing_file;
|
||||
struct inode *file_inode = file->f_mapping->host;
|
||||
struct block_device *file_bdev = file_inode->i_sb->s_bdev;
|
||||
struct request_queue *q = lo->lo_queue;
|
||||
bool nonrot = true;
|
||||
|
||||
/* not all filesystems (e.g. tmpfs) have a sb->s_bdev */
|
||||
if (file_bdev)
|
||||
nonrot = bdev_nonrot(file_bdev);
|
||||
|
||||
if (nonrot)
|
||||
blk_queue_flag_set(QUEUE_FLAG_NONROT, q);
|
||||
else
|
||||
blk_queue_flag_clear(QUEUE_FLAG_NONROT, q);
|
||||
}
|
||||
|
||||
/**
|
||||
* loop_set_status_from_info - configure device from loop_info
|
||||
* @lo: struct loop_device to configure
|
||||
@ -1003,6 +985,10 @@ static int loop_reconfigure_limits(struct loop_device *lo, unsigned short bsize)
|
||||
lim.logical_block_size = bsize;
|
||||
lim.physical_block_size = bsize;
|
||||
lim.io_min = bsize;
|
||||
if (!backing_bdev || bdev_nonrot(backing_bdev))
|
||||
blk_queue_flag_set(QUEUE_FLAG_NONROT, lo->lo_queue);
|
||||
else
|
||||
blk_queue_flag_clear(QUEUE_FLAG_NONROT, lo->lo_queue);
|
||||
loop_config_discard(lo, &lim);
|
||||
return queue_limits_commit_update(lo->lo_queue, &lim);
|
||||
}
|
||||
@ -1099,7 +1085,6 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode,
|
||||
if (WARN_ON_ONCE(error))
|
||||
goto out_unlock;
|
||||
|
||||
loop_update_rotational(lo);
|
||||
loop_update_dio(lo);
|
||||
loop_sysfs_init(lo);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user