Unix/Linux Go Back    


NetBSD 6.1.5 - man page for setdisklabel (netbsd section 9)

Linux & Unix Commands - Search Man Pages
Man Page or Keyword Search:   man
Select Man Page Set:       apropos Keyword Search (sections above)


DISKLABEL(9)			  BSD Kernel Developer's Manual 		     DISKLABEL(9)

NAME
     disklabel, readdisklabel, writedisklabel, setdisklabel, bounds_check_with_label -- disk
     label management routines

SYNOPSIS
     char *
     readdisklabel(dev_t dev, void (*strat)(struct buf *), struct disklabel *lp,
	 struct cpu_disklabel *clp);

     int
     writedisklabel(dev_t dev, void (*strat)(struct buf *), struct disklabel *lp,
	 struct cpu_disklabel *clp);

     int
     setdisklabel(struct disklabel *olp, struct disklabel *nlp, u_long openmask,
	 struct cpu_disklabel *clp);

     int
     bounds_check_with_label(struct buf *bp, struct disklabel *lp, int wlabel);

DESCRIPTION
     This collection of routines provides a disklabel management interface to kernel device driv-
     ers.  These routines are classified as machine- or architecture-dependent because of
     restrictions imposed by the machine architecture and boot-strapping code on the location of
     the label, or because cooperation with other operating systems requires specialized conver-
     sion code.

     readdisklabel() attempts to read a disklabel from the device identified by dev, using the
     device strategy routine passed in strat.  Note that a buffer structure is required to pass
     to the strategy routine; it needs to be acquired and parameterized for the intended I/O
     operation, and disposed of when the operation has completed.  Some fields in the disklabel
     passed in lp may be pre-initialized by the caller in order to meet device driver require-
     ments for the I/O operation initiated to get to the disklabel data on the medium.	In par-
     ticular, the field ``d_secsize'', if non-zero, is used by readdisklabel() to get an appro-
     priately sized buffer to pass to the device strategy routine.  Unspecified fields in lp
     should be set to zero.  If the medium does not contain a native disklabel that can be read
     in directly, readdisklabel() may resort to constructing a label from other machine-dependent
     information using the provided buffer passed in the clp argument.	If a disk label can not
     be found or constructed, a string containing an approximated description of the failure mode
     is returned.  Otherwise the NULL string is returned.

     writedisklabel() stores disk label information contained in the disk label structure given
     by lp on the device identified by dev.  Like readdisklabel(), it acquires and sets up an I/O
     buffer to pass to the strategy routine strat.  writedisklabel() may elect to do a machine-
     dependent conversion of the native disk label structure (using the buffer pointed at by
     clp), to store the disk label onto the medium in a format complying with architectural con-
     straints.	writedisklabel() returns 0 on success and EINVAL if the disk label specifies
     invalid or inconvertible values.  Otherwise, any error condition reported by the device
     strategy routine in the buffer's ``b_error'' field is returned.

     setdisklabel() checks a proposed new disk label passed in nlp for some amount of basic san-
     ity.  This includes a check on attempts to change the location, or reduce the size, of an
     existing disk partition that is currently in use by the system.  The current disposition of
     the disk partitions is made available through olp and openmask, which provide, respectively,
     the existing disk label and a bit mask identifying the partitions that are currently in use.
     Failure to pass on ``basic sanity'', results in a EINVAL return value, while a vetoed update
     of the partition layout is signaled by a EBUSY return value.  Otherwise, 0 is returned.

     bounds_check_with_label() is used to check whether a device transfer described by bp to the
     device identified by dev, is properly contained within a disk partition of the disk with
     label lp.	If this check fails, bounds_check_with_label() sets the buffer's ``b_error''
     field to EINVAL, sets the B_ERROR flag in ``b_flags'', and returns -1.  If the argument
     wlabel is zero, and the transfer is a write operation, a check is done if the transfer would
     overwrite (a portion of) the disklabel area on the medium.  If that is the case, EROFS is
     set in ``b_error'', the B_ERROR flag is set in ``b_flags'', and -1 is returned.  Note that
     wlabel should be set to a non-zero value if the intended operation is expected to install or
     update the disk label.  Programs that intend to do so using the raw device interface should
     notify the driver by using a DIOCWLABEL ioctl function.

SEE ALSO
     disklabel(5), disklabel(8)

BSD					December 26, 1996				      BSD
Unix & Linux Commands & Man Pages : ©2000 - 2018 Unix and Linux Forums


All times are GMT -4. The time now is 11:46 AM.