Hello community, here is the log from the commit of package lsscsi checked in at Mon Nov 3 12:25:40 CET 2008. -------- --- lsscsi/lsscsi.changes 2008-08-12 17:44:01.000000000 +0200 +++ /mounts/work_src_done/STABLE/lsscsi/lsscsi.changes 2008-10-31 10:25:53.307476000 +0100 @@ -1,0 +2,5 @@ +Fri Oct 31 10:25:27 CET 2008 - hare@suse.de + +- Update sysfs patch to match latest sysfs changes (bnc#434823) + +------------------------------------------------------------------- calling whatdependson for head-i586 Old: ---- lsscsi-0.21-sysfs-update New: ---- lsscsi-0.21-usb-transport ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ lsscsi.spec ++++++ --- /var/tmp/diff_new_pack.h18364/_old 2008-11-03 12:25:25.000000000 +0100 +++ /var/tmp/diff_new_pack.h18364/_new 2008-11-03 12:25:25.000000000 +0100 @@ -17,7 +17,7 @@ # norootforbuild -Url: http://sg.torque.net/scsi/lsscsi.html +Url: http://sg.danny.cz/scsi/lsscsi.html Name: lsscsi %define lsscsiver 0.21 @@ -26,10 +26,10 @@ AutoReqProv: on Provides: scsi:/usr/bin/lsscsi Version: 0.21 -Release: 1 +Release: 13 Summary: List all SCSI devices in the system Source: http://sg.torque.net/scsi/lsscsi-%{lsscsiver}.tar.bz2 -Patch1: %{name}-%{version}-sysfs-update +Patch1: %{name}-%{version}-usb-transport BuildRoot: %{_tmppath}/%{name}-%{version}-build %description @@ -63,6 +63,8 @@ rm -rf $RPM_BUILD_DIR/lsscsi-%{lsscsiver} %changelog +* Fri Oct 31 2008 hare@suse.de +- Update sysfs patch to match latest sysfs changes (bnc#434823) * Tue Aug 12 2008 garloff@suse.de - Update to lsscsi-0.21: SysFS scanning changes imposed by kernel 2.6.25/26. ++++++ lsscsi-0.21-usb-transport ++++++ Index: lsscsi.c =================================================================== --- lsscsi.c.orig +++ lsscsi.c @@ -39,8 +39,9 @@ static const char * version_str = "0.21 #define TRANSPORT_SAS 3 #define TRANSPORT_SAS_CLASS 4 #define TRANSPORT_ISCSI 5 #define TRANSPORT_SBP 6 +#define TRANSPORT_USB 6 static int transport_id = TRANSPORT_UNKNOWN; @@ -49,8 +50,9 @@ static const char * sysfs_name = "sysfs" static const char * sysfs_test_dir = "/sys/class"; static const char * sysfs_test_top = "/sys"; static const char * proc_mounts = "/proc/mounts"; static const char * bus_scsi_devs = "/bus/scsi/devices"; +static const char * bus_usb_devs = "/bus/usb/devices"; static const char * class_scsi_dev = "/class/scsi_device/"; static const char * scsi_host = "/class/scsi_host"; static const char * spi_host = "/class/spi_host/"; static const char * spi_transport = "/class/spi_transport/"; @@ -894,8 +925,50 @@ transport_init(const char * devname, /* // host output? // Hmmm, probably would like SAM-4 ",i,0x" notation here. return 1; } + + /* USB host */ + do { + char *t, buff2[NAME_LEN_MAX]; + + /* resolve SCSI host device */ + strcpy(buff, sysfsroot); + strcat(buff, scsi_host); + strcat(buff, "/"); + strcat(buff, devname); + strcat(buff, "/device"); + if (readlink(buff, buff2, sizeof(buff2)) <= 0) + break; + + /* check if the SCSI host has a USB host as ancestor */ + if (!(t = strstr(buff2, "/usb"))) + break; + transport_id = TRANSPORT_USB; + + /* Get USB id */ + if (!(t = strstr(buff2, "/host"))) + break; + /* terminate buff2 after USB host */ + if (!(t = strchr(t - 1, '/'))) + break; + *t = 0; + + /* resolve USB host device */ + buff[strlen(buff) - strlen("device")] = 0; + if (strlen(buff) + strlen(buff2) + strlen("devnum") + 2 + > NAME_LEN_MAX) + break; + strcat(buff, buff2); + + /* read the USB device number */ + if (!get_value(buff, "devnum", buff2, sizeof(buff)) || + strlen(buff2) < 1) + break; + snprintf(b, b_len, "usb:%s", buff2); + return 1; + } while (0); + return 0; } static void @@ -1146,9 +1219,9 @@ transport_tport(const char * devname, /* IEEE1394 SBP device */ transport_id = TRANSPORT_SBP; snprintf(b, b_len, "sbp:%s", wd); return 1; - } + } /* iSCSI device? */ strcpy(buff, sysfsroot); strcat(buff, iscsi_host); off = strlen(buff); @@ -1172,8 +1245,40 @@ transport_tport(const char * devname, // >>> That reference says maximum length of targetname is 223 bytes // (UTF-8) excluding trailing null. return 1; } + /* USB device? */ + strcpy(buff, sysfsroot); + strcat(buff, bus_scsi_devs); + if (if_directory_chdir(buff, devname)) { + if (NULL == getcwd(wd, NAME_LEN_MAX)) + return 0; + if (!(cp = strstr(wd, "/usb"))) + return 0; + transport_id = TRANSPORT_USB; + if (!(cp = strstr(wd, "/host"))) + return 0; + *cp = 0; + if (!(cp = strrchr(wd, ':'))) + return 0; + *cp = 0; + cp = basename(wd); + strcpy(buff, sysfsroot); + strcat(buff, bus_usb_devs); + strcat(buff, "/"); + strcat(buff, cp); + if (sscanf(cp, "%d-%*d", &n) != 1) + return 0; + + snprintf(b, b_len, "usb:%d-", n); + off = strlen(b); + if (get_value(buff, "devnum", b + off, b_len + off)) + return 1; + else + fprintf(stderr, "_tport: no " + "usb bus id, wd=%s\n", buff); + } + return 0; } static void ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org