Skip to content

Commit

Permalink
dm linear: eliminate linear_end_io call if CONFIG_DM_ZONED disabled
Browse files Browse the repository at this point in the history
It is best to avoid any extra overhead associated with bio completion.
DM core will indirectly call a DM target's .end_io if it is defined.
In the case of DM linear, there is no need to do so (for every bio that
completes) if CONFIG_DM_ZONED is not enabled.

Avoiding an extra indirect call for every bio completion is very
important for ensuring DM linear doesn't incur more overhead that
further widens the performance gap between dm-linear and raw block
devices.

Fixes: 0be12c1 ("dm linear: add support for zoned block devices")
Cc: [email protected]
Signed-off-by: Mike Snitzer <[email protected]>
  • Loading branch information
snitm committed Oct 10, 2018
1 parent 9864cd5 commit beb9caa
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion drivers/md/dm-linear.c
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ static int linear_map(struct dm_target *ti, struct bio *bio)
return DM_MAPIO_REMAPPED;
}

#ifdef CONFIG_DM_ZONED
static int linear_end_io(struct dm_target *ti, struct bio *bio,
blk_status_t *error)
{
Expand All @@ -112,6 +113,7 @@ static int linear_end_io(struct dm_target *ti, struct bio *bio,

return DM_ENDIO_DONE;
}
#endif

static void linear_status(struct dm_target *ti, status_type_t type,
unsigned status_flags, char *result, unsigned maxlen)
Expand Down Expand Up @@ -208,12 +210,16 @@ static size_t linear_dax_copy_to_iter(struct dm_target *ti, pgoff_t pgoff,
static struct target_type linear_target = {
.name = "linear",
.version = {1, 4, 0},
#ifdef CONFIG_DM_ZONED
.end_io = linear_end_io,
.features = DM_TARGET_PASSES_INTEGRITY | DM_TARGET_ZONED_HM,
#else
.features = DM_TARGET_PASSES_INTEGRITY,
#endif
.module = THIS_MODULE,
.ctr = linear_ctr,
.dtr = linear_dtr,
.map = linear_map,
.end_io = linear_end_io,
.status = linear_status,
.prepare_ioctl = linear_prepare_ioctl,
.iterate_devices = linear_iterate_devices,
Expand Down

0 comments on commit beb9caa

Please sign in to comment.