Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 68800
b: refs/heads/master
c: aebd5e4
h: refs/heads/master
v: v3
  • Loading branch information
FUJITA Tomonori authored and James Bottomley committed Oct 12, 2007
1 parent 3f76141 commit 12d7c90
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 2 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: 3236822b1c9b67ad10745d965515b528818f1120
refs/heads/master: aebd5e476ecc8ceb53577b20f2a352ff4ceffd8d
1 change: 1 addition & 0 deletions trunk/drivers/infiniband/ulp/srp/ib_srp.c
Original file line number Diff line number Diff line change
Expand Up @@ -1545,6 +1545,7 @@ static int srp_add_target(struct srp_host *host, struct srp_target_port *target)

memcpy(ids.port_id, &target->id_ext, 8);
memcpy(ids.port_id + 8, &target->ioc_guid, 8);
ids.roles = SRP_RPORT_ROLE_TARGET;
rport = srp_rport_add(target->scsi_host, &ids);
if (IS_ERR(rport)) {
scsi_remove_host(target->scsi_host);
Expand Down
1 change: 1 addition & 0 deletions trunk/drivers/scsi/ibmvscsi/ibmvscsi.c
Original file line number Diff line number Diff line change
Expand Up @@ -1599,6 +1599,7 @@ static int ibmvscsi_probe(struct vio_dev *vdev, const struct vio_device_id *id)
/* we don't have a proper target_port_id so let's use the fake one */
memcpy(ids.port_id, hostdata->madapter_info.partition_name,
sizeof(ids.port_id));
ids.roles = SRP_RPORT_ROLE_TARGET;
rport = srp_rport_add(host, &ids);
if (IS_ERR(rport))
goto add_srp_port_failed;
Expand Down
29 changes: 28 additions & 1 deletion trunk/drivers/scsi/scsi_transport_srp.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ struct srp_host_attrs {
#define to_srp_host_attrs(host) ((struct srp_host_attrs *)(host)->shost_data)

#define SRP_HOST_ATTRS 0
#define SRP_RPORT_ATTRS 3
#define SRP_RPORT_ATTRS 2

struct srp_internal {
struct scsi_transport_template t;
Expand Down Expand Up @@ -107,6 +107,31 @@ show_srp_rport_id(struct class_device *cdev, char *buf)

static CLASS_DEVICE_ATTR(port_id, S_IRUGO, show_srp_rport_id, NULL);

static const struct {
u32 value;
char *name;
} srp_rport_role_names[] = {
{SRP_RPORT_ROLE_INITIATOR, "SRP Initiator"},
{SRP_RPORT_ROLE_TARGET, "SRP Target"},
};

static ssize_t
show_srp_rport_roles(struct class_device *cdev, char *buf)
{
struct srp_rport *rport = transport_class_to_srp_rport(cdev);
int i;
char *name = NULL;

for (i = 0; i < ARRAY_SIZE(srp_rport_role_names); i++)
if (srp_rport_role_names[i].value == rport->roles) {
name = srp_rport_role_names[i].name;
break;
}
return sprintf(buf, "%s\n", name ? : "unknown");
}

static CLASS_DEVICE_ATTR(roles, S_IRUGO, show_srp_rport_roles, NULL);

static void srp_rport_release(struct device *dev)
{
struct srp_rport *rport = dev_to_rport(dev);
Expand Down Expand Up @@ -182,6 +207,7 @@ struct srp_rport *srp_rport_add(struct Scsi_Host *shost,
rport->dev.release = srp_rport_release;

memcpy(rport->port_id, ids->port_id, sizeof(rport->port_id));
rport->roles = ids->roles;

id = atomic_inc_return(&to_srp_host_attrs(shost)->next_port_id);
sprintf(rport->dev.bus_id, "port-%d:%d", shost->host_no, id);
Expand Down Expand Up @@ -266,6 +292,7 @@ srp_attach_transport(struct srp_function_template *ft)

count = 0;
SETUP_RPORT_ATTRIBUTE_RD(port_id);
SETUP_RPORT_ATTRIBUTE_RD(roles);
i->rport_attrs[count] = NULL;

i->f = ft;
Expand Down
5 changes: 5 additions & 0 deletions trunk/include/scsi/scsi_transport_srp.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,19 @@
#include <linux/types.h>
#include <linux/mutex.h>

#define SRP_RPORT_ROLE_INITIATOR 0
#define SRP_RPORT_ROLE_TARGET 1

struct srp_rport_identifiers {
u8 port_id[16];
u8 roles;
};

struct srp_rport {
struct device dev;

u8 port_id[16];
u8 roles;
};

struct srp_function_template {
Expand Down

0 comments on commit 12d7c90

Please sign in to comment.