Logical Volume Manager Changelog                        04/28/1998 - 05/26/1998

Changelog for LVM 0.2alpha to 0.3alpha
--------------------------------------

LVM
---
general          - ported to Linux 2.1.98 to 2.1.102
                 - added support for free volume group and
                   logical volume names
                 - added support for MD (multiple device) usage
                 - implemented full pvmove function to be able to move
                   all types of logical volumes (linear/striped/contiguous)
                 - added LVM shared library
                 - added checking for /etc/lvmtab and /etc/lvmtab.d existence
                 - changed name of ??_store* functions to ??_write*
                   to get consistency with ??_read* function names
                 - avoided creating backup files, if they didn't change

Driver
------
lv_chr_ioctl     - implemented LV_STATUS_BYINDEX ioctl
                 - changed LV_STATUS to LV_STATUS_BYNAME ioctl
                 - implemented VG_SET_EXTENDABLE ioctl

lvm_map          - added IDE4/IDE5 majors for Linux > 2.1.9x

lvm_proc_get_info
                 - changed output format of /proc/lvm

lvm.h            - reintegrated lvm_v1.h to form one lvm.h with all
                   structure versions


Tools
-----
lvcreate         - implemented -n option for free logical volume names

lvrename         - implemented; supports renaming of logical volumes

lvscan           - implemented; scans for logical volumes in all volume groups

pvchange         - avoided option -c

pvdisplay        - implemented option -s

pvmove           - implemented physical extend move for a single logical
                   volume; supported striped and/or contiguous logical volumes

vgchange         - implemented option -x

vgextend
vgreduce         - added extension/reduction lock (vgchange -x n ...)

vgdisplay        - used vg_read_with_pv_and_lv() instead of
                   lvm_tab_vg_read_with_pv_and_lv() for option -D

vgmknodes        - implemented to support creation of volume group
                   directory and special files in case of deletion

vgrename         - implemented; supports renaming of volume groups

pvcreate
vgcfgrestore
vgcreate
vgimport
vgexport
vgrename
vgremove
vgscan            - enhanced error checking of lvm_tab_vg_insert() and
                    lvm_tab_vg_remove()

vgrestore         - changed to support restore to dedicated physical volume
                    and to support path changes between physical volume
                    pathes on backup and actual physical volume pathes

