]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
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)
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

index c355b55d010786077c3114e4589ddf905e4032ab..4122026b11f1a1399e76a880e699e3ef009732e8 100644 (file)
@@ -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,