block: Fix elv_iosched_local_module handling of "none" scheduler
commit e3accac1a976e65491a9b9fba82ce8ddbd3d2389 upstream. Commit734e1a8603
("block: Prevent deadlocks when switching elevators") introduced the function elv_iosched_load_module() to allow loading an elevator module outside of elv_iosched_store() with the target device queue not frozen, to avoid deadlocks. However, the "none" scheduler does not have a module and as a result, elv_iosched_load_module() always returns an error when trying to switch to this valid scheduler. Fix this by ignoring the return value of the request_module() call done by elv_iosched_load_module(). This restores the behavior before commit734e1a8603
, which was to ignore the request_module() result and instead rely on elevator_change() to handle the "none" scheduler case. Reported-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com> Fixes:734e1a8603
("block: Prevent deadlocks when switching elevators") Cc: stable@vger.kernel.org Signed-off-by: Damien Le Moal <dlemoal@kernel.org> Reviewed-by: Christoph Hellwig <hch@lst.de> Link: https://lore.kernel.org/r/20240917133231.134806-1-dlemoal@kernel.org Signed-off-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
cdf27834c3
commit
2327c3f9d4
1 changed files with 3 additions and 1 deletions
|
@ -715,7 +715,9 @@ int elv_iosched_load_module(struct gendisk *disk, const char *buf,
|
|||
|
||||
strscpy(elevator_name, buf, sizeof(elevator_name));
|
||||
|
||||
return request_module("%s-iosched", strstrip(elevator_name));
|
||||
request_module("%s-iosched", strstrip(elevator_name));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
ssize_t elv_iosched_store(struct gendisk *disk, const char *buf,
|
||||
|
|
Loading…
Reference in a new issue