sdrec(4)

NAME

sdrec - structure defining a subdisk record

SYNOPSIS


#include <sys/types.h> 

#include <volintf.h> 

#define NAME_LEN 14 

#define COMMENT_LEN 40 

#define SD_PATH_LEN 32 

#define UTIL_NUM 3 

#define UTIL_LEN 14 

#define NAME_SZ (NAME_LEN + 1) 

#define COMMENT_SZ (COMMENT_LEN + 1) 

#define SD_PATH_SZ (SD_PATH_LEN + 1) 

#define UTIL_SZ (UTIL_LEN + 1) 

struct volseqno { ulong_t seqno_lo, seqno_hi; }; typedef struct volseqno volseqno_t; typedef struct volseqno volrid_t;

struct sdrec { struct sd_tmp sd_tmp; /*non-persistent fields*/ struct sd_perm sd_perm; /*persistent fields*/ };

Fields for the sd_perm structure:

char        sd_name[NAME_SZ];               /*subdisk record name*/
char        sd_path[SD_PATH_SZ];            /*subdisk block device path*/
char        sd_pl_name[NAME_SZ];            /*associated plex name*/
char        sd_comment[COMMENT_SZ];         /*comment field*/
char        sd_putil[UTIL_NUM][UTIL_SZ];    /*persistent util fields*/
ulong_t     sd_pflag;                       /*persistent flags*/
volseqno_t  sd_update_tid;                  /*trans id of last update*/
voff_t      sd_dev_offset;                  /*offset within bdev*/
voff_t      sd_pl_offset;                   /*offset of subdisk in plex*/
voff_t      sd_dm_offset;                   /*offset relative to disk*/
voff_t      sd_len;                         /*byte length of subdisk*/
volrid_t    sd_rid;                         /*unique identifier*/
volrid_t    sd_plex_rid;                    /*record ID of plex*/
volrid_t    sd_dm_rid;                      /*disk media record ID*/

Fields for the sd_tmp structure:

char        sd_tutil[UTIL_NUM][UTIL_SZ];    /*non-persistent util fields*/
dev_t       sd_dev;                         /*block device of subdisk*/
long        sd_lock;                        /*1 if record is locked*/
ulong_t     sd_tflag;                       /*non-persistent flags*/
char        sd_da_name[NAME_SZ];            /*disk access name*/
char        sd_dm_name[NAME_SZ];            /*disk media name*/
char        sd_device_tag[NAME_SZ];         /*device tag*/

DESCRIPTION

A sdrec structure is the structure used to communicate subdisk record information between the volume configuration daemon, vxconfigd, and programs using the Veritas Volume Manager (VxVM) library to query for configurations and to make configuration changes.

The two structures contained in the sdrec structure differentiate elements of the subdisk record that are persistent and that are non-persistent. The division of fields between sd_tmp and sd_perm structures is somewhat historical, however the sd_perm structure contains information that is stored persistently (that is, fields that are recovered unchanged after a system reboot), or is directly derivable from persistent subdisk record information. The sd_tmp field, on the other hand, contains fields that can be modified without the changes being stored persistently.

The uses of the various subdisk fields are defined as follows:
sd_comment A null-terminated comment string associated with the record. The contents are arbitrary except that they cannot contain a new line.
sd_da_name The disk access record name used to access the physical disk media underlying the subdisk. This is empty if the disk media record is in the REMOVED or NODAREC state.
sd_dev The device node for the block device on which the subdisk resides. This is the value that would be returned in the st_rdev field from a stat() of the block device containing the subdisk. This is set to NODEV if the disk media record is in the REMOVED or NODAREC state. This is a read-only field.
sd_dev_offset
  The offset into the underlying disk device from the start of the partition containing the public region to the start of the subdisk. This can differ from the value in sd_dm_offset if the public region does not start at the beginning of its partition.
sd_device_tag
  The the da_device_tag field from the underlying disk access record, or empty of the disk media record is in the REMOVED or NODAREC state.
sd_dm_name The name of the underlying disk media record.
sd_dm_offset
  The offset into the underlying disk device from the start of the public region to the start of the subdisk. This is set on creation of the subdisk and cannot be changed afterwards. This value is in sectors.
