I need this on top of git head to be able to get status from iscsi using 2.6.25-rc1. You'll probably want to go looking for host in both sysfs paths, to handle old and new kernels. Here's an example of how it works in a recent one.
Others testing recent kernels may want to hack this in temporarily. Here are the error message from old iscsi utils, iscsi-initiator-utils-6.2.0.868-0.3.fc9.x86_64. aib01# iscsiadm -m session iscsiadm: Could not get host for sid 1. iscsiadm: could not get host_no for session 6. iscsiadm: could not find session info for session1 iscsiadm: Can not get list of active sessions (6) aib01# iscsiadm -m node -p 10.100.2.32,3260 -T aib02 -u iscsiadm: Could not get host for sid 1. iscsiadm: could not get host_no for session 6. iscsiadm: could not find session info for session1 -- Pete Sysfs layout changed yet again. Accommodate new kernels (2.6.25-rc1 at least), but probably break the parsing on older ones. Signed-off-by: Pete Wyckoff <[EMAIL PROTECTED]> --- usr/iscsi_sysfs.c | 19 +++++++------------ 1 files changed, 7 insertions(+), 12 deletions(-) diff --git a/usr/iscsi_sysfs.c b/usr/iscsi_sysfs.c index 7b65d6d..361eff0 100644 --- a/usr/iscsi_sysfs.c +++ b/usr/iscsi_sysfs.c @@ -279,7 +279,7 @@ void get_negotiated_session_conf(int sid, uint32_t get_host_no_from_sid(uint32_t sid, int *err) { char *buf, *path, *tmp; - uint32_t host_no; + uint32_t host_no = 0; *err = 0; @@ -290,28 +290,23 @@ uint32_t get_host_no_from_sid(uint32_t sid, int *err) } path = buf + PATH_MAX; - sprintf(path, ISCSI_SESSION_DIR"/session%d/device", sid); + sprintf(path, ISCSI_SESSION_DIR"/session%d", sid); if (readlink(path, buf, PATH_MAX) < 0) { log_error("Could not get link for %s.", path); *err = errno; goto free_buf; } - /* buf will be .....bus_info/hostX/sessionY */ + /* buf will be ../../devices/platform/hostX/sessionY/iscsi_session/sessionY */ /* find hostX */ - tmp = strrchr(buf, '/'); - *tmp = '\0'; - - /* find bus and increment past it */ - tmp = strrchr(buf, '/'); - tmp++; - - if (sscanf(tmp, "host%u", &host_no) != 1) { - log_error("Could not get host for sid %u.", sid); + tmp = strstr(buf, "host"); + if (tmp == NULL) { + log_error("could not find host in session link %s", buf); *err = ENXIO; goto free_buf; } + host_no = atoi(tmp + 4); free_buf: free(buf); -- 1.5.4.1 --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "open-iscsi" group. To post to this group, send email to open-iscsi@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/open-iscsi -~----------~----~----~----~------~----~------~--~---