[ Previous | Next | Contents | Glossary | Home | Search ]
AIX Version 4.3 Base Operating System and Extensions Technical Reference, Volume 1

lvm_createlv Subroutine


Creates an empty logical volume in a specified volume group.


Logical Volume Manager Library (liblvm.a)


#include <lvm.h>
int lvm_createlv 
struct createlv *CreateLV;


Note: You must have root user authority to use this subroutine.

The lvm_createlv subroutine creates an empty logical volume in an existing volume group with the information supplied. The lvm_extendlv subroutine should be called to allocate partitions once the logical volume is created.

The createlv structure pointed to by the CreateLV parameter is defined in the lvm.h file and contains the following fields:

struct createlv {
  char *lvname;
  struct unique_id vg_id;
  long minor_num;
  long maxsize;
  long mirror_policy;
  long permissions;
  long bb_relocation;
  long write_verify;
  long mirwrt_consist;
struct unique_id{
    unsigned long word1;
    unsigned long word2;
    unsigned long word3;
    unsigned long word4;
    unsigned int word1;
    unsigned int word2;
    unsigned int word3;
    unsigned int word4;
Field Definition
lvname Specifies the special file name of the logical volume, and can be either the full path name or a single file name that must reside in the /dev directory (for example, rhd1). All name fields must be null-terminated strings of from 1 to LVM_NAMESIZ bytes, including the null byte. If a raw or character device is not specified for the  lvname field, the Logical Volume Manager (LVM) will add an r to the file name in order to have a raw device name. If there is no raw device entry for this name, the LVM will return the LVM_NOTCHARDEV error code.
vg_id Specifies the unique ID of the volume group that will contain the logical volume.
minor_num Must be in the range from 1 to the maxlvs value. The maxlvs field is set when a volume group is created and is returned by the lvm_queryvg subroutine.
maxsize Indicates the maximum size in logical partitions for the logical volume and must be in the range of 1 to LVM_MAXLPS.
mirror_policy Specifies how the physical copies will be written. The mirror_policy field should be either LVM_SEQUENTIAL or LVM_PARALLEL to indicate how the physical copies of a logical partition are to be written when there is more than one copy.
permissions Indicates read/write or read only permission for the logical volume.
bb_relocation Indicates that bad block relocation is desired.
write_verify Indicates that writes to the logical volume are to be verified as successful.
mirwrt_consist Indicates whether mirror write consistency recovery will be performed for this logical volume.

The LVM always ensures data consistency among mirrored copies of a logical volume during normal I/O processing. For every write to a logical volume, the LVM generates a write request for every mirror copy. A problem arises if the system crashes in the middle of processing a mirrored write (before all copies are written). If mirror-write consistency recovery is requested for a logical volume, the LVM keeps additional information to allow recovery of these inconsistent mirrors. Mirror write consistency recovery should be performed for most mirrored logical volumes. Logical volumes, such as the page space, that do not use the existing data when the volume group is re-varied on do not need this protection.

All fields in the createlv structure must have a valid value in them, or an error will be returned.

The lvm_createlv subroutine uses the createlv structure to build an information area for the logical volume. If the volume group that is to contain this logical volume is not varied on-line, the LVM_OFFLINE error code is returned.

Possible values for the mirror_policy field are:

LVM_SEQUENTIAL For this logical volume, use a sequential method of writing the physical copies (if more than one) of a logical partition.
LVM_PARALLEL For this logical volume, use a parallel method of writing the physical copies (if more than one) of a logical partition.

Possible values for the permissions field are:

LVM_RDONLY Create the logical volume with read only permission.
LVM_RDWR Create the logical volume with read/write permission.

Possible values for the bb_relocation field are:

LVM_RELOC Bad block relocation is desired.
LVM_NORELOC Bad block relocation is not desired.

Possible values for the write_verify field are:

LVM_VERIFY Write verification is desired.
LVM_NOVERIFY Write verification is not desired.

Possible values for the mirwrt_consist field are:

LVM_CONSIST Mirror write consistency recovery will be done for this logical volume.
LVM_NOCONSIST Mirror write consistency recovery will not be done for this logical volume.


CreateLV Points to the createlv structure.

Return Values

The lvm_createlv subroutine returns a value of 0 upon successful completion.

Error Codes

If the lvm_createlv subroutine fails, it returns one of the following values:

LVM_ALLOCERR A memory allocation error has occurred.
LVM_DALVOPN The descriptor area logical volume could not be opened.
LVM_FORCEOFF The volume group has been forcefully varied off due to a loss of quorum.
LVM_INVALID_MIN_NUM A minor number passed into the routine is invalid.
LVM_INVALID_PARAM A field in the createlv structure is invalid, or the pointer to the createlv structure is invalid.
LVM_INV_DEVENT The logical volume device entry is invalid and cannot be checked to determine if it is raw.
LVM_LVEXIST A logical volume already exists with the name passed into the routine.
LVM_MAPFBSY The volume group is currently locked because system management on the volume group is being done by another process.
LVM_MAPFOPN The mapped file, which contains a copy of the volume group descriptor area used for making changes to the volume group, could not be opened.
LVM_MAPFRDWR An error occurred while trying to read or write the mapped file.
LVM_NOTCHARDEV The lvname name given does not represent a raw or character device.
LVM_OFFLINE A routine that requires a volume group to be online has encountered one that is offline.
LVM_VGFULL The volume group that the logical volume was requested to be a member of already has the maximum number of logical volumes.

Implementation Specifics

This subroutine is part of Base Operating System (BOS) Runtime.

Related Information

The lvm_extendlv subroutine, lvm_querylv subroutine, lvm_queryvg subroutine, lvm_varyonvg subroutine.

List of Logical Volume Subroutines and Logical Volume Programming Overview in AIX Version 4.3 General Programming Concepts: Writing and Debugging Programs.

[ Previous | Next | Contents | Glossary | Home | Search ]