All of lore.kernel.org
 help / color / mirror / Atom feed
* [dm-devel] [PATCH] dm: add support for DM_TARGET_NOWAIT for various targets
@ 2020-11-10  6:55 Jeffle Xu
  2020-11-11 15:38 ` [dm-devel] " Mike Snitzer
  2020-11-13  2:05 ` [dm-devel] [PATCH v2] " Jeffle Xu
  0 siblings, 2 replies; 12+ messages in thread
From: Jeffle Xu @ 2020-11-10  6:55 UTC (permalink / raw)
  To: snitzer; +Cc: joseph.qi, dm-devel, koct9i

This is one prep patch for supporting iopoll for dm device.

The direct IO routine will set REQ_NOWAIT flag for REQ_HIPRI IO (that
is, IO will do iopoll) in bio_set_polled(). Then in the IO submission
routine, the ability of handling REQ_NOWAIT of the block device will
be checked for REQ_HIPRI IO in submit_bio_checks(). -EOPNOTSUPP will
be returned if the block device doesn't support REQ_NOWAIT.

DM lacks support for REQ_NOWAIT until commit 6abc49468eea ("dm: add
support for REQ_NOWAIT and enable it for linear target"). Since then,
dm targets that support REQ_NOWAIT should advertise DM_TARGET_NOWAIT
feature.

This patch adds support for DM_TARGET_NOWAIT for those dm targets, the
.map() algorithm of which just involves sector recalculation.

Signed-off-by: Jeffle Xu <jefflexu@linux.alibaba.com>
---
Hi Mike,

I could split these boilerplate code that each dm target have one
seperate patch if you think that would be better.

---
 drivers/md/dm-stripe.c   | 2 +-
 drivers/md/dm-switch.c   | 1 +
 drivers/md/dm-unstripe.c | 1 +
 drivers/md/dm-zero.c     | 1 +
 4 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/md/dm-stripe.c b/drivers/md/dm-stripe.c
index 151d022b032d..df359d33cda8 100644
--- a/drivers/md/dm-stripe.c
+++ b/drivers/md/dm-stripe.c
@@ -496,7 +496,7 @@ static void stripe_io_hints(struct dm_target *ti,
 static struct target_type stripe_target = {
 	.name   = "striped",
 	.version = {1, 6, 0},
-	.features = DM_TARGET_PASSES_INTEGRITY,
+	.features = DM_TARGET_PASSES_INTEGRITY | DM_TARGET_NOWAIT,
 	.module = THIS_MODULE,
 	.ctr    = stripe_ctr,
 	.dtr    = stripe_dtr,
diff --git a/drivers/md/dm-switch.c b/drivers/md/dm-switch.c
index bff4c7fa1cd2..262e2b0fd975 100644
--- a/drivers/md/dm-switch.c
+++ b/drivers/md/dm-switch.c
@@ -550,6 +550,7 @@ static int switch_iterate_devices(struct dm_target *ti,
 static struct target_type switch_target = {
 	.name = "switch",
 	.version = {1, 1, 0},
+	.features = DM_TARGET_NOWAIT,
 	.module = THIS_MODULE,
 	.ctr = switch_ctr,
 	.dtr = switch_dtr,
diff --git a/drivers/md/dm-unstripe.c b/drivers/md/dm-unstripe.c
index e673dacf6418..7357c1bd5863 100644
--- a/drivers/md/dm-unstripe.c
+++ b/drivers/md/dm-unstripe.c
@@ -178,6 +178,7 @@ static void unstripe_io_hints(struct dm_target *ti,
 static struct target_type unstripe_target = {
 	.name = "unstriped",
 	.version = {1, 1, 0},
+	.features = DM_TARGET_NOWAIT,
 	.module = THIS_MODULE,
 	.ctr = unstripe_ctr,
 	.dtr = unstripe_dtr,
diff --git a/drivers/md/dm-zero.c b/drivers/md/dm-zero.c
index b65ca8dcfbdc..faa1dbffc8b4 100644
--- a/drivers/md/dm-zero.c
+++ b/drivers/md/dm-zero.c
@@ -59,6 +59,7 @@ static int zero_map(struct dm_target *ti, struct bio *bio)
 static struct target_type zero_target = {
 	.name   = "zero",
 	.version = {1, 1, 0},
+	.features = DM_TARGET_NOWAIT,
 	.module = THIS_MODULE,
 	.ctr    = zero_ctr,
 	.map    = zero_map,
-- 
2.27.0

--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel


^ permalink raw reply related	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2020-11-18 15:38 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-10  6:55 [dm-devel] [PATCH] dm: add support for DM_TARGET_NOWAIT for various targets Jeffle Xu
2020-11-11 15:38 ` [dm-devel] " Mike Snitzer
2020-11-12  6:05   ` JeffleXu
2020-11-12  6:05     ` JeffleXu
2020-11-12  7:58     ` JeffleXu
2020-11-12  7:58       ` JeffleXu
2020-11-12 16:11     ` Mike Snitzer
2020-11-12 16:11       ` [dm-devel] " Mike Snitzer
2020-11-13  2:05 ` [dm-devel] [PATCH v2] " Jeffle Xu
2020-11-13  2:12   ` JeffleXu
2020-11-18  2:01   ` JeffleXu
2020-11-18 15:38     ` Mike Snitzer

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.