]> Git Repo - linux.git/commit
block, bfq: turn bfqq_data into an array in bfq_io_cq
authorPaolo Valente <[email protected]>
Tue, 3 Jan 2023 14:54:59 +0000 (15:54 +0100)
committerJens Axboe <[email protected]>
Sun, 29 Jan 2023 22:18:32 +0000 (15:18 -0700)
commitfd571df0ac5b289af8c659891f9b72f4c0cfdbd2
tree53e12727ee9a698bc5a9016231f136b876bbcc86
parenta61230470c8cbd4eec0dc4dd99a3867d009c0b05
block, bfq: turn bfqq_data into an array in bfq_io_cq

When a bfq_queue Q is merged with another queue, several pieces of
information are saved about Q. These pieces are stored in the
bfqq_data field in the bfq_io_cq data structure of the process
associated with Q.

Yet, with a multi-actuator drive, a process may get associated with
multiple bfq_queues: one queue for each of the N actuators. Each of
these queues may undergo a merge. So, the bfq_io_cq data structure
must be able to accommodate the above information for N queues.

This commit solves this problem by turning the bfqq_data scalar field
into an array of N elements (and by changing code so as to handle
this array).

This solution is written under the assumption that bfq_queues
associated with different actuators cannot be cross-merged. This
assumption holds naturally with basic queue merging: the latter is
triggered by spatial locality, and sectors for different actuators are
not close to each other (apart from the corner case of the last
sectors served by a given actuator and the first sectors served by the
next actuator). As for stable cross-merging, the assumption here is
that it is disabled.

Reviewed-by: Damien Le Moal <[email protected]>
Signed-off-by: Gabriele Felici <[email protected]>
Signed-off-by: Gianmarco Lusvardi <[email protected]>
Signed-off-by: Giulio Barabino <[email protected]>
Signed-off-by: Emiliano Maccaferri <[email protected]>
Signed-off-by: Paolo Valente <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Jens Axboe <[email protected]>
block/bfq-iosched.c
block/bfq-iosched.h
This page took 0.055001 seconds and 4 git commands to generate.