diff options
Diffstat (limited to 'include/linux/device-mapper.h')
| -rw-r--r-- | include/linux/device-mapper.h | 26 | 
1 files changed, 26 insertions, 0 deletions
| diff --git a/include/linux/device-mapper.h b/include/linux/device-mapper.h index 0830c9e86f0d..91acfce74a22 100644 --- a/include/linux/device-mapper.h +++ b/include/linux/device-mapper.h @@ -19,6 +19,15 @@ struct dm_table;  struct mapped_device;  struct bio_vec; +/* + * Type of table, mapped_device's mempool and request_queue + */ +#define DM_TYPE_NONE			0 +#define DM_TYPE_BIO_BASED		1 +#define DM_TYPE_REQUEST_BASED		2 +#define DM_TYPE_MQ_REQUEST_BASED	3 +#define DM_TYPE_DAX_BIO_BASED		4 +  typedef enum { STATUSTYPE_INFO, STATUSTYPE_TABLE } status_type_t;  union map_info { @@ -116,6 +125,14 @@ typedef void (*dm_io_hints_fn) (struct dm_target *ti,   */  typedef int (*dm_busy_fn) (struct dm_target *ti); +/* + * Returns: + *  < 0 : error + * >= 0 : the number of bytes accessible at the address + */ +typedef long (*dm_direct_access_fn) (struct dm_target *ti, sector_t sector, +				     void **kaddr, pfn_t *pfn, long size); +  void dm_error(const char *message);  struct dm_dev { @@ -162,6 +179,7 @@ struct target_type {  	dm_busy_fn busy;  	dm_iterate_devices_fn iterate_devices;  	dm_io_hints_fn io_hints; +	dm_direct_access_fn direct_access;  	/* For internal device-mapper use. */  	struct list_head list; @@ -444,6 +462,14 @@ int dm_table_add_target(struct dm_table *t, const char *type,  void dm_table_add_target_callbacks(struct dm_table *t, struct dm_target_callbacks *cb);  /* + * Target can use this to set the table's type. + * Can only ever be called from a target's ctr. + * Useful for "hybrid" target (supports both bio-based + * and request-based). + */ +void dm_table_set_type(struct dm_table *t, unsigned type); + +/*   * Finally call this to make the table ready for use.   */  int dm_table_complete(struct dm_table *t); |