loop: initialize the worker tracking fields once
There is no need to reinitialize idle_worker_list, worker_tree and timer every time a loop device is configured. Just initialize them once at allocation time. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Jan Kara <jack@suse.cz> Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com> Tested-by: Darrick J. Wong <djwong@kernel.org> Link: https://lore.kernel.org/r/20220330052917.2566582-8-hch@lst.de Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
2cf429b53c
commit
b15ed54694
@ -1052,10 +1052,6 @@ static int loop_configure(struct loop_device *lo, fmode_t mode,
|
||||
|
||||
INIT_WORK(&lo->rootcg_work, loop_rootcg_workfn);
|
||||
INIT_LIST_HEAD(&lo->rootcg_cmd_list);
|
||||
INIT_LIST_HEAD(&lo->idle_worker_list);
|
||||
lo->worker_tree = RB_ROOT;
|
||||
timer_setup(&lo->timer, loop_free_idle_workers_timer,
|
||||
TIMER_DEFERRABLE);
|
||||
lo->use_dio = lo->lo_flags & LO_FLAGS_DIRECT_IO;
|
||||
lo->lo_device = bdev;
|
||||
lo->lo_backing_file = file;
|
||||
@ -1969,6 +1965,9 @@ static int loop_add(int i)
|
||||
lo = kzalloc(sizeof(*lo), GFP_KERNEL);
|
||||
if (!lo)
|
||||
goto out;
|
||||
lo->worker_tree = RB_ROOT;
|
||||
INIT_LIST_HEAD(&lo->idle_worker_list);
|
||||
timer_setup(&lo->timer, loop_free_idle_workers_timer, TIMER_DEFERRABLE);
|
||||
lo->lo_state = Lo_unbound;
|
||||
|
||||
err = mutex_lock_killable(&loop_ctl_mutex);
|
||||
|
Loading…
Reference in New Issue
Block a user