Re: [RFC PATCH 7/9] iscsi: convert flashnode devices from bus to class

2023-03-14 Thread Hannes Reinecke

On 2/8/23 18:40, Lee Duncan wrote:

From: Lee Duncan 

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.

Signed-off-by: Chris Leech 
Signed-off-by: Lee Duncan 
---
  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(-)


Reviewed-by: Hannes Reinecke 

Cheers,

Hannes


--
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/open-iscsi/81e3d1f1-26c4-0fd3-7c99-00de4d8d9f12%40suse.de.


[RFC PATCH 7/9] iscsi: convert flashnode devices from bus to class

2023-02-08 Thread Lee Duncan
From: Lee Duncan 

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.

Signed-off-by: Chris Leech 
Signed-off-by: Lee Duncan 
---
 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 390b89bdec8f..18e382b6be18 100644
--- a/drivers/scsi/qla4xxx/ql4_os.c
+++ b/drivers/scsi/qla4xxx/ql4_os.c
@@ -7185,7 +7185,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 008adde4dc51..c065763b1fc6 100644
--- a/drivers/scsi/scsi_transport_iscsi.c
+++ b/drivers/scsi/scsi_transport_iscsi.c
@@ -1060,6 +1060,12 @@ static const 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 == _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 \
@@ -1246,20 +1252,8 @@ static const 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 == _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 = _flashnode_bus_match,
 };
 
 /**
@@ -1290,7 +1284,7 @@ iscsi_create_flashnode_sess(struct Scsi_Host *shost, int 
index,
fnode_sess->transport = transport;
fnode_sess->target_id = index;
fnode_sess->dev.type = _flashnode_sess_dev_type;
-   fnode_sess->dev.bus = _flashnode_bus;
+   fnode_sess->dev.class = _flashnode_bus;
fnode_sess->dev.parent = >shost_gendev;
dev_set_name(_sess->dev, "flashnode_sess-%u:%u",
 shost->host_no, index);
@@ -1338,7 +1332,7 @@ iscsi_create_flashnode_conn(struct Scsi_Host *shost,
 
fnode_conn->transport = transport;
fnode_conn->dev.type = _flashnode_conn_dev_type;
-   fnode_conn->dev.bus = _flashnode_bus;
+   fnode_conn->dev.class = _flashnode_bus;
fnode_conn->dev.parent = _sess->dev;
dev_set_name(_conn->dev, "flashnode_conn-%u:%u:0",
 shost->host_no, fnode_sess->target_id);
@@ -1371,7 +1365,7 @@ EXPORT_SYMBOL_GPL(iscsi_create_flashnode_conn);
  */
 static int iscsi_is_flashnode_conn_dev(struct device *dev, void *data)
 {
-   return dev->bus == _flashnode_bus;
+   return dev->type == _flashnode_conn_dev_type;
 }
 
 static int iscsi_destroy_flashnode_conn(struct iscsi_bus_flash_conn 
*fnode_conn)
@@ -1385,7 +1379,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 != _flashnode_sess_dev_type)
goto exit_match_index;
 
fnode_sess = iscsi_dev_to_flash_session(dev);
@@ -1491,7 +1485,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 != _flashnode_sess_dev_type)
return 0;
 
iscsi_destroy_flashnode_sess(iscsi_dev_to_flash_session(dev));
@@ -5200,7 +5194,7 @@ static __init int iscsi_transport_init(void)
if (err)
goto unregister_conn_class;
 
-   err = bus_register(_flashnode_bus);
+   err = class_register(_flashnode_bus);
if (err)
goto unregister_session_class;
 
@@ -5223,7 +5217,7 @@ static __init int iscsi_transport_init(void)
 unregister_pernet_subsys:
unregister_pernet_subsys(_net_ops);
 unregister_flashnode_bus:
-   bus_unregister(_flashnode_bus);
+   class_unregister(_flashnode_bus);
 unregister_session_class:
transport_class_unregister(_session_class);
 

[PATCH 7/9] iscsi: convert flashnode devices from bus to class

2017-10-31 Thread Chris Leech
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.

Signed-off-by: Chris Leech 
---
 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 770313d0b986..55a729568873 100644
--- a/drivers/scsi/qla4xxx/ql4_os.c
+++ b/drivers/scsi/qla4xxx/ql4_os.c
@@ -7164,7 +7164,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 fbec3a019f00..b053d57a482d 100644
--- a/drivers/scsi/scsi_transport_iscsi.c
+++ b/drivers/scsi/scsi_transport_iscsi.c
@@ -1060,6 +1060,12 @@ static const 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 == _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 \
@@ -1246,20 +1252,8 @@ static const 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 == _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 = _flashnode_bus_match,
 };
 
 /**
@@ -1290,7 +1284,7 @@ iscsi_create_flashnode_sess(struct Scsi_Host *shost, int 
index,
fnode_sess->transport = transport;
fnode_sess->target_id = index;
fnode_sess->dev.type = _flashnode_sess_dev_type;
-   fnode_sess->dev.bus = _flashnode_bus;
+   fnode_sess->dev.class = _flashnode_bus;
fnode_sess->dev.parent = >shost_gendev;
dev_set_name(_sess->dev, "flashnode_sess-%u:%u",
 shost->host_no, index);
@@ -1338,7 +1332,7 @@ iscsi_create_flashnode_conn(struct Scsi_Host *shost,
 
fnode_conn->transport = transport;
fnode_conn->dev.type = _flashnode_conn_dev_type;
-   fnode_conn->dev.bus = _flashnode_bus;
+   fnode_conn->dev.class = _flashnode_bus;
fnode_conn->dev.parent = _sess->dev;
dev_set_name(_conn->dev, "flashnode_conn-%u:%u:0",
 shost->host_no, fnode_sess->target_id);
@@ -1371,7 +1365,7 @@ EXPORT_SYMBOL_GPL(iscsi_create_flashnode_conn);
  */
 static int iscsi_is_flashnode_conn_dev(struct device *dev, void *data)
 {
-   return dev->bus == _flashnode_bus;
+   return dev->type == _flashnode_conn_dev_type;
 }
 
 static int iscsi_destroy_flashnode_conn(struct iscsi_bus_flash_conn 
*fnode_conn)
@@ -1385,7 +1379,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 != _flashnode_sess_dev_type)
goto exit_match_index;
 
fnode_sess = iscsi_dev_to_flash_session(dev);
@@ -1491,7 +1485,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 != _flashnode_sess_dev_type)
return 0;
 
iscsi_destroy_flashnode_sess(iscsi_dev_to_flash_session(dev));
@@ -4752,7 +4746,7 @@ static __init int iscsi_transport_init(void)
if (err)
goto unregister_conn_class;
 
-   err = bus_register(_flashnode_bus);
+   err = class_register(_flashnode_bus);
if (err)
goto unregister_session_class;
 
@@ -4773,7 +4767,7 @@ static __init int iscsi_transport_init(void)
 unregister_pernet_subsys:
unregister_pernet_subsys(_net_ops);
 unregister_flashnode_bus:
-   bus_unregister(_flashnode_bus);
+   class_unregister(_flashnode_bus);
 unregister_session_class:
transport_class_unregister(_session_class);
 unregister_conn_class:
@@