All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bart Van Assche <Bart.VanAssche@wdc.com>
To: "snitzer@redhat.com" <snitzer@redhat.com>,
	"axboe@kernel.dk" <axboe@kernel.dk>,
	"loberman@redhat.com" <loberman@redhat.com>
Cc: "dm-devel@redhat.com" <dm-devel@redhat.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"hch@infradead.org" <hch@infradead.org>,
	"linux-block@vger.kernel.org" <linux-block@vger.kernel.org>,
	"osandov@fb.com" <osandov@fb.com>,
	"ming.lei@redhat.com" <ming.lei@redhat.com>
Subject: Re: [RFC PATCH] blk-mq: fixup RESTART when queue becomes idle
Date: Thu, 18 Jan 2018 22:55:03 +0000	[thread overview]
Message-ID: <1516316102.2676.97.camel@wdc.com> (raw)
In-Reply-To: <fef86285-f944-4404-f2be-33889f1e21d3@kernel.dk>

T24gVGh1LCAyMDE4LTAxLTE4IGF0IDE1OjM5IC0wNzAwLCBKZW5zIEF4Ym9lIHdyb3RlOg0KPiBX
aGVuIHlvdSBkbyBoYXZlIGEgc29saWQgdGVzdCBjYXNlLCBwbGVhc2UgcGxlYXNlIHN1Ym1pdCBh
IGJsa3Rlc3RzDQo+IHRlc3QgY2FzZSBmb3IgaXQhIFRoaXMgbmVlZHMgdG8gYmUgc29tZXRoaW5n
IHdlIGNhbiByZWd1bGFybHkgaW4NCj4gdGVzdGluZy4NCg0KSGVsbG8gSmVucywNCg0KVGhhdCBz
b3VuZHMgbGlrZSBhIGdvb2QgaWRlYSB0byBtZS4gQlRXLCBJIHRoaW5rIHRoZSByZWFzb24gd2h5
IHNvIGZhciBJDQpjYW4gcmVwcm9kdWNlIHRoZXNlIHF1ZXVlIHN0YWxscyBlYXNpZXIgdGhhbiBv
dGhlcnMgaXMgYmVjYXVzZSBJIG1vZGlmaWVkIHRoZQ0KU1JQIGluaXRpYXRvciB0byBtYWtlIGl0
IGVhc3kgdG8gY2F1c2UgdGhlIC5nZXRfYnVkZ2V0KCkgY2FsbCB0byBzdWNjZWVkIGFuZA0KdGhl
IHNjc2lfcXVldWVfcnEoKSB0byByZXR1cm4gQkxLX1NUU19CVVNZLiBBIHBvc3NpYmxlIG5leHQg
c3RlcCBpcyB0byBhcHBseQ0KYSBzaW1pbGFyIGNoYW5nZSB0byB0aGUgc2NzaV9kZWJ1ZyBkcml2
ZXIuIFRoZSBjaGFuZ2UgSSBtYWRlIGlzIGFzIGZvbGxvd3M6DQoNCmRpZmYgLS1naXQgYS9kcml2
ZXJzL2luZmluaWJhbmQvdWxwL3NycC9pYl9zcnAuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAv
c3JwL2liX3NycC5jDQppbmRleCAwYzg4N2ViZmJjNjQuLjdmM2M0YTE5NzQyNSAxMDA2NDQNCi0t
LSBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwL2liX3NycC5jDQorKysgYi9kcml2ZXJzL2lu
ZmluaWJhbmQvdWxwL3NycC9pYl9zcnAuYw0KQEAgLTMxMzUsNiArMzEzNSwxNiBAQCBzdGF0aWMg
aW50IHNycF9yZXNldF9ob3N0KHN0cnVjdCBzY3NpX2NtbmQgKnNjbW5kKQ0KIAlyZXR1cm4gc3Jw
X3JlY29ubmVjdF9ycG9ydCh0YXJnZXQtPnJwb3J0KSA9PSAwID8gU1VDQ0VTUyA6IEZBSUxFRDsN
CiB9DQogDQorc3RhdGljIGludCBzcnBfdGFyZ2V0X2FsbG9jKHN0cnVjdCBzY3NpX3RhcmdldCAq
c3RhcmdldCkNCit7DQorCXN0cnVjdCBTY3NpX0hvc3QgKnNob3N0ID0gZGV2X3RvX3Nob3N0KHN0
YXJnZXQtPmRldi5wYXJlbnQpOw0KKwlzdHJ1Y3Qgc3JwX3RhcmdldF9wb3J0ICp0YXJnZXQgPSBo
b3N0X3RvX3RhcmdldChzaG9zdCk7DQorDQorCWlmICh0YXJnZXQtPnRhcmdldF9jYW5fcXVldWUp
DQorCQlzdGFyZ2V0LT5jYW5fcXVldWUgPSB0YXJnZXQtPnRhcmdldF9jYW5fcXVldWU7DQorCXJl
dHVybiAwOw0KK30NCisNCiBzdGF0aWMgaW50IHNycF9zbGF2ZV9hbGxvYyhzdHJ1Y3Qgc2NzaV9k
ZXZpY2UgKnNkZXYpDQogew0KIAlzdHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdCA9IHNkZXYtPmhvc3Q7
DQpAQCAtMzM0OCw2ICszMzU4LDcgQEAgc3RhdGljIHN0cnVjdCBzY3NpX2hvc3RfdGVtcGxhdGUg
c3JwX3RlbXBsYXRlID0gew0KIAkubW9kdWxlCQkJCT0gVEhJU19NT0RVTEUsDQogCS5uYW1lCQkJ
CT0gIkluZmluaUJhbmQgU1JQIGluaXRpYXRvciIsDQogCS5wcm9jX25hbWUJCQk9IERSVl9OQU1F
LA0KKwkudGFyZ2V0X2FsbG9jCQkJPSBzcnBfdGFyZ2V0X2FsbG9jLA0KIAkuc2xhdmVfYWxsb2MJ
CQk9IHNycF9zbGF2ZV9hbGxvYywNCiAJLnNsYXZlX2NvbmZpZ3VyZQkJPSBzcnBfc2xhdmVfY29u
ZmlndXJlLA0KIAkuaW5mbwkJCQk9IHNycF90YXJnZXRfaW5mbywNCkBAIC0zNTE1LDYgKzM1MjYs
NyBAQCBlbnVtIHsNCiAJU1JQX09QVF9RVUVVRV9TSVpFCT0gMSA8PCAxNCwNCiAJU1JQX09QVF9J
UF9TUkMJCT0gMSA8PCAxNSwNCiAJU1JQX09QVF9JUF9ERVNUCQk9IDEgPDwgMTYsDQorCVNSUF9P
UFRfVEFSR0VUX0NBTl9RVUVVRT0gMSA8PCAxNywNCiB9Ow0KIA0KIHN0YXRpYyB1bnNpZ25lZCBp
bnQgc3JwX29wdF9tYW5kYXRvcnlbXSA9IHsNCkBAIC0zNTM2LDYgKzM1NDgsNyBAQCBzdGF0aWMg
Y29uc3QgbWF0Y2hfdGFibGVfdCBzcnBfb3B0X3Rva2VucyA9IHsNCiAJeyBTUlBfT1BUX1NFUlZJ
Q0VfSUQsCQkic2VydmljZV9pZD0lcyIJCX0sDQogCXsgU1JQX09QVF9NQVhfU0VDVCwJCSJtYXhf
c2VjdD0lZCIgCQl9LA0KIAl7IFNSUF9PUFRfTUFYX0NNRF9QRVJfTFVOLAkibWF4X2NtZF9wZXJf
bHVuPSVkIiAJfSwNCisJeyBTUlBfT1BUX1RBUkdFVF9DQU5fUVVFVUUsCSJ0YXJnZXRfY2FuX3F1
ZXVlPSVkIgl9LA0KIAl7IFNSUF9PUFRfSU9fQ0xBU1MsCQkiaW9fY2xhc3M9JXgiCQl9LA0KIAl7
IFNSUF9PUFRfSU5JVElBVE9SX0VYVCwJImluaXRpYXRvcl9leHQ9JXMiCX0sDQogCXsgU1JQX09Q
VF9DTURfU0dfRU5UUklFUywJImNtZF9zZ19lbnRyaWVzPSV1Igl9LA0KQEAgLTM3MjQsNiArMzcz
NywxNSBAQCBzdGF0aWMgaW50IHNycF9wYXJzZV9vcHRpb25zKHN0cnVjdCBuZXQgKm5ldCwgY29u
c3QgY2hhciAqYnVmLA0KIAkJCXRhcmdldC0+c2NzaV9ob3N0LT5jbWRfcGVyX2x1biA9IHRva2Vu
Ow0KIAkJCWJyZWFrOw0KIA0KKwkJY2FzZSBTUlBfT1BUX1RBUkdFVF9DQU5fUVVFVUU6DQorCQkJ
aWYgKG1hdGNoX2ludChhcmdzLCAmdG9rZW4pIHx8IHRva2VuIDwgMSkgew0KKwkJCQlwcl93YXJu
KCJiYWQgbWF4IHRhcmdldF9jYW5fcXVldWUgcGFyYW1ldGVyICclcydcbiIsDQorCQkJCQlwKTsN
CisJCQkJZ290byBvdXQ7DQorCQkJfQ0KKwkJCXRhcmdldC0+dGFyZ2V0X2Nhbl9xdWV1ZSA9IHRv
a2VuOw0KKwkJCWJyZWFrOw0KKw0KIAkJY2FzZSBTUlBfT1BUX0lPX0NMQVNTOg0KIAkJCWlmICht
YXRjaF9oZXgoYXJncywgJnRva2VuKSkgew0KIAkJCQlwcl93YXJuKCJiYWQgSU8gY2xhc3MgcGFy
YW1ldGVyICclcydcbiIsIHApOw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAv
c3JwL2liX3NycC5oIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9zcnAvaWJfc3JwLmgNCmluZGV4
IGQ2NmM5MDU3ZDVlYS4uNzAzMzRmYTNkZThlIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9pbmZpbmli
YW5kL3VscC9zcnAvaWJfc3JwLmgNCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwL2li
X3NycC5oDQpAQCAtMjE2LDYgKzIxNiw3IEBAIHN0cnVjdCBzcnBfdGFyZ2V0X3BvcnQgew0KIAlj
aGFyCQkJdGFyZ2V0X25hbWVbMzJdOw0KIAl1bnNpZ25lZCBpbnQJCXNjc2lfaWQ7DQogCXVuc2ln
bmVkIGludAkJc2dfdGFibGVzaXplOw0KKwl1bnNpZ25lZCBpbnQJCXRhcmdldF9jYW5fcXVldWU7
DQogCWludAkJCW1yX3Bvb2xfc2l6ZTsNCiAJaW50CQkJbXJfcGVyX2NtZDsNCiAJaW50CQkJcXVl
dWVfc2l6ZTsNCg0KQmFydC4=