sd_dm_rid The record ID of the disk media record that the disk is defined on.
sd_len The length of the subdisk. The subdisk length cannot be changed while the subdisk is associated. This value is in sectors.
sd_lock A boolean value that is 1 if the subdisk is locked in the caller’s current transaction, and 0 otherwise. This is a read-only field.
sd_name The subdisk name. This field cannot be changed directly, although it can be changed by calling vxvm_rename.
sd_path The path to the underlying block device. For backward compatibility, this can be set for subdisk creation (see sd_creat(3X)) if a disk is not specified with sd_dm_rid, sd_dm_name, or sd_da_name. After creation (or if any of the disk identifier fields is set for creation), this field is derived from the block device path for the public region of the disk that the subdisk is defined on. This field can be empty if the disk media record is currently in the REMOVED or NODAREC state.
sd_pflag Flags associated with the subdisk that are preserved across reboots. The persistent flag that can be set is:
SD_PFLAG_KDETACH
  If set, then the kernel detached the subdisk as a result of an I/O failure. This flag remains set until cleared by sd_change.
SD_PFLAG_VOLATILE
  The contents of the underlying block device may not be retained across a reboot. This flag can be set for devices such as RAM disks that are cleared or left in indeterminate states as a result of a power failure or a reboot. This flag is in the pflag field for historical reasons. This field is now derived from the VOLATILE flag from the underlying disk.
SD_PFLAG_STALE
  If set, a disk replacement or a temporary disk failure caused the subdisk contents to become out-of-date, requiring recovery of the subdisk from any other available source. This flag remains set until cleared by sd_change.
sd_pl_name The name of the associated plex. This field is empty if the subdisk is not associated. This is a read-only field.
sd_pl_offset
  The association offset of the subdisk within its associated plex. This is a read-only field that is set automatically when a subdisk is associated. This value is in sectors.
sd_plex_rid
  The record ID of the associated plex, or zero if the subdisk is not associated with a plex.
sd_putil An array of three null-terminated strings that can be used as scratch pads by utilities. These fields are preserved across reboots. By convention, the first field is reserved for usage types; the second field for higher-level applications, such as the Veritas Storage Administrator; and the third field for local site administrators.
sd_tflag A bitmask of flags that is cleared after a reboot. Flags defined in this field are:
V_TFLAG_DETACH
  If set, the subdisk is detached from plex or RAID.
V_TFLAG_DEVOPEN
  If set, there is a device node open on the subdisk.
V_TFLAG_DIRTY
  If set, the subdisk has been written.
V_TFLAG_ENABLED
  If set, the subdisk is enabled.
V_TFLAG_IS_LOG
  This flag is set by the kernel or by vxconfigd to indicate that the subdisk is associated with a plex as a log subdisk. (See sd_as_log(3X) for more information). This is a read-only flag.
V_TFLAG_NODAREC
  If set, the disk that the subdisk is defined on is in the NODAREC state. (See dm(3X) for more information).
V_TFLAG_REMOVED
  If set, the disk that the subdisk is defined on is in the removed state. (See dm(3X) for more information).
V_TFLAG_WRITEONLY
  If set, only the write operations can be directed to the plex.
VK_OPEN
  The subdisk is associated with a plex or volume whose corresponding device node has been opened or mounted. This flag is maintained by the kernel.
sd_tutil An array of three null-terminated strings that can be used as scratch pads by utilities. These fields are cleared on reboot. By convention, the first field is reserved for usage types; the second field for higher-level applications, such as OA&M scripts and the Veritas Storage Administrator; and the third field for local site administrators.
v_rid This is a 64-bit record ID assigned to the plex record, which is unique within the disk group for the duration of existence for the disk group. This does not change as a result of a vxvm_rename, even though the record name changes.
v_update_tid
  The transaction ID of the last update to this record. This field is assigned when changes to a disk group are committed. See vol_commit(3X).

SEE ALSO

vxintro(1M), da(3X), dg(3X), dm(3X), sd_as_log(3X), vxintro(3X), plexrec(4), vxmake(4)


VxVM 7.0 sdrec(4)