From: Chris Leech <cleech@redhat.com>
To: Lee Duncan <lduncan@suse.com>,
linux-scsi@vger.kernel.org, open-iscsi@googlegroups.com,
netdev@vger.kernel.org
Cc: Chris Leech <cleech@redhat.com>
Subject: [PATCH 07/11] iscsi: convert flashnode devices from bus to class
Date: Sat, 6 May 2023 16:29:26 -0700 [thread overview]
Message-ID: <20230506232930.195451-8-cleech@redhat.com> (raw)
In-Reply-To: <20230506232930.195451-1-cleech@redhat.com>
From: Lee Duncan <lduncan@suse.com>
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: Lee Duncan <lduncan@suse.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Chris Leech <cleech@redhat.com>
---
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 55fe6aca93d0..bc06020565e4 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 d8b05f3361c8..2fae14aa291e 100644
--- a/drivers/scsi/scsi_transport_iscsi.c
+++ b/drivers/scsi/scsi_transport_iscsi.c
@@ -1081,6 +1081,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 == &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 \
@@ -1267,20 +1273,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 == &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,
};
/**
@@ -1311,7 +1305,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);
@@ -1359,7 +1353,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);
@@ -1392,7 +1386,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)
@@ -1406,7 +1400,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);
@@ -1512,7 +1506,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));
@@ -5235,7 +5229,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;
@@ -5258,7 +5252,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:
@@ -5278,7 +5272,7 @@ static void __exit iscsi_transport_exit(void)
{
destroy_workqueue(iscsi_conn_cleanup_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 83bcdd2bcde4..f9d003753f11 100644
--- a/include/scsi/scsi_transport_iscsi.h
+++ b/include/scsi/scsi_transport_iscsi.h
@@ -524,6 +524,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.39.2
next prev parent reply other threads:[~2023-05-06 23:31 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-06 23:29 [PATCH v2 00/11] Make iscsid-kernel communications namespace-aware Chris Leech
2023-05-06 23:29 ` [PATCH 01/11] iscsi: create per-net iscsi netlink kernel sockets Chris Leech
2023-05-06 23:29 ` [PATCH 02/11] iscsi: associate endpoints with a host Chris Leech
2023-05-06 23:29 ` [PATCH 03/11] iscsi: sysfs filtering by network namespace Chris Leech
2023-05-10 19:50 ` michael.christie
2023-05-06 23:29 ` [PATCH 04/11] iscsi: make all iSCSI netlink multicast namespace aware Chris Leech
2023-05-10 19:48 ` michael.christie
2023-05-06 23:29 ` [PATCH 05/11] iscsi: check net namespace for all iscsi lookup Chris Leech
2023-05-12 22:30 ` Mike Christie
2023-05-06 23:29 ` [PATCH 06/11] iscsi: set netns for tcp and iser hosts Chris Leech
2023-05-07 1:29 ` kernel test robot
2023-05-07 2:01 ` kernel test robot
2023-05-10 19:40 ` michael.christie
2023-05-06 23:29 ` Chris Leech [this message]
2023-05-10 19:28 ` [PATCH 07/11] iscsi: convert flashnode devices from bus to class michael.christie
2023-05-06 23:29 ` [PATCH 08/11] iscsi: rename iscsi_bus_flash_* to iscsi_flash_* Chris Leech
2023-05-06 23:29 ` [PATCH 09/11] iscsi: filter flashnode sysfs by net namespace Chris Leech
2023-05-06 23:29 ` [PATCH 10/11] iscsi: make session and connection lists per-net Chris Leech
2023-05-10 19:25 ` michael.christie
2023-05-06 23:29 ` [PATCH 11/11] iscsi: force destroy sesions when a network namespace exits Chris Leech
2023-05-10 20:09 ` michael.christie
2023-05-10 20:14 ` michael.christie
2023-05-10 19:54 ` [PATCH v2 00/11] Make iscsid-kernel communications namespace-aware michael.christie
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230506232930.195451-8-cleech@redhat.com \
--to=cleech@redhat.com \
--cc=lduncan@suse.com \
--cc=linux-scsi@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=open-iscsi@googlegroups.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).