pvchange
pvscan
vgimport          - obsoleted physical volume name change
                    (it's now in pv_read())



Library-Functions
-----------------
lvm_check_dev    - implemented to check for usable devices (SCSI, IDE, MD);
                   added IDE4/IDE5 majors for Linux > 2.1.9x

lvm_dir_cache    - implemented as directory cache function for block devices
                   (used to avoid direct directory handling in
                    pv_create_name_from_kdev_t.c, pv_read.c and pv_status.c)

lvm_filetype_show
                 - implemented

lvm_tab_vg_insert
lvm_tab_vg_remove
                 - several bug fixes

vg_number_from_name
lv_create_number_from_name
lv_number_from_name
lv_create_name   - removed (obsolete)

lv_number_from_name_in_vg
                 - implemented to avoid inline name string creation
                   (this obsoletd lv_number_from_name())

lvm_tab_get_free_vg_number
                 - bug fix for empty/no lvmtab file

pv_move_pes      - implemented; calculates multiple PEs to be moved
pv_move_pe       - implemented; called by pv_move_pes() to move one PE

pv_create_name_from_kdev_t
pv_read_all_pv
pv_status_all_pv - avoided direct directory scanning
                   (it's now in lvm_dir_cache())

pv_read          - implemented correction of physical volume name to
                   avoid it in the tools level

vg_check_exist   - bug fix for handling exported volume groups

lv_create_kdev_t.c
pv_check_consistency.c
pv_check_name
pv_create_name_from_kdev_t.c
pv_read.c
vg_create_dir_and_group.c
                 - added multiple device support

vg_show          - implemented display of extension/reduction lock

vg_set_extendable
vg_clear_extendable
                 - implemented


===========================================================================
Changelog for LVM 0.1alpha to 0.2alpha
--------------------------------------

LVM
---
general          - ported to Linux 2.1.60-62
                 - tested with Linux 2.1.31


Driver
------
lvm_chr_ioctl    - implemented ioctls to get number of active VGs
                   and list of VG names
                 - implemented ioctl to give an i/o protocol number


Tools
-----
all              - switched to lvm_tab_* functions to gain performance
                 - added several messages
                 - fixed stdin close bug

vgcfgrestore     - moved restore code partially to lib

vgscan           - implemented: builds /etc/lvmtab and /etc/lvmtab.d
                   from VGDAs on PVs




Library-Functions
-----------------

general         - inititlized all file handles with -1 to
                  avoid error close of stdin
                - started support for free VG and LV names

pv_get_index_by_kdev_t
                - renamed from pv_get_index

pv_get_index_by_name
                - implemented

lvm_get_iop_version
               - implemented: get's i/o protocol version from kernel

lvm_tab_lv_check_exist
                - implemented

lvm_tab_vg_insert
                - implemented

lvm_tab_vg_read_with_pv_and_lv
                - implemented

lvm_tab_vg_read
                - implemented

lvm_tab_vg_remove
                - implemented

lvm_tab_vg_check_exist
                - implemented

lvm_tab_vg_check_exist_all_vg
                - implemented

lvm_tab_read
                - implemented

lvm_tab_store
                - implemented

lv_get_index_by_name
                - renamed form lv_get_index and changed formal paramter
                  list sequence

lv_get_index_by_kdev_t
                - implemented

lv_status_all_lv_of_vg
                - changed formal parameters to avoid vg_read - call

vg_remove_dir_and_group_and_nodes
                - implemented

vg_cfgbackup    - added option to avoid .old backups and .conf
                  suffixes for /etc/lvmtab.d

vg_cfgrestore   - implemented

vg_status       - changed formal parameters in call to lv_status_all_lv_of_vg




===========================================================================
Changelog for LVM 0.0alpha to 0.1alpha
--------------------------------------

LVM
---
general          - Ported to Linux 2.1.57


Driver
------
general          - fixed some NULL-Pointer references
                 - added use of ioctl macros

lvm_chr_open /   - fixed race condition
lvm_chr_close

lvm_chr_ioctl    - implemented physical volume flush and invalidate buffers
                   ioctl to avoid reading data of inavailable physical
                   volumes from buffer cache (see pv_flush in library)
            
Tools
-----
lvcreate         - several messages added

lvreduce         - fixed segfault

pvcreate         - corrected option -f handling

pvdata           - removed direct read of physical vlome name list
                   from disk; used new pv_read_namelist() instead

pvmove           - several bugs fixed

pvscan           - added informational message to use pvchange in case
                   of invalid physical volume name (caused by HW changes)
                 - changed messages for physical volume in no volume group /
                   in exported volume group

vgdisplay        - added -s option: displays short listing of
                                    existing volume groups

vgimport         - fixed wrong correction handling of device names

vgreduce         - fixed segfault
                 - avoided reducing to 0 physical volumes
                 - added -a option: reduces volume group by all free
                                    physical volumes


Library-Functions
-----------------
general          - fixed bugs with always using pv[0] instead off actual pv

pv_check_part    - added support for extended partitions

pv_create_name_from_kdev_t
                 - corrected and extended PV name generation for IDE

pv_flush         - user space part to flush buffer cache and invalidate
                   buffers for individual physical volumes
                   (see PV_FLUSH in lvm_chr_ioctl of driver)

pv_get_size      - extended partitions now supported

pv_number_check  - implemented

pv_read          - finished looping trough all possible device specials
                   after ENODEVs and ENXIOs to become faster;
                   called pv_flush before reads

pv_read_all_pe_of_vg
                 - used pv_number_check to sort PE arrays by PV number

pv_read_namelist - implemented to read namelist from the VGDA on disk

vg_check_name    - support for full volume group path (eg. /dev/vg00)

vg_show          - added a row for maximum logical volume size
