SUMMARY: New CD ROM mount problems.

From: Chris Murphy (murphycm@aston.ac.uk)
Date: Thu Sep 05 1996 - 05:21:56 CDT


Thanks for all the rapid and helpful responses.

Original Problem: I couldn't get my new Plextor PX-45CE External CD
ROM drive to work with Solaris 2.5 on a Sparc 10. I'd done a boot -r
after adding it to the SCSI chain. However, when I put in a disk,
volume management would not mount it, but would only eject it when
requested. Turning off vold and manual mounting was no help as mount
told me that it wasn't a hsfs device.

Solution: New drive transfers more than 512 bytes/block by default.
Solaris demands 512 bytes/block. Therefore change transfer size. On
some drives this is done with jumpers. There are no external jumpers
to do this on mine and no ways of changing it are documented in the
manual. However Melanie Dymond Harper kindly sent me the program
below which will initialise the drive correctly. It must be run
before volume management starts so I put it in /etc/init.d/volmgt just
before the line for vold. The only disadvantage is that We cannot
boot from the drive and (apparently) must make very sure that there is
no disk in when we boot.

Many thanks to the following

Fedor Gnuchev <qwe@ht.eimb.rssi.ru>
charles@Grafnetix.COM (Charles Gagnon)
Melanie Dymond Harper <mel@vanyel.herald.co.uk>
poffen@San-Jose.ate.slb.com (Russ Poffenberger)
Michael Blandford <mikey@lanl.gov>
steveb@pcs.co.uk (Steve Butterfield)
randrein@plextor.com
Matt Hill <MHILL@graver.com>
Kevin Davidson <tkld@cogsci.ed.ac.uk>
szh@zcon.com (Syed Zaeem Hosain)
Paul Kanz <paul@icx.com>
Wis Macomson <wis@sequent.com>
Mark L Roberts <mlroberts@dow.com>
Jim Harmon <jim@telecnnct.com>
Kevin.Sheehan@uniq.com.au (Kevin Sheehan {Consulting Poster Child})
"Xu, Guo Miao (Hui, Kwok Miu)" <huikomix@dt.com.hk>
Andi Paton <apaton@wtl1.demon.co.uk.demon.co.uk>

Here's the program...

----------------------------------------------------------------------
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/scsi/scsi_types.h>
#include <sys/scsi/impl/uscsi.h>

struct uscsi_cmd usc;
union scsi_cdb cdb;
u_char cd_mode[] = { 0, 0, 0, 0x8, 0, 0, 0, 0, 0, 0,
        0x2, /* 0x2 = 512, 0x8 = 2k */
        0 };

main()
{
    int cfd;

    if ((cfd = open("/dev/rsr0", O_RDONLY | O_NDELAY)) < 0) {
        perror("open");
        exit (1);
    }

    cdb.cdb_un.cmd = SCMD_MODE_SELECT;
    cdb.g0_count0 = sizeof(cd_mode);

    usc.uscsi_cdb = (caddr_t) &cdb;
    usc.uscsi_cdblen = CDB_GROUP0;
    usc.uscsi_bufaddr = (caddr_t) cd_mode;
    usc.uscsi_buflen = sizeof(cd_mode);
    usc.uscsi_flags = USCSI_DIAGNOSE | USCSI_ISOLATE;

    if ((ioctl(cfd, USCSICMD, (struct uscsi_cmd *) &usc)) < 0) {
        perror("USCSICMD ioctl");
        exit (1);
    }
    exit(0);
}

-- 
|                Chris Murphy: Aston Space Geodesy,                 |
| Civil Engineering, The University of Aston, Birmingham B4 7ET, UK |
| TEL : +44 121 359 3611 ext 4552            FAX : +44 121 333 3389 |
| MAIL: murphycm@aston.ac.uk URL: http://www.aston.ac.uk/~murphycm/ |



This archive was generated by hypermail 2.1.2 : Fri Sep 28 2001 - 23:11:09 CDT