Skip to content

Commit e3accac

Browse files
damien-lemoalaxboe
authored andcommitted
block: Fix elv_iosched_local_module handling of "none" scheduler
Commit 734e1a8 ("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 734e1a8, 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: 734e1a8 ("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>
1 parent 42b16d3 commit e3accac

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

block/elevator.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -715,7 +715,9 @@ int elv_iosched_load_module(struct gendisk *disk, const char *buf,
715715

716716
strscpy(elevator_name, buf, sizeof(elevator_name));
717717

718-
return request_module("%s-iosched", strstrip(elevator_name));
718+
request_module("%s-iosched", strstrip(elevator_name));
719+
720+
return 0;
719721
}
720722

721723
ssize_t elv_iosched_store(struct gendisk *disk, const char *buf,

0 commit comments

Comments
 (0)