Top Half of LVDD

The top half of the LVDD contains the code that runs in the context of a process address space and can page fault.

It contains the following entry points:

Item Description
ddopen Called by the file system when a logical volume is mounted, to open the logical volume specified.
ddclose Called by the file system when a logical volume is unmounted, to close the logical volume specified.
ddconfig Initializes data structures for the LVDD.
ddread Called by the read subroutine to translate character I/O requests to block I/O requests. This entry point verifies that the request is on a 512-byte boundary and is a multiple of 512 bytes in length.

Most of the time a request will be sent down as a single request to the LVDD ddstrategy entry point which handles logical block I/O requests. However, the ddread routine might divide very large requests into multiple requests that are passed to the LVDD ddstrategy entry point.

If the ext parameter is set (called by the readx subroutine), the ddread entry point passes this parameter to the LVDD ddstrategy routine in the b_options field of the buffer header.

ddwrite Called by the write subroutine to translate character I/O requests to block I/O requests. The LVDD ddwrite routine performs the same processing for a write request as the LVDD ddread routine does for read requests.
ddioctl Supports the following operations:
CACLNUP
Causes the mirror write consistency (MWC) cache to be written to all physical volumes (PVs) in a volume group.
IOCINFO, XLATE
Return LVM configuration information and PP status information.
LV_INFO
Provides information about a logical volume.
PBUFCNT
Increases the number of physical buffer headers (pbufs) in the LVM pbuf pool.