WARNING: multiple messages have this Message-ID (diff)
From: Bart Van Assche <Bart.VanAssche@wdc.com>
To: "snitzer@redhat.com" <snitzer@redhat.com>,
	"axboe@kernel.dk" <axboe@kernel.dk>,
	"loberman@redhat.com" <loberman@redhat.com>
Cc: "dm-devel@redhat.com" <dm-devel@redhat.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"hch@infradead.org" <hch@infradead.org>,
	"linux-block@vger.kernel.org" <linux-block@vger.kernel.org>,
	"osandov@fb.com" <osandov@fb.com>,
	"ming.lei@redhat.com" <ming.lei@redhat.com>
Subject: Re: [RFC PATCH] blk-mq: fixup RESTART when queue becomes idle
Date: Thu, 18 Jan 2018 22:55:03 +0000	[thread overview]
Message-ID: <1516316102.2676.97.camel@wdc.com> (raw)
In-Reply-To: <fef86285-f944-4404-f2be-33889f1e21d3@kernel.dk>

On Thu, 2018-01-18 at 15:39 -0700, Jens Axboe wrote:
> When you do have a solid test case, please please submit a blktests
> test case for it! This needs to be something we can regularly in
> testing.

Hello Jens,

That sounds like a good idea to me. BTW, I think the reason why so far I
can reproduce these queue stalls easier than others is because I modified the
SRP initiator to make it easy to cause the .get_budget() call to succeed and
the scsi_queue_rq() to return BLK_STS_BUSY. A possible next step is to apply
a similar change to the scsi_debug driver. The change I made is as follows:

