[dm-devel] [PATCH v2] dm-table: make dm_table_supports_discards static
Mikulas Patocka
mpatocka at redhat.com
Thu Jul 10 17:20:33 UTC 2014
... version 2 of the patch. The previous patch had missing white line
between function.
From: Mikulas Patocka <mpatocka at redhat.com>
The function dm_table_supports_discards is called only from dm-table.c, so
make it static.
Signed-off-by: Mikulas Patocka <mpatocka at redhat.com>
---
drivers/md/dm-table.c | 74 +++++++++++++++++++++++++-------------------------
drivers/md/dm.h | 1
2 files changed, 37 insertions(+), 38 deletions(-)
Index: linux-3.16-rc4/drivers/md/dm-table.c
===================================================================
--- linux-3.16-rc4.orig/drivers/md/dm-table.c 2014-07-10 18:21:23.000000000 +0200
+++ linux-3.16-rc4/drivers/md/dm-table.c 2014-07-10 19:18:00.000000000 +0200
@@ -1442,6 +1442,43 @@ static bool dm_table_supports_write_same
return true;
}
+static int device_discard_capable(struct dm_target *ti, struct dm_dev *dev,
+ sector_t start, sector_t len, void *data)
+{
+ struct request_queue *q = bdev_get_queue(dev->bdev);
+
+ return q && blk_queue_discard(q);
+}
+
+static bool dm_table_supports_discards(struct dm_table *t)
+{
+ struct dm_target *ti;
+ unsigned i = 0;
+
+ /*
+ * Unless any target used by the table set discards_supported,
+ * require at least one underlying device to support discards.
+ * t->devices includes internal dm devices such as mirror logs
+ * so we need to use iterate_devices here, which targets
+ * supporting discard selectively must provide.
+ */
+ while (i < dm_table_get_num_targets(t)) {
+ ti = dm_table_get_target(t, i++);
+
+ if (!ti->num_discard_bios)
+ continue;
+
+ if (ti->discards_supported)
+ return 1;
+
+ if (ti->type->iterate_devices &&
+ ti->type->iterate_devices(ti, device_discard_capable, NULL))
+ return 1;
+ }
+
+ return 0;
+}
+
void dm_table_set_restrictions(struct dm_table *t, struct request_queue *q,
struct queue_limits *limits)
{
@@ -1647,40 +1684,3 @@ void dm_table_run_md_queue_async(struct
}
}
EXPORT_SYMBOL(dm_table_run_md_queue_async);
-
-static int device_discard_capable(struct dm_target *ti, struct dm_dev *dev,
- sector_t start, sector_t len, void *data)
-{
- struct request_queue *q = bdev_get_queue(dev->bdev);
-
- return q && blk_queue_discard(q);
-}
-
-bool dm_table_supports_discards(struct dm_table *t)
-{
- struct dm_target *ti;
- unsigned i = 0;
-
- /*
- * Unless any target used by the table set discards_supported,
- * require at least one underlying device to support discards.
- * t->devices includes internal dm devices such as mirror logs
- * so we need to use iterate_devices here, which targets
- * supporting discard selectively must provide.
- */
- while (i < dm_table_get_num_targets(t)) {
- ti = dm_table_get_target(t, i++);
-
- if (!ti->num_discard_bios)
- continue;
-
- if (ti->discards_supported)
- return 1;
-
- if (ti->type->iterate_devices &&
- ti->type->iterate_devices(ti, device_discard_capable, NULL))
- return 1;
- }
-
- return 0;
-}
Index: linux-3.16-rc4/drivers/md/dm.h
===================================================================
--- linux-3.16-rc4.orig/drivers/md/dm.h 2014-07-10 18:21:23.000000000 +0200
+++ linux-3.16-rc4/drivers/md/dm.h 2014-07-10 18:21:25.000000000 +0200
@@ -72,7 +72,6 @@ int dm_table_any_busy_target(struct dm_t
unsigned dm_table_get_type(struct dm_table *t);
struct target_type *dm_table_get_immutable_target_type(struct dm_table *t);
bool dm_table_request_based(struct dm_table *t);
-bool dm_table_supports_discards(struct dm_table *t);
void dm_table_free_md_mempools(struct dm_table *t);
struct dm_md_mempools *dm_table_get_md_mempools(struct dm_table *t);
More information about the dm-devel
mailing list