The flashnode session and connection devices should be filtered by net
namespace along with the iscsi_host, but we can't do that with a bus
device.  As these don't use any of the bus matching functionality, they
make more sense as a class device anyway.
---
 drivers/scsi/qla4xxx/ql4_os.c       |  2 +-
 drivers/scsi/scsi_transport_iscsi.c | 36 +++++++++++++++---------------------
 include/scsi/scsi_transport_iscsi.h |  2 ++
 3 files changed, 18 insertions(+), 22 deletions(-)

diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c
index 79021797a508..b20e9fee2d5a 100644
--- a/drivers/scsi/qla4xxx/ql4_os.c
+++ b/drivers/scsi/qla4xxx/ql4_os.c
@@ -7160,7 +7160,7 @@ static int qla4xxx_sysfs_ddb_is_non_persistent(struct 
device *dev, void *data)
 {
        struct iscsi_bus_flash_session *fnode_sess;
 
-       if (!iscsi_flashnode_bus_match(dev, NULL))
+       if (!iscsi_is_flashnode_session_dev(dev))
                return 0;
 
        fnode_sess = iscsi_dev_to_flash_session(dev);
diff --git a/drivers/scsi/scsi_transport_iscsi.c 
b/drivers/scsi/scsi_transport_iscsi.c
index 426b65bb1017..8e46f1309274 100644
--- a/drivers/scsi/scsi_transport_iscsi.c
+++ b/drivers/scsi/scsi_transport_iscsi.c
@@ -1061,6 +1061,12 @@ static struct device_type iscsi_flashnode_sess_dev_type 
= {
        .release = iscsi_flashnode_sess_release,
 };
 
+bool iscsi_is_flashnode_session_dev(struct device *dev)
+{
+       return dev->type == &iscsi_flashnode_sess_dev_type;
+}
+EXPORT_SYMBOL_GPL(iscsi_is_flashnode_session_dev);
+
 /* flash node connection attrs show */
 #define iscsi_flashnode_conn_attr_show(type, name, param)              \
 static ssize_t                                                         \
@@ -1247,20 +1253,8 @@ static struct device_type iscsi_flashnode_conn_dev_type 
= {
        .release = iscsi_flashnode_conn_release,
 };
 
-static struct bus_type iscsi_flashnode_bus;
-
-int iscsi_flashnode_bus_match(struct device *dev,
-                                    struct device_driver *drv)
-{
-       if (dev->bus == &iscsi_flashnode_bus)
-               return 1;
-       return 0;
-}
-EXPORT_SYMBOL_GPL(iscsi_flashnode_bus_match);
-
-static struct bus_type iscsi_flashnode_bus = {
+static struct class iscsi_flashnode_bus = {
        .name = "iscsi_flashnode",
-       .match = &iscsi_flashnode_bus_match,
 };
 
 /**
@@ -1291,7 +1285,7 @@ iscsi_create_flashnode_sess(struct Scsi_Host *shost, int 
index,
        fnode_sess->transport = transport;
        fnode_sess->target_id = index;
        fnode_sess->dev.type = &iscsi_flashnode_sess_dev_type;
-       fnode_sess->dev.bus = &iscsi_flashnode_bus;
+       fnode_sess->dev.class = &iscsi_flashnode_bus;
        fnode_sess->dev.parent = &shost->shost_gendev;
        dev_set_name(&fnode_sess->dev, "flashnode_sess-%u:%u",
                     shost->host_no, index);
@@ -1339,7 +1333,7 @@ iscsi_create_flashnode_conn(struct Scsi_Host *shost,
 
        fnode_conn->transport = transport;
        fnode_conn->dev.type = &iscsi_flashnode_conn_dev_type;
-       fnode_conn->dev.bus = &iscsi_flashnode_bus;
+       fnode_conn->dev.class = &iscsi_flashnode_bus;
        fnode_conn->dev.parent = &fnode_sess->dev;
        dev_set_name(&fnode_conn->dev, "flashnode_conn-%u:%u:0",
                     shost->host_no, fnode_sess->target_id);
@@ -1372,7 +1366,7 @@ EXPORT_SYMBOL_GPL(iscsi_create_flashnode_conn);
  */
 static int iscsi_is_flashnode_conn_dev(struct device *dev, void *data)
 {
-       return dev->bus == &iscsi_flashnode_bus;
+       return dev->type == &iscsi_flashnode_conn_dev_type;
 }
 
 static int iscsi_destroy_flashnode_conn(struct iscsi_bus_flash_conn 
*fnode_conn)
@@ -1386,7 +1380,7 @@ static int flashnode_match_index(struct device *dev, void 
*data)
        struct iscsi_bus_flash_session *fnode_sess = NULL;
        int ret = 0;
 
-       if (!iscsi_flashnode_bus_match(dev, NULL))
+       if (dev->type != &iscsi_flashnode_sess_dev_type)
                goto exit_match_index;
 
        fnode_sess = iscsi_dev_to_flash_session(dev);
@@ -1492,7 +1486,7 @@ EXPORT_SYMBOL_GPL(iscsi_destroy_flashnode_sess);
 
 static int iscsi_iter_destroy_flashnode_fn(struct device *dev, void *data)
 {
-       if (!iscsi_flashnode_bus_match(dev, NULL))
+       if (dev->type != &iscsi_flashnode_sess_dev_type)
                return 0;
 
        iscsi_destroy_flashnode_sess(iscsi_dev_to_flash_session(dev));
@@ -4747,7 +4741,7 @@ static __init int iscsi_transport_init(void)
        if (err)
                goto unregister_conn_class;
 
-       err = bus_register(&iscsi_flashnode_bus);
+       err = class_register(&iscsi_flashnode_bus);
        if (err)
                goto unregister_session_class;
 
@@ -4768,7 +4762,7 @@ static __init int iscsi_transport_init(void)
 unregister_pernet_subsys:
        unregister_pernet_subsys(&iscsi_net_ops);
 unregister_flashnode_bus:
-       bus_unregister(&iscsi_flashnode_bus);
+       class_unregister(&iscsi_flashnode_bus);
 unregister_session_class:
        transport_class_unregister(&iscsi_session_class);
 unregister_conn_class:
@@ -4788,7 +4782,7 @@ static void __exit iscsi_transport_exit(void)
 {
        destroy_workqueue(iscsi_eh_timer_workq);
        unregister_pernet_subsys(&iscsi_net_ops);
-       bus_unregister(&iscsi_flashnode_bus);
+       class_unregister(&iscsi_flashnode_bus);
        transport_class_unregister(&iscsi_connection_class);
        transport_class_unregister(&iscsi_session_class);
        transport_class_unregister(&iscsi_host_class);
diff --git a/include/scsi/scsi_transport_iscsi.h 
b/include/scsi/scsi_transport_iscsi.h
index 16d3eb288221..4122d4651bae 100644
--- a/include/scsi/scsi_transport_iscsi.h
+++ b/include/scsi/scsi_transport_iscsi.h
@@ -484,6 +484,8 @@ iscsi_find_flashnode_sess(struct Scsi_Host *shost, void 
*data,
 extern struct device *
 iscsi_find_flashnode_conn(struct iscsi_bus_flash_session *fnode_sess);
 
+extern bool iscsi_is_flashnode_session_dev(struct device *dev);
+
 extern char *
 iscsi_get_ipaddress_state_name(enum iscsi_ipaddress_state port_state);
 extern char *iscsi_get_router_state_name(enum iscsi_router_state router_state);
-- 
2.9.4

-- 
You received this message because you are subscribed to the Google Groups 
"open-iscsi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to open-iscsi+unsubscr...@googlegroups.com.
To post to this group, send email to open-iscsi@googlegroups.com.
Visit this group at https://groups.google.com/group/open-iscsi.
For more options, visit https://groups.google.com/d/optout.

Reply via email to