Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 291996
b: refs/heads/master
c: a776ce7
h: refs/heads/master
v: v3
  • Loading branch information
Masanari Iida authored and Roland Dreier committed Feb 26, 2012
1 parent 60ffad8 commit 8e5ab77
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 48 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 683b159a2eef6544d49020eb9c88a94157df7d2d
refs/heads/master: a776ce7cfc905a1f8ebf9f7e87f0ba705e7efaef
103 changes: 57 additions & 46 deletions trunk/drivers/infiniband/ulp/srp/ib_srp.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,6 @@
* SOFTWARE.
*/

#define pr_fmt(fmt) PFX fmt

#include <linux/module.h>
#include <linux/init.h>
#include <linux/slab.h>
Expand Down Expand Up @@ -167,7 +165,7 @@ static void srp_free_iu(struct srp_host *host, struct srp_iu *iu)

static void srp_qp_event(struct ib_event *event, void *context)
{
pr_debug("QP event %d\n", event->event);
printk(KERN_ERR PFX "QP event %d\n", event->event);
}

static int srp_init_qp(struct srp_target_port *target,
Expand Down Expand Up @@ -474,21 +472,6 @@ static void srp_free_req_data(struct srp_target_port *target)
}
}

/**
* srp_del_scsi_host_attr() - Remove attributes defined in the host template.
* @shost: SCSI host whose attributes to remove from sysfs.
*
* Note: Any attributes defined in the host template and that did not exist
* before invocation of this function will be ignored.
*/
static void srp_del_scsi_host_attr(struct Scsi_Host *shost)
{
struct device_attribute **attr;

for (attr = shost->hostt->shost_attrs; attr && *attr; ++attr)
device_remove_file(&shost->shost_dev, *attr);
}

