#include "dm.h"
#include <linux/module.h>
#include <linux/workqueue.h>
#include <linux/dm-bufio.h>
#define DM_MSG_PREFIX …
static void ebs_dtr(struct dm_target *ti);
struct ebs_c { … };
static inline sector_t __sector_to_block(struct ebs_c *ec, sector_t sector)
{ … }
static inline sector_t __block_mod(sector_t sector, unsigned int bs)
{ … }
static inline unsigned int __nr_blocks(struct ebs_c *ec, struct bio *bio)
{ … }
static inline bool __ebs_check_bs(unsigned int bs)
{ … }
static int __ebs_rw_bvec(struct ebs_c *ec, enum req_op op, struct bio_vec *bv,
struct bvec_iter *iter)
{ … }
static int __ebs_rw_bio(struct ebs_c *ec, enum req_op op, struct bio *bio)
{ … }
static int __ebs_discard_bio(struct ebs_c *ec, struct bio *bio)
{ … }
static void __ebs_forget_bio(struct ebs_c *ec, struct bio *bio)
{ … }
static void __ebs_process_bios(struct work_struct *ws)
{ … }
static int ebs_ctr(struct dm_target *ti, unsigned int argc, char **argv)
{ … }
static void ebs_dtr(struct dm_target *ti)
{ … }
static int ebs_map(struct dm_target *ti, struct bio *bio)
{ … }
static void ebs_status(struct dm_target *ti, status_type_t type,
unsigned int status_flags, char *result, unsigned int maxlen)
{ … }
static int ebs_prepare_ioctl(struct dm_target *ti, struct block_device **bdev)
{ … }
static void ebs_io_hints(struct dm_target *ti, struct queue_limits *limits)
{ … }
static int ebs_iterate_devices(struct dm_target *ti,
iterate_devices_callout_fn fn, void *data)
{ … }
static struct target_type ebs_target = …;
module_dm(ebs);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;