diff options
Diffstat (limited to 'include/linux/device-mapper.h')
| -rw-r--r-- | include/linux/device-mapper.h | 27 | 
1 files changed, 19 insertions, 8 deletions
diff --git a/include/linux/device-mapper.h b/include/linux/device-mapper.h index 399ad8632356..475668c69dbc 100644 --- a/include/linux/device-mapper.h +++ b/include/linux/device-mapper.h @@ -17,6 +17,7 @@  struct dm_dev;  struct dm_target;  struct dm_table; +struct dm_report_zones_args;  struct mapped_device;  struct bio_vec; @@ -93,9 +94,9 @@ 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_report_zones_fn) (struct dm_target *ti, sector_t sector, -				   struct blk_zone *zones, -				   unsigned int *nr_zones); +typedef int (*dm_report_zones_fn) (struct dm_target *ti, +				   struct dm_report_zones_args *args, +				   unsigned int nr_zones);  /*   * These iteration functions are typically used to check (and combine) @@ -422,10 +423,23 @@ struct gendisk *dm_disk(struct mapped_device *md);  int dm_suspended(struct dm_target *ti);  int dm_noflush_suspending(struct dm_target *ti);  void dm_accept_partial_bio(struct bio *bio, unsigned n_sectors); -void dm_remap_zone_report(struct dm_target *ti, sector_t start, -			  struct blk_zone *zones, unsigned int *nr_zones);  union map_info *dm_get_rq_mapinfo(struct request *rq); +#ifdef CONFIG_BLK_DEV_ZONED +struct dm_report_zones_args { +	struct dm_target *tgt; +	sector_t next_sector; + +	void *orig_data; +	report_zones_cb orig_cb; +	unsigned int zone_idx; + +	/* must be filled by ->report_zones before calling dm_report_zones_cb */ +	sector_t start; +}; +int dm_report_zones_cb(struct blk_zone *zone, unsigned int idx, void *data); +#endif /* CONFIG_BLK_DEV_ZONED */ +  /*   * Device mapper functions to parse and create devices specified by the   * parameter "dm-mod.create=" @@ -594,9 +608,6 @@ void *dm_vcalloc(unsigned long nmemb, unsigned long elem_size);   */  #define dm_round_up(n, sz) (dm_div_up((n), (sz)) * (sz)) -#define dm_array_too_big(fixed, obj, num) \ -	((num) > (UINT_MAX - (fixed)) / (obj)) -  /*   * Sector offset taken relative to the start of the target instead of   * relative to the start of the device.  |