[SCSI] iscsi class: remove iface param mask
We can replace the iface param mask with the attr_is_visible callback. Signed-off-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:
Родитель
1d063c1729
Коммит
b78dbba005
|
@ -141,17 +141,6 @@ static struct iscsi_transport qla4xxx_iscsi_transport = {
|
|||
.host_param_mask = ISCSI_HOST_HWADDRESS |
|
||||
ISCSI_HOST_IPADDRESS |
|
||||
ISCSI_HOST_INITIATOR_NAME,
|
||||
.iface_param_mask = ISCSI_NET_IPV4_ADDR |
|
||||
ISCSI_NET_IPV4_SUBNET |
|
||||
ISCSI_NET_IPV4_GW |
|
||||
ISCSI_NET_IPV4_BOOTPROTO |
|
||||
ISCSI_NET_IFACE_ENABLE |
|
||||
ISCSI_NET_IPV6_LINKLOCAL |
|
||||
ISCSI_NET_IPV6_ADDR |
|
||||
ISCSI_NET_IPV6_ROUTER |
|
||||
ISCSI_NET_IPV6_ADDR_AUTOCFG |
|
||||
ISCSI_NET_IPV6_LINKLOCAL_AUTOCFG |
|
||||
ISCSI_NET_IFACE_ENABLE,
|
||||
.tgt_dscvr = qla4xxx_tgt_dscvr,
|
||||
.attr_is_visible = ql4_attr_is_visible,
|
||||
.get_conn_param = qla4xxx_conn_get_param,
|
||||
|
@ -178,6 +167,22 @@ static mode_t ql4_attr_is_visible(int param_type, int param)
|
|||
default:
|
||||
return 0;
|
||||
}
|
||||
case ISCSI_NET_PARAM:
|
||||
switch (param) {
|
||||
case ISCSI_NET_PARAM_IPV4_ADDR:
|
||||
case ISCSI_NET_PARAM_IPV4_SUBNET:
|
||||
case ISCSI_NET_PARAM_IPV4_GW:
|
||||
case ISCSI_NET_PARAM_IPV4_BOOTPROTO:
|
||||
case ISCSI_NET_PARAM_IFACE_ENABLE:
|
||||
case ISCSI_NET_PARAM_IPV6_LINKLOCAL:
|
||||
case ISCSI_NET_PARAM_IPV6_ADDR:
|
||||
case ISCSI_NET_PARAM_IPV6_ROUTER:
|
||||
case ISCSI_NET_PARAM_IPV6_ADDR_AUTOCFG:
|
||||
case ISCSI_NET_PARAM_IPV6_LINKLOCAL_AUTOCFG:
|
||||
return S_IRUGO;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -329,45 +329,42 @@ static mode_t iscsi_iface_attr_is_visible(struct kobject *kobj,
|
|||
struct device *dev = container_of(kobj, struct device, kobj);
|
||||
struct iscsi_iface *iface = iscsi_dev_to_iface(dev);
|
||||
struct iscsi_transport *t = iface->transport;
|
||||
int param;
|
||||
|
||||
if (attr == &dev_attr_iface_enabled.attr)
|
||||
return (t->iface_param_mask & ISCSI_NET_IFACE_ENABLE) ?
|
||||
S_IRUGO : 0;
|
||||
param = ISCSI_NET_PARAM_IFACE_ENABLE;
|
||||
else if (attr == &dev_attr_iface_vlan.attr)
|
||||
return (t->iface_param_mask & ISCSI_NET_VLAN_ID) ? S_IRUGO : 0;
|
||||
|
||||
if (iface->iface_type == ISCSI_IFACE_TYPE_IPV4) {
|
||||
param = ISCSI_NET_PARAM_VLAN_ID;
|
||||
else if (iface->iface_type == ISCSI_IFACE_TYPE_IPV4) {
|
||||
if (attr == &dev_attr_ipv4_iface_ipaddress.attr)
|
||||
return (t->iface_param_mask & ISCSI_NET_IPV4_ADDR) ?
|
||||
S_IRUGO : 0;
|
||||
param = ISCSI_NET_PARAM_IPV4_ADDR;
|
||||
else if (attr == &dev_attr_ipv4_iface_gateway.attr)
|
||||
return (t->iface_param_mask & ISCSI_NET_IPV4_GW) ?
|
||||
S_IRUGO : 0;
|
||||
param = ISCSI_NET_PARAM_IPV4_GW;
|
||||
else if (attr == &dev_attr_ipv4_iface_subnet.attr)
|
||||
return (t->iface_param_mask & ISCSI_NET_IPV4_SUBNET) ?
|
||||
S_IRUGO : 0;
|
||||
param = ISCSI_NET_PARAM_IPV4_SUBNET;
|
||||
else if (attr == &dev_attr_ipv4_iface_bootproto.attr)
|
||||
return (t->iface_param_mask & ISCSI_NET_IPV4_BOOTPROTO) ?
|
||||
S_IRUGO : 0;
|
||||
param = ISCSI_NET_PARAM_IPV4_BOOTPROTO;
|
||||
else
|
||||
return 0;
|
||||
} else if (iface->iface_type == ISCSI_IFACE_TYPE_IPV6) {
|
||||
if (attr == &dev_attr_ipv6_iface_ipaddress.attr)
|
||||
return (t->iface_param_mask & ISCSI_NET_IPV6_ADDR) ?
|
||||
S_IRUGO : 0;
|
||||
param = ISCSI_NET_PARAM_IPV6_ADDR;
|
||||
else if (attr == &dev_attr_ipv6_iface_link_local_addr.attr)
|
||||
return (t->iface_param_mask & ISCSI_NET_IPV6_LINKLOCAL) ?
|
||||
S_IRUGO : 0;
|
||||
param = ISCSI_NET_PARAM_IPV6_LINKLOCAL;
|
||||
else if (attr == &dev_attr_ipv6_iface_router_addr.attr)
|
||||
return (t->iface_param_mask & ISCSI_NET_IPV6_ROUTER) ?
|
||||
S_IRUGO : 0;
|
||||
param = ISCSI_NET_PARAM_IPV6_ROUTER;
|
||||
else if (attr == &dev_attr_ipv6_iface_ipaddr_autocfg.attr)
|
||||
return (t->iface_param_mask & ISCSI_NET_IPV6_ADDR_AUTOCFG) ?
|
||||
S_IRUGO : 0;
|
||||
param = ISCSI_NET_PARAM_IPV6_ADDR_AUTOCFG;
|
||||
else if (attr == &dev_attr_ipv6_iface_linklocal_autocfg.attr)
|
||||
return (t->iface_param_mask & ISCSI_NET_IPV6_LINKLOCAL_AUTOCFG) ?
|
||||
S_IRUGO : 0;
|
||||
param = ISCSI_NET_PARAM_IPV6_LINKLOCAL_AUTOCFG;
|
||||
else
|
||||
return 0;
|
||||
} else {
|
||||
WARN_ONCE(1, "Invalid iface attr");
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return t->attr_is_visible(ISCSI_NET_PARAM, param);
|
||||
}
|
||||
|
||||
static struct attribute *iscsi_iface_attrs[] = {
|
||||
|
|
|
@ -300,23 +300,6 @@ enum iscsi_net_param {
|
|||
ISCSI_NET_PARAM_IFACE_NAME = 15,
|
||||
};
|
||||
|
||||
#define ISCSI_NET_IPV4_ADDR (1ULL << ISCSI_NET_PARAM_IPV4_ADDR)
|
||||
#define ISCSI_NET_IPV4_SUBNET (1ULL << ISCSI_NET_PARAM_IPV4_SUBNET)
|
||||
#define ISCSI_NET_IPV4_GW (1ULL << ISCSI_NET_PARAM_IPV4_GW)
|
||||
#define ISCSI_NET_IPV4_BOOTPROTO (1ULL << ISCSI_NET_PARAM_IPV4_BOOTPROTO)
|
||||
#define ISCSI_NET_MAC (1ULL << ISCSI_NET_PARAM_MAC)
|
||||
#define ISCSI_NET_IPV6_LINKLOCAL (1ULL << ISCSI_NET_PARAM_IPV6_LINKLOCAL)
|
||||
#define ISCSI_NET_IPV6_ADDR (1ULL << ISCSI_NET_PARAM_IPV6_ADDR)
|
||||
#define ISCSI_NET_IPV6_ROUTER (1ULL << ISCSI_NET_PARAM_IPV6_ROUTER)
|
||||
#define ISCSI_NET_IPV6_ADDR_AUTOCFG \
|
||||
(1ULL << ISCSI_NET_PARAM_IPV6_ADDR_AUTOCFG)
|
||||
#define ISCSI_NET_IPV6_LINKLOCAL_AUTOCFG \
|
||||
(1ULL << ISCSI_NET_PARAM_IPV6_LINKLOCAL_AUTOCFG)
|
||||
#define ISCSI_NET_IPV6_ROUTER_AUTOCFG \
|
||||
(1ULL << ISCSI_NET_PARAM_IPV6_ROUTER_AUTOCFG)
|
||||
#define ISCSI_NET_IFACE_ENABLE (1ULL << ISCSI_NET_PARAM_IFACE_ENABLE)
|
||||
#define ISCSI_NET_VLAN_ID (1ULL << ISCSI_NET_PARAM_VLAN_ID)
|
||||
|
||||
/*
|
||||
* Common error codes
|
||||
*/
|
||||
|
|
|
@ -87,7 +87,6 @@ struct iscsi_transport {
|
|||
unsigned int caps;
|
||||
/* LLD sets this to indicate what values it can export to sysfs */
|
||||
uint64_t host_param_mask;
|
||||
uint64_t iface_param_mask;
|
||||
|
||||
struct iscsi_cls_session *(*create_session) (struct iscsi_endpoint *ep,
|
||||
uint16_t cmds_max, uint16_t qdepth,
|
||||
|
|
Загрузка…
Ссылка в новой задаче