aboutsummaryrefslogtreecommitdiff
path: root/drivers/md
diff options
context:
space:
mode:
authorMike Snitzer2022-03-26 13:46:06 -0400
committerMike Snitzer2022-05-05 17:31:34 -0400
commit6cbce280fc741c2057d574366318eafbeabbcfda (patch)
tree3159e96d02c64fbbf99358b7763e1ea1a8a38118 /drivers/md
parentfe221db4192cf6c5f6b0be59e09025b05418e226 (diff)
dm: add local variables to clone_endio and __map_bio
Avoid redundant dereferences in both functions. Signed-off-by: Mike Snitzer <snitzer@kernel.org>
Diffstat (limited to 'drivers/md')
-rw-r--r--drivers/md/dm.c25
1 files changed, 12 insertions, 13 deletions
diff --git a/drivers/md/dm.c b/drivers/md/dm.c
index 34d457cfcb36..152545ef00fa 100644
--- a/drivers/md/dm.c
+++ b/drivers/md/dm.c
@@ -976,11 +976,12 @@ static bool swap_bios_limit(struct dm_target *ti, struct bio *bio)
static void clone_endio(struct bio *bio)
{
blk_status_t error = bio->bi_status;
+ struct request_queue *q = bio->bi_bdev->bd_disk->queue;
struct dm_target_io *tio = clone_to_tio(bio);
+ struct dm_target *ti = tio->ti;
+ dm_endio_fn endio = ti->type->end_io;
struct dm_io *io = tio->io;
- struct mapped_device *md = tio->io->md;
- dm_endio_fn endio = tio->ti->type->end_io;
- struct request_queue *q = bio->bi_bdev->bd_disk->queue;
+ struct mapped_device *md = io->md;
if (unlikely(error == BLK_STS_TARGET)) {
if (bio_op(bio) == REQ_OP_DISCARD &&
@@ -995,7 +996,7 @@ static void clone_endio(struct bio *bio)
dm_zone_endio(io, bio);
if (endio) {
- int r = endio(tio->ti, bio, &error);
+ int r = endio(ti, bio, &error);
switch (r) {
case DM_ENDIO_REQUEUE:
/*
@@ -1019,10 +1020,8 @@ static void clone_endio(struct bio *bio)
}
}
- if (unlikely(swap_bios_limit(tio->ti, bio))) {
- struct mapped_device *md = io->md;
+ if (unlikely(swap_bios_limit(ti, bio)))
up(&md->swap_bios_semaphore);
- }
free_tio(bio);
dm_io_dec_pending(io, error);
@@ -1263,9 +1262,10 @@ static noinline void __set_swap_bios_limit(struct mapped_device *md, int latch)
static void __map_bio(struct bio *clone)
{
struct dm_target_io *tio = clone_to_tio(clone);
- int r;
- struct dm_io *io = tio->io;
struct dm_target *ti = tio->ti;
+ struct dm_io *io = tio->io;
+ struct mapped_device *md = io->md;
+ int r;
clone->bi_end_io = clone_endio;
@@ -1276,7 +1276,6 @@ static void __map_bio(struct bio *clone)
tio->old_sector = clone->bi_iter.bi_sector;
if (unlikely(swap_bios_limit(ti, clone))) {
- struct mapped_device *md = io->md;
int latch = get_swap_bios();
if (unlikely(latch != md->swap_bios))
__set_swap_bios_limit(md, latch);
@@ -1288,7 +1287,7 @@ static void __map_bio(struct bio *clone)
* on zoned target. In this case, dm_zone_map_bio() calls the target
* map operation.
*/
- if (unlikely(dm_emulate_zone_append(io->md)))
+ if (unlikely(dm_emulate_zone_append(md)))
r = dm_zone_map_bio(tio);
else
r = ti->type->map(ti, clone);
@@ -1304,14 +1303,14 @@ static void __map_bio(struct bio *clone)
* the bio has been remapped so dispatch it, but defer
* dm_start_io_acct() until after possible bio_split().
*/
- __dm_submit_bio_remap(clone, disk_devt(io->md->disk),
+ __dm_submit_bio_remap(clone, disk_devt(md->disk),
tio->old_sector);
dm_io_set_flag(io, DM_IO_START_ACCT);
break;
case DM_MAPIO_KILL:
case DM_MAPIO_REQUEUE:
if (unlikely(swap_bios_limit(ti, clone)))
- up(&io->md->swap_bios_semaphore);
+ up(&md->swap_bios_semaphore);
free_tio(clone);
if (r == DM_MAPIO_KILL)
dm_io_dec_pending(io, BLK_STS_IOERR);