Date: Thu, 26 Feb 1998 17:12:16 -0700 (MST) From: "Kenneth D. Merry" <ken@plutotech.com> To: paulg@interlog.com (Paul Griffith) Cc: freebsd-hardware@FreeBSD.ORG Subject: Re: NEC 4X 7 CD Changer Message-ID: <199802270012.RAA15790@panzer.plutotech.com> In-Reply-To: <Pine.BSI.3.95.980226124931.29064A-100000@shell1.interlog.com> from Paul Griffith at "Feb 26, 98 12:57:35 pm"
next in thread | previous in thread | raw e-mail | index | archive | help
Paul Griffith wrote... > I just picked up a new NEC Multispin 4X 7 CD changer for about $35CDN to > replace my old Toshiba 1X drive. On restart my FreeBSD system sees the > CD changer, and all 7 LUNs, plus my other Toshiba 4X. So we have something > like this: > > SCSI 4 - Toshiba 4X cd0 > SCSI 5 - NEC 4X changer cd1 ....cd7 > > So I run the MAKEDEV script to add the additional /dev entries, on the last > one MAKEDEV cd7 I get the following error: > > Bad unit for disk in: cd7 > > I quick look at MAKEDEV show it only 7 CD-ROM's (cd0 - cd6). I modified > MAKEDEV to allow 7 CD-ROM's (cd0-cd7). I ran into the same problem with MAKEDEV, so I modified the version in the CAM tree to be a little smarter about making CD devices: ===== cut here ===== ==== //depot/cam/etc/etc.i386/MAKEDEV#13 - //depot/cam/etc/etc.i386/MAKEDEV#14 ==== *************** *** 667,694 **** cd*|mcd*|scd*) umask $disk_umask case $i in ! cd*) unit=`expr $i : '..\(.*\)'`; name=cd; blk=6; chr=15;; ! mcd*) unit=`expr $i : '...\(.*\)'`; name=mcd; blk=7; chr=29;; ! scd*) unit=`expr $i : '...\(.*\)'`; name=scd; blk=16; chr=45;; esac ! case $unit in ! 0|1|2|3|4|5|6) ! mknod ${name}${unit}a b $blk `expr $unit '*' 8 + 0` ! mknod ${name}${unit}c b $blk `expr $unit '*' 8 + 2` ! mknod r${name}${unit}a c $chr `expr $unit '*' 8 + 0` ! mknod r${name}${unit}c c $chr `expr $unit '*' 8 + 2` ! chgrp operator ${name}${unit}[a-h] r${name}${unit}[a-h] ! case $name in ! cd) ! mknod r${name}${unit}.ctl c $chr `expr $unit '*' 8 + $scsictl ` ! chmod 600 r${name}${unit}.ctl ! ;; ! esac ! ;; ! *) ! echo bad unit for disk in: $i ! ;; ! esac umask 77 ;; --- 667,699 ---- cd*|mcd*|scd*) umask $disk_umask case $i in ! cd*) units=`expr $i : '..\(.*\)'`; name=cd; blk=6; chr=15;; ! mcd*) units=`expr $i : '...\(.*\)'`; name=mcd; blk=7; chr=29;; ! scd*) units=`expr $i : '...\(.*\)'`; name=scd; blk=16; chr=45;; esac ! if [ "X${units}" = "X" -o ${units} -le 0 ]; then ! units=1 ! fi ! if [ "${units}" -le 31 ]; then ! eval `echo ${chr} ${blk} ${units} ${name} |awk \ ! '{ c=$1; b=$2; n=$3; name=$4;} END{ ! for (i = 0; i < n; i++){ ! printf("rm -f %s%d* r%s%d*; \ ! mknod %s%da b %d %d; \ ! mknod %s%dc b %d %d; \ ! mknod r%s%da c %d %d; \ ! mknod r%s%dc c %d %d; \ ! chgrp operator %s%d* r%s%d*;", ! name, i, name, i, ! name, i, b, (i * 8), ! name, i, b, (i * 8) + 2, ! name, i, c, (i * 8), ! name, i, c, (i * 8) + 2, ! name, i, name, i); }}'` ! ! else ! echo "$i is invalid -- can't have more than 32 cd devices" ! fi umask 77 ;; ===== cut here ===== So, with that change, you can type: sh MAKEDEV 12 If you want 12 CD devices. > That seem to work fine, execpt I > have to issue the mount command twice, since it times out the first time. > Maybe I should add SLOW_SCSI/SCSI_DELAY <?> in the kernal and re-compile ? That probably won't help, since AFAIK, SCSI_DELAY only affects the bus settle delay during probe, and SCSI_SLOW doesn't exist. My guess is that your problem is that one of the commands that is sent to mount the CD is timing out. The changer probably isn't changing fast enough to service the request before the timeout hits. The reason the second mount works is because the changer has already changed to that disk, so it can service the request before the timeout hits. One problem I found with the 2x NEC 7-cd changer that Lars Fredriksen lent me is that it doesn't seem to disconnect from the bus when probed. (and probably at other times as well) If you're just having trouble mounting the CD, that probably isn't your problem, though. > I would perfer to use the ch driver, Do I have to hard-wire it down in the > kernel ? If you can point me in the right directions please let me know ? > I already tried man 4 ch. Unless the NEC drive probes as a changer device as well as a bunch of CD devices, you can't use the ch(4) driver. CD switching is done based upon which cd device you access. The CAM CD driver has much better changer support than the CD driver in -current. I would suggest checking out the next CAM snapshot, it may fix things for you. Ken -- Kenneth Merry ken@plutotech.com To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hardware" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199802270012.RAA15790>