#include <linux/blkdev.h>
#include <linux/mm.h>
#include <linux/sched/mm.h>
#include <linux/slab.h>
#include <linux/bitmap.h>
#include "dm-core.h"
#define DM_MSG_PREFIX …
static int dm_blk_do_report_zones(struct mapped_device *md, struct dm_table *t,
sector_t sector, unsigned int nr_zones,
report_zones_cb cb, void *data)
{ … }
int dm_blk_report_zones(struct gendisk *disk, sector_t sector,
unsigned int nr_zones, report_zones_cb cb, void *data)
{ … }
static int dm_report_zones_cb(struct blk_zone *zone, unsigned int idx,
void *data)
{ … }
int dm_report_zones(struct block_device *bdev, sector_t start, sector_t sector,
struct dm_report_zones_args *args, unsigned int nr_zones)
{ … }
EXPORT_SYMBOL_GPL(…);
bool dm_is_zone_write(struct mapped_device *md, struct bio *bio)
{ … }
int dm_revalidate_zones(struct dm_table *t, struct request_queue *q)
{ … }
static int device_not_zone_append_capable(struct dm_target *ti,
struct dm_dev *dev, sector_t start,
sector_t len, void *data)
{ … }
static bool dm_table_supports_zone_append(struct dm_table *t)
{ … }
struct dm_device_zone_count { … };
static int dm_device_count_zones_cb(struct blk_zone *zone,
unsigned int idx, void *data)
{ … }
static int dm_device_count_zones(struct dm_dev *dev,
struct dm_device_zone_count *zc)
{ … }
struct dm_zone_resource_limits { … };
static int device_get_zone_resource_limits(struct dm_target *ti,
struct dm_dev *dev, sector_t start,
sector_t len, void *data)
{ … }
int dm_set_zones_restrictions(struct dm_table *t, struct request_queue *q,
struct queue_limits *lim)
{ … }
void dm_zone_endio(struct dm_io *io, struct bio *clone)
{ … }
static int dm_zone_need_reset_cb(struct blk_zone *zone, unsigned int idx,
void *data)
{ … }
int dm_zone_get_reset_bitmap(struct mapped_device *md, struct dm_table *t,
sector_t sector, unsigned int nr_zones,
unsigned long *need_reset)
{ … }