diff --git a/drivers/infiniband/ulp/srp/ib_srp.c b/drivers/infiniband/ulp/srp/ib_srp.c
index 0c887ebfbc64..7f3c4a197425 100644
--- a/drivers/infiniband/ulp/srp/ib_srp.c
+++ b/drivers/infiniband/ulp/srp/ib_srp.c
@@ -3135,6 +3135,16 @@ static int srp_reset_host(struct scsi_cmnd *scmnd)
 	return srp_reconnect_rport(target->rport) == 0 ? SUCCESS : FAILED;
 }
 
+static int srp_target_alloc(struct scsi_target *starget)
+{
+	struct Scsi_Host *shost = dev_to_shost(starget->dev.parent);
+	struct srp_target_port *target = host_to_target(shost);
+
+	if (target->target_can_queue)
+		starget->can_queue = target->target_can_queue;
+	return 0;
+}
+
 static int srp_slave_alloc(struct scsi_device *sdev)
 {
 	struct Scsi_Host *shost = sdev->host;
@@ -3348,6 +3358,7 @@ static struct scsi_host_template srp_template = {
 	.module				= THIS_MODULE,
 	.name				= "InfiniBand SRP initiator",
 	.proc_name			= DRV_NAME,
+	.target_alloc			= srp_target_alloc,
 	.slave_alloc			= srp_slave_alloc,
 	.slave_configure		= srp_slave_configure,
 	.info				= srp_target_info,
@@ -3515,6 +3526,7 @@ enum {
 	SRP_OPT_QUEUE_SIZE	= 1 << 14,
 	SRP_OPT_IP_SRC		= 1 << 15,
 	SRP_OPT_IP_DEST		= 1 << 16,
+	SRP_OPT_TARGET_CAN_QUEUE= 1 << 17,
 };
 
 static unsigned int srp_opt_mandatory[] = {
@@ -3536,6 +3548,7 @@ static const match_table_t srp_opt_tokens = {
 	{ SRP_OPT_SERVICE_ID,		"service_id=%s"		},
 	{ SRP_OPT_MAX_SECT,		"max_sect=%d" 		},
 	{ SRP_OPT_MAX_CMD_PER_LUN,	"max_cmd_per_lun=%d" 	},
+	{ SRP_OPT_TARGET_CAN_QUEUE,	"target_can_queue=%d"	},
 	{ SRP_OPT_IO_CLASS,		"io_class=%x"		},
 	{ SRP_OPT_INITIATOR_EXT,	"initiator_ext=%s"	},
 	{ SRP_OPT_CMD_SG_ENTRIES,	"cmd_sg_entries=%u"	},
@@ -3724,6 +3737,15 @@ static int srp_parse_options(struct net *net, const char *buf,
 			target->scsi_host->cmd_per_lun = token;
 			break;
 
+		case SRP_OPT_TARGET_CAN_QUEUE:
+			if (match_int(args, &token) || token < 1) {
+				pr_warn("bad max target_can_queue parameter '%s'\n",
+					p);
+				goto out;
+			}
+			target->target_can_queue = token;
+			break;
+
 		case SRP_OPT_IO_CLASS:
 			if (match_hex(args, &token)) {
 				pr_warn("bad IO class parameter '%s'\n", p);
diff --git a/drivers/infiniband/ulp/srp/ib_srp.h b/drivers/infiniband/ulp/srp/ib_srp.h
index d66c9057d5ea..70334fa3de8e 100644
--- a/drivers/infiniband/ulp/srp/ib_srp.h
+++ b/drivers/infiniband/ulp/srp/ib_srp.h
@@ -216,6 +216,7 @@ struct srp_target_port {
 	char			target_name[32];
 	unsigned int		scsi_id;
 	unsigned int		sg_tablesize;
+	unsigned int		target_can_queue;
 	int			mr_pool_size;
 	int			mr_per_cmd;
 	int			queue_size;

Bart.

  reply	other threads:[~2018-01-18 22:55 UTC|newest]

Thread overview: 80+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-18  2:41 [RFC PATCH] blk-mq: fixup RESTART when queue becomes idle Ming Lei
2018-01-18 16:50 ` Bart Van Assche
2018-01-18 17:03   ` Mike Snitzer
2018-01-18 17:03     ` Mike Snitzer
2018-01-18 17:20     ` Bart Van Assche
2018-01-18 17:20       ` Bart Van Assche
2018-01-18 18:30       ` Mike Snitzer
2018-01-18 18:47         ` Bart Van Assche
2018-01-18 18:47           ` Bart Van Assche
2018-01-18 20:11           ` Jens Axboe
2018-01-18 20:11             ` Jens Axboe
2018-01-18 20:48             ` Mike Snitzer
2018-01-18 20:58               ` Bart Van Assche
2018-01-18 20:58                 ` Bart Van Assche
2018-01-18 21:23                 ` Mike Snitzer
2018-01-18 21:23                   ` Mike Snitzer
2018-01-18 21:37                   ` Laurence Oberman
2018-01-18 21:39                   ` [dm-devel] " Bart Van Assche
2018-01-18 21:39                     ` Bart Van Assche
2018-01-18 21:45                     ` Laurence Oberman
2018-01-18 21:45                       ` Laurence Oberman
2018-01-18 22:01                     ` Mike Snitzer
2018-01-18 22:18                       ` Laurence Oberman
2018-01-18 22:20                         ` Laurence Oberman
2018-01-18 22:20                           ` Laurence Oberman
2018-01-18 22:24                         ` Bart Van Assche
2018-01-18 22:24                           ` Bart Van Assche
2018-01-18 22:35                           ` Laurence Oberman
2018-01-18 22:39                             ` Jens Axboe
2018-01-18 22:55                               ` Bart Van Assche [this message]
2018-01-18 22:55                                 ` Bart Van Assche
2018-01-18 22:20                       ` Bart Van Assche
2018-01-18 22:20                         ` Bart Van Assche
2018-01-23  9:22                         ` [PATCH] block: neutralize blk_insert_cloned_request IO stall regression (was: Re: [RFC PATCH] blk-mq: fixup RESTART when queue becomes idle) Mike Snitzer
2018-01-23 10:53                           ` Ming Lei
2018-01-23 12:15                             ` Mike Snitzer
2018-01-23 12:17                               ` Ming Lei
2018-01-23 12:43                                 ` Mike Snitzer
2018-01-23 16:43                           ` [PATCH] " Bart Van Assche
2018-01-23 16:43                             ` Bart Van Assche
2018-01-19  2:32             ` [RFC PATCH] blk-mq: fixup RESTART when queue becomes idle Ming Lei
2018-01-19  4:02               ` Jens Axboe
2018-01-19  7:26                 ` Ming Lei
2018-01-19 15:20                   ` Bart Van Assche
2018-01-19 15:20                     ` Bart Van Assche
2018-01-19 15:25                     ` Jens Axboe
2018-01-19 15:33                     ` Ming Lei
2018-01-19 16:06                       ` Bart Van Assche
2018-01-19 16:06                         ` Bart Van Assche
2018-01-19 15:24                   ` Jens Axboe
2018-01-19 15:40                     ` Ming Lei
2018-01-19 15:40                       ` Ming Lei
2018-01-19 15:48                       ` Jens Axboe
2018-01-19 16:05                         ` Ming Lei
2018-01-19 16:19                           ` Jens Axboe
2018-01-19 16:26                             ` Ming Lei
2018-01-19 16:27                               ` Jens Axboe
2018-01-19 16:37                                 ` Ming Lei
2018-01-19 16:41                                   ` Jens Axboe
2018-01-19 16:41                                     ` Jens Axboe
2018-01-19 16:47                                     ` Mike Snitzer
2018-01-19 16:52                                       ` Jens Axboe
2018-01-19 17:05                                         ` Ming Lei
2018-01-19 17:09                                           ` Jens Axboe
2018-01-19 17:20                                             ` Ming Lei
2018-01-19 17:38                                   ` Jens Axboe
2018-01-19 18:24                                     ` Ming Lei
2018-01-19 18:24                                       ` Ming Lei
2018-01-19 18:33                                     ` Mike Snitzer
2018-01-19 23:52                                     ` Ming Lei
2018-01-20  4:27                                       ` Jens Axboe
2018-01-19 16:13                         ` Mike Snitzer
2018-01-19 16:23                           ` Jens Axboe
2018-01-19 23:57                             ` Ming Lei
2018-01-29 22:37                     ` Bart Van Assche
2018-01-19  5:09               ` Bart Van Assche
2018-01-19  5:09                 ` Bart Van Assche
2018-01-19  7:34                 ` Ming Lei
2018-01-19 19:47                   ` Bart Van Assche
2018-01-19 19:47                     ` Bart Van Assche

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1516316102.2676.97.camel@wdc.com \
    --to=bart.vanassche@wdc.com \
    --cc=axboe@kernel.dk \
    --cc=dm-devel@redhat.com \
    --cc=hch@infradead.org \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=loberman@redhat.com \
    --cc=ming.lei@redhat.com \
    --cc=osandov@fb.com \
    --cc=snitzer@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.