* [PATCH 3/6] SRP implement device_loss_timeout per target
@ 2009-11-09 21:32 Vu Pham
0 siblings, 0 replies; only message in thread
From: Vu Pham @ 2009-11-09 21:32 UTC (permalink / raw)
To: Linux RDMA list; +Cc: Roland Dreier
[-- Attachment #1: Type: text/plain, Size: 295 bytes --]
Introducing device_loss_timeout per target granuality.
SRP driver will propagate I/O errors and clean up connection resources after
device_loss_timeout expired when local port or target port disconnected from
the fabric.
Signed-off-by: Vu Pham <vu-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
[-- Attachment #2: srp_3_device_loss_timeout.patch --]
[-- Type: text/plain, Size: 2009 bytes --]
drivers/infiniband/ulp/srp/ib_srp.c | 12 +++++++++++-
drivers/infiniband/ulp/srp/ib_srp.h | 1 +
2 files changed, 12 insertions(+), 1 deletions(-)
diff --git a/drivers/infiniband/ulp/srp/ib_srp.c b/drivers/infiniband/ulp/srp/ib_srp.c
index e44939a..047d488 100644
--- a/drivers/infiniband/ulp/srp/ib_srp.c
+++ b/drivers/infiniband/ulp/srp/ib_srp.c
@@ -1298,7 +1298,6 @@ static int srp_cm_handler(struct ib_cm_id *cm_id, struct ib_cm_event *event)
case IB_CM_TIMEWAIT_EXIT:
shost_printk(KERN_ERR, target->scsi_host,
PFX "connection closed\n");
-
target->status = 0;
break;
@@ -1657,6 +1656,7 @@ enum {
SRP_OPT_MAX_CMD_PER_LUN = 1 << 6,
SRP_OPT_IO_CLASS = 1 << 7,
SRP_OPT_INITIATOR_EXT = 1 << 8,
+ SRP_OPT_DEVICE_LOSS_TMO = 1 << 9,
SRP_OPT_ALL = (SRP_OPT_ID_EXT |
SRP_OPT_IOC_GUID |
SRP_OPT_DGID |
@@ -1674,6 +1674,7 @@ static const match_table_t srp_opt_tokens = {
{ SRP_OPT_MAX_CMD_PER_LUN, "max_cmd_per_lun=%d" },
{ SRP_OPT_IO_CLASS, "io_class=%x" },
{ SRP_OPT_INITIATOR_EXT, "initiator_ext=%s" },
+ { SRP_OPT_DEVICE_LOSS_TMO, "device_loss_timeout=%d"},
{ SRP_OPT_ERR, NULL }
};
@@ -1801,6 +1802,15 @@ static int srp_parse_options(const char *buf, struct srp_target_port *target)
kfree(p);
break;
+ case SRP_OPT_DEVICE_LOSS_TMO:
+ if (match_int(args, &token)) {
+ printk(KERN_WARNING PFX "bad device loss timeout '%s'\n", p);
+ goto out;
+ }
+ if (token > 0)
+ target->device_loss_timeout = token;
+ break;
+
default:
printk(KERN_WARNING PFX "unknown parameter or missing value "
"'%s' in target creation request\n", p);
diff --git a/drivers/infiniband/ulp/srp/ib_srp.h b/drivers/infiniband/ulp/srp/ib_srp.h
index e185b90..92db025 100644
--- a/drivers/infiniband/ulp/srp/ib_srp.h
+++ b/drivers/infiniband/ulp/srp/ib_srp.h
@@ -159,6 +159,7 @@ struct srp_target_port {
int status;
enum srp_target_state state;
int qp_in_error;
+ int device_loss_timeout;
};
struct srp_iu {
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2009-11-09 21:32 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-11-09 21:32 [PATCH 3/6] SRP implement device_loss_timeout per target Vu Pham
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox