bounds_check_with_label man page on OpenBSD

Man page or keyword search:  
man Server   11362 pages
apropos Keyword Search (all sections)
Output format
OpenBSD logo
[printable version]

DISKLABEL(9)		     OpenBSD Kernel Manual		  DISKLABEL(9)

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

SYNOPSIS
     #include <sys/param.h>
     #include <sys/disklabel.h>

     char *
     readdisklabel(dev_t dev, void (*strat)(struct buf *), struct disklabel
     *lp, int spoofonly);

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

     int
     setdisklabel(struct disklabel *olp, struct disklabel *nlp, u_int
     openmask);

     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 drivers.  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
     conversion 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 parametrized 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
     requirements for the I/O operation initiated to get to the disklabel data
     on the medium.  In particular, the field ``d_secsize'', if non-zero, is
     used by readdisklabel() to get an appropriately 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 or spoofonly argument is a true value, 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() returns 0 on success and EINVAL
     if the disk label specifies invalid or unconvertible 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 sanity.  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 signalled 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
     and sets the B_ERROR flag in ``b_flags''.	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'' and the B_ERROR flag is
     set in ``b_flags''.  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.  A zero
     value is returned if any of the bound checks failed or transfer was
     attempted exactly at the end of disk partition.  Otherwise the value of 1
     is returned.

SEE ALSO
     disklabel(5), disklabel(8), fdisk(8)

OpenBSD 4.9			 June 26, 2008			   OpenBSD 4.9
[top]

List of man pages available for OpenBSD

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net