Commit e3290b94 authored by Mike Snitzer's avatar Mike Snitzer

dm: simplify target code conditional on CONFIG_BLK_DEV_ZONED

Allow removal of CONFIG_BLK_DEV_ZONED conditionals in target_type
definition of various targets.
Suggested-by: default avatarEric Biggers <ebiggers@google.com>
Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
parent 3db564b4
...@@ -3134,7 +3134,6 @@ static int crypt_ctr_optional(struct dm_target *ti, unsigned int argc, char **ar ...@@ -3134,7 +3134,6 @@ static int crypt_ctr_optional(struct dm_target *ti, unsigned int argc, char **ar
} }
#ifdef CONFIG_BLK_DEV_ZONED #ifdef CONFIG_BLK_DEV_ZONED
static int crypt_report_zones(struct dm_target *ti, static int crypt_report_zones(struct dm_target *ti,
struct dm_report_zones_args *args, unsigned int nr_zones) struct dm_report_zones_args *args, unsigned int nr_zones)
{ {
...@@ -3145,7 +3144,8 @@ static int crypt_report_zones(struct dm_target *ti, ...@@ -3145,7 +3144,8 @@ static int crypt_report_zones(struct dm_target *ti,
return blkdev_report_zones(cc->dev->bdev, sector, nr_zones, return blkdev_report_zones(cc->dev->bdev, sector, nr_zones,
dm_report_zones_cb, args); dm_report_zones_cb, args);
} }
#else
#define crypt_report_zones NULL
#endif #endif
/* /*
...@@ -3580,10 +3580,8 @@ static struct target_type crypt_target = { ...@@ -3580,10 +3580,8 @@ static struct target_type crypt_target = {
.module = THIS_MODULE, .module = THIS_MODULE,
.ctr = crypt_ctr, .ctr = crypt_ctr,
.dtr = crypt_dtr, .dtr = crypt_dtr,
#ifdef CONFIG_BLK_DEV_ZONED
.features = DM_TARGET_ZONED_HM, .features = DM_TARGET_ZONED_HM,
.report_zones = crypt_report_zones, .report_zones = crypt_report_zones,
#endif
.map = crypt_map, .map = crypt_map,
.status = crypt_status, .status = crypt_status,
.postsuspend = crypt_postsuspend, .postsuspend = crypt_postsuspend,
......
...@@ -469,6 +469,8 @@ static int flakey_report_zones(struct dm_target *ti, ...@@ -469,6 +469,8 @@ static int flakey_report_zones(struct dm_target *ti,
return blkdev_report_zones(fc->dev->bdev, sector, nr_zones, return blkdev_report_zones(fc->dev->bdev, sector, nr_zones,
dm_report_zones_cb, args); dm_report_zones_cb, args);
} }
#else
#define flakey_report_zones NULL
#endif #endif
static int flakey_iterate_devices(struct dm_target *ti, iterate_devices_callout_fn fn, void *data) static int flakey_iterate_devices(struct dm_target *ti, iterate_devices_callout_fn fn, void *data)
...@@ -481,12 +483,8 @@ static int flakey_iterate_devices(struct dm_target *ti, iterate_devices_callout_ ...@@ -481,12 +483,8 @@ static int flakey_iterate_devices(struct dm_target *ti, iterate_devices_callout_
static struct target_type flakey_target = { static struct target_type flakey_target = {
.name = "flakey", .name = "flakey",
.version = {1, 5, 0}, .version = {1, 5, 0},
#ifdef CONFIG_BLK_DEV_ZONED
.features = DM_TARGET_ZONED_HM | DM_TARGET_PASSES_CRYPTO, .features = DM_TARGET_ZONED_HM | DM_TARGET_PASSES_CRYPTO,
.report_zones = flakey_report_zones, .report_zones = flakey_report_zones,
#else
.features = DM_TARGET_PASSES_CRYPTO,
#endif
.module = THIS_MODULE, .module = THIS_MODULE,
.ctr = flakey_ctr, .ctr = flakey_ctr,
.dtr = flakey_dtr, .dtr = flakey_dtr,
......
...@@ -146,6 +146,8 @@ static int linear_report_zones(struct dm_target *ti, ...@@ -146,6 +146,8 @@ static int linear_report_zones(struct dm_target *ti,
return blkdev_report_zones(lc->dev->bdev, sector, nr_zones, return blkdev_report_zones(lc->dev->bdev, sector, nr_zones,
dm_report_zones_cb, args); dm_report_zones_cb, args);
} }
#else
#define linear_report_zones NULL
#endif #endif
static int linear_iterate_devices(struct dm_target *ti, static int linear_iterate_devices(struct dm_target *ti,
...@@ -227,14 +229,9 @@ static int linear_dax_zero_page_range(struct dm_target *ti, pgoff_t pgoff, ...@@ -227,14 +229,9 @@ static int linear_dax_zero_page_range(struct dm_target *ti, pgoff_t pgoff,
static struct target_type linear_target = { static struct target_type linear_target = {
.name = "linear", .name = "linear",
.version = {1, 4, 0}, .version = {1, 4, 0},
#ifdef CONFIG_BLK_DEV_ZONED
.features = DM_TARGET_PASSES_INTEGRITY | DM_TARGET_NOWAIT | .features = DM_TARGET_PASSES_INTEGRITY | DM_TARGET_NOWAIT |
DM_TARGET_ZONED_HM | DM_TARGET_PASSES_CRYPTO, DM_TARGET_ZONED_HM | DM_TARGET_PASSES_CRYPTO,
.report_zones = linear_report_zones, .report_zones = linear_report_zones,
#else
.features = DM_TARGET_PASSES_INTEGRITY | DM_TARGET_NOWAIT |
DM_TARGET_PASSES_CRYPTO,
#endif
.module = THIS_MODULE, .module = THIS_MODULE,
.ctr = linear_ctr, .ctr = linear_ctr,
.dtr = linear_dtr, .dtr = linear_dtr,
......
...@@ -93,9 +93,18 @@ typedef int (*dm_message_fn) (struct dm_target *ti, unsigned argc, char **argv, ...@@ -93,9 +93,18 @@ typedef int (*dm_message_fn) (struct dm_target *ti, unsigned argc, char **argv,
typedef int (*dm_prepare_ioctl_fn) (struct dm_target *ti, struct block_device **bdev); typedef int (*dm_prepare_ioctl_fn) (struct dm_target *ti, struct block_device **bdev);
#ifdef CONFIG_BLK_DEV_ZONED
typedef int (*dm_report_zones_fn) (struct dm_target *ti, typedef int (*dm_report_zones_fn) (struct dm_target *ti,
struct dm_report_zones_args *args, struct dm_report_zones_args *args,
unsigned int nr_zones); unsigned int nr_zones);
#else
/*
* Define dm_report_zones_fn so that targets can assign to NULL if
* CONFIG_BLK_DEV_ZONED disabled. Otherwise each target needs to do
* awkward #ifdefs in their target_type, etc.
*/
typedef int (*dm_report_zones_fn) (struct dm_target *dummy);
#endif
/* /*
* These iteration functions are typically used to check (and combine) * These iteration functions are typically used to check (and combine)
...@@ -187,9 +196,7 @@ struct target_type { ...@@ -187,9 +196,7 @@ struct target_type {
dm_status_fn status; dm_status_fn status;
dm_message_fn message; dm_message_fn message;
dm_prepare_ioctl_fn prepare_ioctl; dm_prepare_ioctl_fn prepare_ioctl;
#ifdef CONFIG_BLK_DEV_ZONED
dm_report_zones_fn report_zones; dm_report_zones_fn report_zones;
#endif
dm_busy_fn busy; dm_busy_fn busy;
dm_iterate_devices_fn iterate_devices; dm_iterate_devices_fn iterate_devices;
dm_io_hints_fn io_hints; dm_io_hints_fn io_hints;
...@@ -248,8 +255,13 @@ struct target_type { ...@@ -248,8 +255,13 @@ struct target_type {
/* /*
* Indicates that a target supports host-managed zoned block devices. * Indicates that a target supports host-managed zoned block devices.
*/ */
#ifdef CONFIG_BLK_DEV_ZONED
#define DM_TARGET_ZONED_HM 0x00000040 #define DM_TARGET_ZONED_HM 0x00000040
#define dm_target_supports_zoned_hm(type) ((type)->features & DM_TARGET_ZONED_HM) #define dm_target_supports_zoned_hm(type) ((type)->features & DM_TARGET_ZONED_HM)
#else
#define DM_TARGET_ZONED_HM 0x00000000
#define dm_target_supports_zoned_hm(type) (false)
#endif
/* /*
* A target handles REQ_NOWAIT * A target handles REQ_NOWAIT
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment