Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
SD(4)			 BSD Kernel Interfaces Manual			 SD(4)

     sd	-- SCSI	and ATAPI disk driver

     sd* at scsibus? target ? lun ?
     sd3 at scsibus0 target 3 lun 0
     sd* at atapibus? drive ? flags 0x0000

     The sd driver provides support for	SCSI bus and Advanced Technology At-
     tachment Packet Interface (ATAPI) disks.  It allows the disk to be	di-
     vided up into a set of pseudo devices called partitions.  In general the
     interfaces	are similar to those described by wd(4).

     Where the wd(4) device has	a fairly low level interface to	the system,
     SCSI devices have a much higher level interface and talk to the system
     via a SCSI	host adapter (e.g., ahc(4)).  A	SCSI adapter must also be sep-
     arately configured	into the system	before a SCSI disk can be configured.

     When the SCSI adapter is probed during boot, the SCSI bus is scanned for
     devices.  Any devices found which answer as `Direct' type devices will be
     attached to the sd	driver.

     For the use of flags with ATAPI devices, see wd(4).

     On	many systems disklabel(8) is used to partition the drive into filesys-
     tems.  On some systems the	NetBSD portion of the disk resides within a
     native partition, and another program is used to create the NetBSD	por-

     For example, the i386 port	uses fdisk(8) to partition the disk into a
     BIOS level	partition.  This allows	sharing	the disk with other operating

     The following config(1) options may be applied to SCSI disks as well as
     to	other disks.

     SDRETRIES	    Set	the number of retries that will	be performed for oper-
		    ations it makes sense to retry (e.g., normal reads and
		    writes). The default is four (4).

     SD_IO_TIMEOUT  Set	amount of time,	in milliseconds, a normal read or
		    write is expected to take. The defaults is sixty seconds
		    (60000 milliseconds). This is used to set watchdog timers
		    in the SCSI	HBA driver to catch commands that might	have
		    died on the	device.

     The following ioctl(2) calls apply	to SCSI	disks as well as to other
     disks.  They are defined in the header file <disklabel.h>.

     DIOCGDINFO	 Read, from the	kernel,	the in-core copy of the	disklabel for
		 the drive.  This may be a fictitious disklabel	if the drive
		 has never been	initialized, in	which case it will contain in-
		 formation read	from the SCSI inquiry commands.

     DIOCSDINFO	 Give the driver a new disklabel to use.  The driver will not
		 write the new disklabel to the	disk.

     DIOCKLABEL	 Keep or drop the in-core disklabel on the last	close.

     DIOCWLABEL	 Enable	or disable the driver's	software write protect of the
		 disklabel on the disk.

     DIOCWDINFO	 Give the driver a new disklabel to use.  The driver will
		 write the new disklabel to the	disk.

     DIOCLOCK	 Lock the media	cartridge into the device, or unlock a car-
		 tridge	previously locked.  Used to prevent user and software
		 eject while the media is in use.

     DIOCEJECT	 Eject the media cartridge from	a removable device.

     In	addition, the scsi(4) general ioctl() commands may be used with	the sd
     driver, but only against the `c' (whole disk) partition.

     If	a removable device is attached to the sd driver, then the act of
     changing the media	will invalidate	the disklabel and information held
     within the	kernel.	 To avoid corruption, all accesses to the device will
     be	discarded until	there are no more open file descriptors	referencing
     the device.  During this period, all new open attempts will be rejected.
     When no more open file descriptors	reference the device, the first	next
     open will load a new set of parameters (including disklabel) for the

     /dev/sdup	    block mode SCSI disk unit u, partition p
     /dev/rsdup	    raw	mode SCSI disk unit u, partition p


     ioctl(2), intro(4), scsi(4), wd(4), disklabel(5), disklabel(8), fdisk(8),

     The sd driver was originally written for Mach 2.5,	and was	ported to
     FreeBSD by	Julian Elischer.  It was later ported to NetBSD.

BSD			       January 18, 1996				   BSD


Want to link to this manual page? Use this URL:

home | help