static void srp_remove_work(struct work_struct *work)
{
struct srp_target_port *target =
Expand All @@ -501,7 +484,6 @@ static void srp_remove_work(struct work_struct *work)
list_del(&target->list);
spin_unlock(&target->srp_host->target_lock);

srp_del_scsi_host_attr(target->scsi_host);
srp_remove_host(target->scsi_host);
scsi_remove_host(target->scsi_host);
ib_destroy_cm_id(target->cm_id);
Expand Down Expand Up @@ -1694,6 +1676,10 @@ static ssize_t show_id_ext(struct device *dev, struct device_attribute *attr,
{
struct srp_target_port *target = host_to_target(class_to_shost(dev));

if (target->state == SRP_TARGET_DEAD ||
target->state == SRP_TARGET_REMOVED)
return -ENODEV;

return sprintf(buf, "0x%016llx\n",
(unsigned long long) be64_to_cpu(target->id_ext));
}
Expand All @@ -1703,6 +1689,10 @@ static ssize_t show_ioc_guid(struct device *dev, struct device_attribute *attr,
{
struct srp_target_port *target = host_to_target(class_to_shost(dev));

if (target->state == SRP_TARGET_DEAD ||
target->state == SRP_TARGET_REMOVED)
return -ENODEV;

return sprintf(buf, "0x%016llx\n",
(unsigned long long) be64_to_cpu(target->ioc_guid));
}
Expand All @@ -1712,6 +1702,10 @@ static ssize_t show_service_id(struct device *dev,
{
struct srp_target_port *target = host_to_target(class_to_shost(dev));

if (target->state == SRP_TARGET_DEAD ||
target->state == SRP_TARGET_REMOVED)
return -ENODEV;

return sprintf(buf, "0x%016llx\n",
(unsigned long long) be64_to_cpu(target->service_id));
}
Expand All @@ -1721,6 +1715,10 @@ static ssize_t show_pkey(struct device *dev, struct device_attribute *attr,
{
struct srp_target_port *target = host_to_target(class_to_shost(dev));

if (target->state == SRP_TARGET_DEAD ||
target->state == SRP_TARGET_REMOVED)
return -ENODEV;

return sprintf(buf, "0x%04x\n", be16_to_cpu(target->path.pkey));
}

Expand All @@ -1729,6 +1727,10 @@ static ssize_t show_dgid(struct device *dev, struct device_attribute *attr,
{
struct srp_target_port *target = host_to_target(class_to_shost(dev));

if (target->state == SRP_TARGET_DEAD ||
target->state == SRP_TARGET_REMOVED)
return -ENODEV;

return sprintf(buf, "%pI6\n", target->path.dgid.raw);
}

Expand All @@ -1737,6 +1739,10 @@ static ssize_t show_orig_dgid(struct device *dev,
{
struct srp_target_port *target = host_to_target(class_to_shost(dev));

if (target->state == SRP_TARGET_DEAD ||
target->state == SRP_TARGET_REMOVED)
return -ENODEV;

return sprintf(buf, "%pI6\n", target->orig_dgid);
}

Expand All @@ -1745,6 +1751,10 @@ static ssize_t show_req_lim(struct device *dev,
{
struct srp_target_port *target = host_to_target(class_to_shost(dev));

if (target->state == SRP_TARGET_DEAD ||
target->state == SRP_TARGET_REMOVED)
return -ENODEV;

return sprintf(buf, "%d\n", target->req_lim);
}

Expand All @@ -1753,6 +1763,10 @@ static ssize_t show_zero_req_lim(struct device *dev,
{
struct srp_target_port *target = host_to_target(class_to_shost(dev));

if (target->state == SRP_TARGET_DEAD ||
target->state == SRP_TARGET_REMOVED)
return -ENODEV;

return sprintf(buf, "%d\n", target->zero_req_lim);
}

Expand Down Expand Up @@ -1975,7 +1989,7 @@ static int srp_parse_options(const char *buf, struct srp_target_port *target)
goto out;
}
if (strlen(p) != 32) {
pr_warn("bad dest GID parameter '%s'\n", p);
printk(KERN_WARNING PFX "bad dest GID parameter '%s'\n", p);
kfree(p);
goto out;
}
Expand All @@ -1990,7 +2004,7 @@ static int srp_parse_options(const char *buf, struct srp_target_port *target)

case SRP_OPT_PKEY:
if (match_hex(args, &token)) {
pr_warn("bad P_Key parameter '%s'\n", p);
printk(KERN_WARNING PFX "bad P_Key parameter '%s'\n", p);
goto out;
}
target->path.pkey = cpu_to_be16(token);
Expand All @@ -2009,31 +2023,30 @@ static int srp_parse_options(const char *buf, struct srp_target_port *target)

case SRP_OPT_MAX_SECT:
if (match_int(args, &token)) {
pr_warn("bad max sect parameter '%s'\n", p);
printk(KERN_WARNING PFX "bad max sect parameter '%s'\n", p);
goto out;
}
target->scsi_host->max_sectors = token;
break;

case SRP_OPT_MAX_CMD_PER_LUN:
if (match_int(args, &token)) {
pr_warn("bad max cmd_per_lun parameter '%s'\n",
p);
printk(KERN_WARNING PFX "bad max cmd_per_lun parameter '%s'\n", p);
goto out;
}
target->scsi_host->cmd_per_lun = min(token, SRP_CMD_SQ_SIZE);
break;

case SRP_OPT_IO_CLASS:
if (match_hex(args, &token)) {
pr_warn("bad IO class parameter '%s'\n", p);
printk(KERN_WARNING PFX "bad IO class parameter '%s' \n", p);
goto out;
}
if (token != SRP_REV10_IB_IO_CLASS &&
token != SRP_REV16A_IB_IO_CLASS) {
pr_warn("unknown IO class parameter value %x specified (use %x or %x).\n",
token, SRP_REV10_IB_IO_CLASS,
SRP_REV16A_IB_IO_CLASS);
printk(KERN_WARNING PFX "unknown IO class parameter value"
" %x specified (use %x or %x).\n",
token, SRP_REV10_IB_IO_CLASS, SRP_REV16A_IB_IO_CLASS);
goto out;
}
target->io_class = token;
Expand All @@ -2051,16 +2064,15 @@ static int srp_parse_options(const char *buf, struct srp_target_port *target)

case SRP_OPT_CMD_SG_ENTRIES:
if (match_int(args, &token) || token < 1 || token > 255) {
pr_warn("bad max cmd_sg_entries parameter '%s'\n",
p);
printk(KERN_WARNING PFX "bad max cmd_sg_entries parameter '%s'\n", p);
goto out;
}
target->cmd_sg_cnt = token;
break;

case SRP_OPT_ALLOW_EXT_SG:
if (match_int(args, &token)) {
pr_warn("bad allow_ext_sg parameter '%s'\n", p);
printk(KERN_WARNING PFX "bad allow_ext_sg parameter '%s'\n", p);
goto out;
}
target->allow_ext_sg = !!token;
Expand All @@ -2069,16 +2081,15 @@ static int srp_parse_options(const char *buf, struct srp_target_port *target)
case SRP_OPT_SG_TABLESIZE:
if (match_int(args, &token) || token < 1 ||
token > SCSI_MAX_SG_CHAIN_SEGMENTS) {
pr_warn("bad max sg_tablesize parameter '%s'\n",
p);
printk(KERN_WARNING PFX "bad max sg_tablesize parameter '%s'\n", p);
goto out;
}
target->sg_tablesize = token;
break;

default:
pr_warn("unknown parameter or missing value '%s' in target creation request\n",
p);
printk(KERN_WARNING PFX "unknown parameter or missing value "
"'%s' in target creation request\n", p);
goto out;
}
}
Expand All @@ -2089,8 +2100,9 @@ static int srp_parse_options(const char *buf, struct srp_target_port *target)
for (i = 0; i < ARRAY_SIZE(srp_opt_tokens); ++i)
if ((srp_opt_tokens[i].token & SRP_OPT_ALL) &&
!(srp_opt_tokens[i].token & opt_mask))
pr_warn("target creation request is missing parameter '%s'\n",
srp_opt_tokens[i].pattern);
printk(KERN_WARNING PFX "target creation request is "
"missing parameter '%s'\n",
srp_opt_tokens[i].pattern);

out:
kfree(options);
Expand Down Expand Up @@ -2137,7 +2149,7 @@ static ssize_t srp_create_target(struct device *dev,

if (!host->srp_dev->fmr_pool && !target->allow_ext_sg &&
target->cmd_sg_cnt < target->sg_tablesize) {
pr_warn("No FMR pool and no external indirect descriptors, limiting sg_tablesize to cmd_sg_cnt\n");
printk(KERN_WARNING PFX "No FMR pool and no external indirect descriptors, limiting sg_tablesize to cmd_sg_cnt\n");
target->sg_tablesize = target->cmd_sg_cnt;
}

Expand Down Expand Up @@ -2297,7 +2309,8 @@ static void srp_add_one(struct ib_device *device)
return;

if (ib_query_device(device, dev_attr)) {
pr_warn("Query device failed for %s\n", device->name);
printk(KERN_WARNING PFX "Query device failed for %s\n",
device->name);
goto free_attr;
}

Expand Down Expand Up @@ -2416,7 +2429,6 @@ static void srp_remove_one(struct ib_device *device)

list_for_each_entry_safe(target, tmp_target,
&host->target_list, list) {
srp_del_scsi_host_attr(target->scsi_host);
srp_remove_host(target->scsi_host);
scsi_remove_host(target->scsi_host);
srp_disconnect_target(target);
Expand Down Expand Up @@ -2447,7 +2459,7 @@ static int __init srp_init_module(void)
BUILD_BUG_ON(FIELD_SIZEOF(struct ib_wc, wr_id) < sizeof(void *));

if (srp_sg_tablesize) {
pr_warn("srp_sg_tablesize is deprecated, please use cmd_sg_entries\n");
printk(KERN_WARNING PFX "srp_sg_tablesize is deprecated, please use cmd_sg_entries\n");
if (!cmd_sg_entries)
cmd_sg_entries = srp_sg_tablesize;
}
Expand All @@ -2456,15 +2468,14 @@ static int __init srp_init_module(void)
cmd_sg_entries = SRP_DEF_SG_TABLESIZE;

if (cmd_sg_entries > 255) {
pr_warn("Clamping cmd_sg_entries to 255\n");
printk(KERN_WARNING PFX "Clamping cmd_sg_entries to 255\n");
cmd_sg_entries = 255;
}

if (!indirect_sg_entries)
indirect_sg_entries = cmd_sg_entries;
else if (indirect_sg_entries < cmd_sg_entries) {
pr_warn("Bumping up indirect_sg_entries to match cmd_sg_entries (%u)\n",
cmd_sg_entries);
printk(KERN_WARNING PFX "Bumping up indirect_sg_entries to match cmd_sg_entries (%u)\n", cmd_sg_entries);
indirect_sg_entries = cmd_sg_entries;
}

Expand All @@ -2475,7 +2486,7 @@ static int __init srp_init_module(void)

ret = class_register(&srp_class);
if (ret) {
pr_err("couldn't register class infiniband_srp\n");
printk(KERN_ERR PFX "couldn't register class infiniband_srp\n");
srp_release_transport(ib_srp_transport_template);
return ret;
}
Expand All @@ -2484,7 +2495,7 @@ static int __init srp_init_module(void)

ret = ib_register_client(&srp_client);
if (ret) {
pr_err("couldn't register IB client\n");
printk(KERN_ERR PFX "couldn't register IB client\n");
srp_release_transport(ib_srp_transport_template);
ib_sa_unregister_client(&srp_sa_client);
class_unregister(&srp_class);
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/infiniband/ulp/srpt/ib_srpt.c
Original file line number Diff line number Diff line change
Expand Up @@ -3450,7 +3450,7 @@ static struct se_node_acl *srpt_alloc_fabric_acl(struct se_portal_group *se_tpg)

nacl = kzalloc(sizeof(struct srpt_node_acl), GFP_KERNEL);
if (!nacl) {
printk(KERN_ERR "Unable to alocate struct srpt_node_acl\n");
printk(KERN_ERR "Unable to allocate struct srpt_node_acl\n");
return NULL;
}

Expand Down

0 comments on commit 8e5ab77

Please sign in to comment.