block: Fix elv_iosched_local_module handling of "none" scheduler
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>
This commit is contained in:
parent
42b16d3ac3
commit
e3accac1a9
@ -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 New Issue
Block a user