On Thu, 19 Aug 2010 12:51:54 -0700 "Nicholas A. Bellinger" <nab@xxxxxxxxxxxxxxx> wrote: > > # ls -l /dev/bsg/ > > total 0 > > crw-rw---- 1 root root 253, 0 2010-08-15 13:15 0:0:0:0 > > crw-rw---- 1 root root 253, 1 2010-08-15 13:15 2:0:0:0 > > crw-rw---- 1 root root 253, 10 2010-08-17 12:02 3:0:0:0 > > crw-rw---- 1 root root 253, 2 2010-08-17 12:02 3:0:1:0 > > crw-rw---- 1 root root 253, 7 2010-08-17 12:02 3:0:10:0 > > crw-rw---- 1 root root 253, 8 2010-08-17 12:02 3:0:11:0 > > crw-rw---- 1 root root 253, 9 2010-08-17 12:02 3:0:12:0 > > crw-rw---- 1 root root 253, 3 2010-08-17 12:02 3:0:2:0 > > crw-rw---- 1 root root 253, 4 2010-08-17 12:02 3:0:3:0 > > crw-rw---- 1 root root 253, 5 2010-08-17 12:02 3:0:4:0 > > crw-rw---- 1 root root 253, 11 2010-08-17 12:02 3:0:8:0 > > crw-rw---- 1 root root 253, 6 2010-08-17 12:02 3:0:9:0 > > > > # tgtadm --op new --mode target --tid 1 -T iqn.2010-08.com.nbusyd:mh > > # tgtadm --op new --mode logicalunit --tid 1 --lun 1 --bstype=bsg > > --device-type=pt -b /dev/bsg/3:0:1:0 > > tgtadm: invalid request > > > > All the syslog shows is: > > tgtd: bs_sg_open(361) Not recognized /dev/bsg/3:0:1:0 as an SG device > > > > Hmmmmm, so it appears that usr/bs_sg.c:chk_sg_device() is failing to > pick up the BSG device nodes here: > > /* Check for SG_IO major first.. */ > if (major(st.st_rdev) == SCSI_GENERIC_MAJOR) > return 0; > > /* This is not yet defined in include/linux/major.h.. */ > if (major(st.st_rdev) == 254) > return 1; > > return -1; > } > > So it looks like the failure is attributed to my hardcoding of major 254 > in the original STGT/BSG patch (note the comment above the conditional > check). Here is a quick fix: > > diff --git a/usr/bs_sg.c b/usr/bs_sg.c > index cda5cd2..a369570 100644 > --- a/usr/bs_sg.c > +++ b/usr/bs_sg.c > @@ -289,7 +289,7 @@ static int chk_sg_device(char *path) > return 0; > > /* This is not yet defined in include/linux/major.h.. */ > - if (major(st.st_rdev) == 254) > + if ((major(st.st_rdev) == 254) || (major(st.st_rdev) == 253)) > return 1; > > return -1; Well, seems that nobody uses the bsg support except for you. :) The above patch is still wrong. bsg major number can be anything. So you need to get it from /proc/devices. Or you can also get it from /sys/class/bsg/, which is created by kernel so available on any distributions. You can steal the bsg device handling code from sg3-utils. Maybe someone could create something like libbsg.so -- To unsubscribe from this list: send the line "unsubscribe stgt" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html