Features/liblvm

= liblvm =

Summary
Add liblvm, a userspace library for application interface to LVM. Fedora project page is here. This will be shipped inside sub packages (lvm2-devel and lvm2-libs) of lvm2 base package.

Owner

 * Name: Dave Wysochanski (Email: dwysocha@redhat.com, IRC: deepthot)

Current status

 * Targeted release:  Fedora 12
 * Last updated: 2009-09-23
 * Percentage of completion: 100%
 * 2009/09/17: latest upstream fixes pushed into rawhide by agk; API not frozen but ready for use by applications
 * 2009/07/28: final fixes and review; lvm2-devel and lvm2-libs packages pushed into rawhide
 * 2009/07/27: bulk of liblvm APIs integrated and working; unit tests passing; header file preliminary review
 * 2009/07/16: lvmerrno patches integrated; device filtering, pv and lv patches in progress
 * 2009/07/14: liblvm VG APIs to create/remove/extend a VG upstream; significant refactoring completed, including vg_read patches
 * 2009/05/08: initial skeleton liblvm build complete; patches outstanding for object attributes and vg_read (pvs / vgs / lvs functionality)

Detailed Description
LVM is currently being used by other software projects. These projects interface with LVM by calling the LVM commandline either by invoking a shell or calling the string-based liblvmcmd. liblvm proposes to create a real API for use by application programs. libLVM features will be driven by the needs of the known primary consumers of the API which are anaconda, system-config-storage, libvirt, and others. One of the main drivers of libLVM is the anaconda storage rewrite, and specifically, system-config-storage. Much of the contents of the initial release of libLVM centers around supporting this effort.

Benefit to Fedora
Applications currently calling the LVM commandline to interface with LVM can be updated to use the new liblvm API providing for more flexibility, better error handling, etc.

Scope
Requires rebasing LVM RPM from upstream, pulling in the latest liblvm code.

Test Plan

 * 1) liblvm will be used by existing lvm tools, which are covered by nightly tests.
 * 2) liblvm will also be unit tested by developers as APIs are developed
 * 3) liblvm will be tested by anaconda team as they do the anaconda rewrite

User Experience

 * 1) Users of the lvm tools should experience no regressions.
 * 2) Users of applications that utilize liblvm should experience no regressions in the applications, and the applications capabilities should be enhanced by liblvm.

Dependencies

 * device-mapper (upstream version in sync with upstream LVM)
 * lvm2 (base package)

Contingency Plan

 * Existing applications calling LVM can still call the lvm commandline and/or use the liblvm2cmd, the commandline string based library.

Documentation

 * http://fedoraproject.org/wiki/LVM/liblvm

Release Notes
Users and applications desiring to use liblvm should use the liblvm header file and link to the liblvm library.