block: Fix elv_iosched_local_module handling of "none" scheduler
authorDamien Le Moal <dlemoal@kernel.org>
Tue, 17 Sep 2024 13:32:31 +0000 (22:32 +0900)
committerJens Axboe <axboe@kernel.dk>
Tue, 17 Sep 2024 14:34:00 +0000 (08:34 -0600)
commite3accac1a976e65491a9b9fba82ce8ddbd3d2389
treec71c9eef7ee3b820bbf6950620e0a9c32a596455
parent42b16d3ac371a2fac9b6f08fd75f23f34ba3955a
block: Fix elv_iosched_local_module handling of "none" scheduler

Commit 734e1a860312 ("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
commit 734e1a860312, 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: 734e1a860312 ("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>
block/elevator.c