DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 
sdrec(F)

sdrec(F)


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_S  /* 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, vold, and programs using the Volume Manager 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 (i.e., 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_name
The subdisk name. This field cannot be changed directly, although it can be changed by calling vxvm_rename.

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.

sd_path
The path to the underlying block device. For backward compatibility, this can be set for subdisk creation 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_pl_name
The name of the asssociated plex. This field is empty if the subdisk is not associated. This is a read- only field.

sd_comment
A null-terminated comment string associated with the record. The contents are arbitrary except that they cannot contain a new line.

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 Visual Administrator; and the third field for local site administrators.

sd_pflag
Flags associated with the subdisk that are preserved across reboots. The persistent flag that can be set is:

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_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.

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.

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_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_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_len
The length of the subdisk. The subdisk length cannot be changed while the 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_dm_rid
The record ID of the disk media record that the disk is defined on.

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 Visual Administrator; and the third field for local site administrators.

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_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_tflag
A bitmask of flags that is cleared after a reboot. Flags defined in this field are:

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.

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. This is a read-only flag.

V_TFLAG_WRITEONLY
If set, only the write operations can be directed to the plex.

V_TFLAG_DETACH
If set, the subdisk is detached from plex or RAID.

V_TFLAG_DIRTY
If set, the subdisk has been written.

V_TFLAG_ENABLED
If set, the subdisk is enabled.

V_TFLAG_DEVOPEN
If set, there is a device node open on the subdisk.

V_TFLAG_REMOVED
If set, the disk that the subdisk is defined on is in the removed state.

V_TFLAG_NODAREC
If set, the disk that the subdisk is defined on is in the NODAREC state.

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_dm_name
The name of the underlying disk media record.

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.

References

vxintro(ADM), plexrec(F), volmake(F)



Copyright © 2005 The SCO Group, Inc. All rights reserved.