|
@@ -79,11 +79,26 @@ typedef int (*dm_ioctl_fn) (struct dm_target *ti, unsigned int cmd,
|
|
|
typedef int (*dm_merge_fn) (struct dm_target *ti, struct bvec_merge_data *bvm,
|
|
|
struct bio_vec *biovec, int max_size);
|
|
|
|
|
|
+/*
|
|
|
+ * These iteration functions are typically used to check (and combine)
|
|
|
+ * properties of underlying devices.
|
|
|
+ * E.g. Does at least one underlying device support flush?
|
|
|
+ * Does any underlying device not support WRITE_SAME?
|
|
|
+ *
|
|
|
+ * The callout function is called once for each contiguous section of
|
|
|
+ * an underlying device. State can be maintained in *data.
|
|
|
+ * Return non-zero to stop iterating through any further devices.
|
|
|
+ */
|
|
|
typedef int (*iterate_devices_callout_fn) (struct dm_target *ti,
|
|
|
struct dm_dev *dev,
|
|
|
sector_t start, sector_t len,
|
|
|
void *data);
|
|
|
|
|
|
+/*
|
|
|
+ * This function must iterate through each section of device used by the
|
|
|
+ * target until it encounters a non-zero return code, which it then returns.
|
|
|
+ * Returns zero if no callout returned non-zero.
|
|
|
+ */
|
|
|
typedef int (*dm_iterate_devices_fn) (struct dm_target *ti,
|
|
|
iterate_devices_callout_fn fn,
|
|
|
void *data);
|