diff -Naur linux-2002-03-06/Documentation/Configure.help evms-2002-03-06/Documentation/Configure.help --- linux-2002-03-06/Documentation/Configure.help Wed Mar 6 09:29:44 2002 +++ evms-2002-03-06/Documentation/Configure.help Tue Feb 26 07:35:50 2002 @@ -1671,6 +1671,196 @@ called on26.o. You must also have a high-level driver for the type of device that you want to support. +EVMS Kernel Runtime +CONFIG_EVMS + EVMS runtime driver. This is a plugin-based framework for volume + management, and combines support for partitioning, software RAID, + LVM, and more into a single interface. + + User-space tools are required to perform administration of EVMS logical + volumes. Please visit for + more details on downloading and installing these tools. + + This driver is also available as a pair of modules called evms.o and + evms_passthru.o ( = code which can be inserted and removed from the + running kernel whenever you want). If you want to compile it as a module, + say M here and read . + +EVMS Local Device Manager Plugin +CONFIG_EVMS_LOCAL_DEV_MGR_PLUGIN + Support for local IDE and SCSI devices. This plugin is required if EVMS + support is selected. + + This plugin is also available as a kernel module called ldev_mgr.o. + +EVMS DOS Partition Manager Plugin +CONFIG_EVMS_DOS_PARTITION_PLUGIN + Support for recognizing all partitions using the ever-popular DOS + partitioning scheme (MBRs & EBRs). 99% of the time you will need + this plugin to do anything useful with EVMS. + + This plugin also contains support for recognizing BSD disklabels, + UNIXWARE partitions, Solaris-X86 partitions, and OS/2 DLAT entries. + + This plugin is also available as a kernel module called dos_part.o. + +EVMS GPT Partition Manager Plugin +CONFIG_EVMS_GPT_PARTITION_PLUGIN + Support for recognizing all partitions using the new EFI GUID partitioning + scheme that is used by IA-64 machines. You should only need to enable this + plugin if you are running Linux on an IA-64 machine. All other architectures + can say 'N' here. + + This plugin is also available as a kernel module called gpt_part.o + +EVMS S/390 Partition Manager Plugin +CONFIG_EVMS_S390_PART_PLUGIN + Support for recognizing all partitions created on S/390 machines. This + plugin recognizes CDL, LDL, and CMS partition formats. You should only need + to enable this plugin if you are running Linux on an S/390. All other + architectures can say 'N' here. + + This plugin is also available as a kernel module called s390_part.o + +EVMS SnapShot Feature Plugin +CONFIG_EVMS_SNAPSHOT_PLUGIN + This feature plugin lets you create a snapshot of any volume + under EVMS control using any other device under under EVMS + control as the target for the snapshot volume. + + This plugin is also available as a kernel module called snapshot.o. + +EVMS DriveLink Feature Plugin +CONFIG_EVMS_DRIVELINK_PLUGIN + This feature plugin lets you combine multiple devices into a + single virtual block device. The size of the virtual block + device is approximately equal to the sum of all its components. + It currently supports combining up to 60 devices (partitions, + disks, or logical volumes). + + This plugin is also available as a kernel module called evms_drivelink.o. + +EVMS Bad Block Relocation (BBR) Feature +CONFIG_EVMS_BBR_PLUGIN + BBR is designed to remap I/O write failures to another safe + location on disk. Note that most disk drives have BBR built + into them, so software BBR will only be activated when all + hardware BBR replacement sectors have been used. + + This plugin is also available as a kernel module called evms_bbr.o. + +EVMS Linux LVM Plugin +CONFIG_EVMS_LVM_PLUGIN + The LVM plugin is responsible for providing compatibility with the Linux + LVM. This plugin recognizes disks and partitions that are LVM physical + volumes (PVs), and assembles the appropriate volume groups (VGs). LVM + logical volumes (LVs) are exported as EVMS volumes with full read/write + support. In addition, support for striped and snapshotted volumes is + included. The corresponding EVMS Engine plugin must also be installed in + order to perform any administration of LVM VGs and LVs. + + This plugin is also available as a kernel module called lvm_vge.o. + +EVMS MD Plugin +CONFIG_EVMS_MD_PLUGIN + The MD plugin is responsible for providing compatibility with the Linux + Software RAID driver (MD). It allows several devices to be combined into + one logical device. This can be used to simply append one disk or + partition to another, or to combine several redundant disks into a + RAID 1/4/5 device so as to provide protection against hard disk failures. + + This plugin is also available as a kernel module called md_core.o. + +EVMS MD RAID-Linear Plugin +CONFIG_EVMS_MD_LINEAR_PERS + The RAID-Linear personality combines disks and/or partitions simply by + appending one to the other. + + This plugin is also available as a kernel module called md_linear.o. + +EVMS MD RAID-0 Plugin +CONFIG_EVMS_MD_RAID0_PERS + The RAID-0 personality combines disks and/or partitions into one + logical device using striping. This method writes data evenly across + all members in the device in order to increase the throughput rate if + each member resides on a distinct disk. + + This plugin is also available as a kernel module called md_raid0.o. + +EVMS MD RAID-1 Plugin +CONFIG_EVMS_MD_RAID1_PERS + The RAID-1 personality implements mirroring, in which a logical device + consists of several disks that are exact copies of each other. In the + event of a mirror failure, the RAID-1 personality will continue to use + the remaining mirrors in the set, providing an error free device to the + higher levels of the kernel. In a set with N drives, the available space + is the capacity of a single drive, and the set protects against the + failure of N-1 drives. + + This plugin is also available as a kernel module called md_raid1.o. + +EVMS MD RAID-4/RAID-5 Plugin +CONFIG_EVMS_MD_RAID5_PERS + A RAID-5 set of N drives with a capacity of C MB per drive provides + the capacity of C * (N-1) MB, and protects against a failure of a + single drive. For a given sector (row) number, (N-1) drives contain + data sectors, and one drive contains the parity protection. For a + RAID-4 set, the parity blocks are present on a single drive, while + a RAID-5 set distributes the parity across all drives in one of the + available parity distribution methods. + + This plugin is also available as a kernel module called md_raid5.o. + +EVMS AIX LVM Plugin +CONFIG_EVMS_AIX_PLUGIN + The AIX LVM plugin is responsible for providing compatibility with the + AIX LVM. This plugin recognizes disks and partitions that are AIX disks, + and assembles the appropriate volume groups. AIX logical volumes are + exported as EVMS volumes with full read/write support. In addition, + support for striped volumes is included, and support for mirroring is + under development. + + You should only need to select this option if you are running on a PPC + machine and want to access AIX LVM volumes. The user-space plugin for + AIX will be available in the future. + + This plugin is also available as a kernel module called AIXlvm_vge.o. + +EVMS OS/2 LVM Plugin +CONFIG_EVMS_OS2_PLUGIN + Support for recognizing the type 0x35 partitions that later versions + of OS/2 use in its Logical Volume Manager. Provides binary + compatibility and includes Drive Linking and Bad Block Relocation + emulation. The user-space plugin for OS/2 will be available in the future. + + This plugin is also available as a kernel module called os2lvm_vge.o. + +EVMS Clustering Plugin +CONFIG_EVMS_ECR_PLUGIN + + The EVMS Clustering Plugin is still under design and development. + Best to just say 'n' here. + + This plugin is available as a kernel module called evms_ecr.o. + +EVMS Debug Level +CONFIG_EVMS_INFO_CRITICAL + Set the level for kernel messages from EVMS. Each level on the list + produces message for that level and all levels above it. Thus, level + "Critical" only logs the most critical messages (and thus the fewest), + whereas level "Everything" produces more information that will probably + ever be useful. Level "Default" is a good starting point. Level "Debug" + is good if you are having problems with EVMS and want more basic info + on what's going on during the volume discovery process. + + EVMS also supports a boot-time kernel parameter to set the info level. + To use this method, specify "evms_info_level=5" at boot time, or add the + line "append = "evms_info_level=5"" to your lilo.conf file (replacing 5 + with your desired info level). See include/linux/evms/evms.h for the + numerical definitions of the info levels. To use this boot-time parameter, + the EVMS core driver must be statically built into the kernel (not as a + module). + Logical Volume Manager (LVM) support CONFIG_BLK_DEV_LVM This driver lets you combine several hard disks, hard disk diff -Naur linux-2002-03-06/MAINTAINERS evms-2002-03-06/MAINTAINERS --- linux-2002-03-06/MAINTAINERS Wed Mar 6 09:29:44 2002 +++ evms-2002-03-06/MAINTAINERS Mon Mar 4 09:15:39 2002 @@ -525,6 +525,13 @@ W: http://opensource.creative.com/ S: Maintained +ENTERPRISE VOLUME MANAGEMENT SYSTEM (EVMS) +P: Mark Peloquin, Steve Pratt, Kevin Corry +M: peloquin@us.ibm.com, slpratt@us.ibm.com, corryk@us.ibm.com +L: evms-devel@lists.sourceforge.net +W: http://www.sourceforge.net/projects/evms/ +S: Supported + ETHEREXPRESS-16 NETWORK DRIVER P: Philip Blundell M: Philip.Blundell@pobox.com diff -Naur linux-2002-03-06/Makefile evms-2002-03-06/Makefile --- linux-2002-03-06/Makefile Wed Mar 6 09:29:44 2002 +++ evms-2002-03-06/Makefile Tue Feb 26 07:34:46 2002 @@ -185,6 +185,7 @@ DRIVERS-$(CONFIG_MD) += drivers/md/mddev.o DRIVERS-$(CONFIG_BLUEZ) += drivers/bluetooth/bluetooth.o DRIVERS-$(CONFIG_HOTPLUG_PCI) += drivers/hotplug/vmlinux-obj.o +DRIVERS-$(CONFIG_EVMS) += drivers/evms/evmsdrvr.o DRIVERS := $(DRIVERS-y) diff -Naur linux-2002-03-06/arch/i386/config.in evms-2002-03-06/arch/i386/config.in --- linux-2002-03-06/arch/i386/config.in Wed Mar 6 09:29:44 2002 +++ evms-2002-03-06/arch/i386/config.in Tue Feb 26 07:35:06 2002 @@ -298,6 +298,8 @@ source drivers/block/Config.in +source drivers/evms/Config.in + source drivers/md/Config.in if [ "$CONFIG_NET" = "y" ]; then diff -Naur linux-2002-03-06/arch/ia64/config.in evms-2002-03-06/arch/ia64/config.in --- linux-2002-03-06/arch/ia64/config.in Wed Mar 6 09:29:44 2002 +++ evms-2002-03-06/arch/ia64/config.in Wed Mar 6 09:28:30 2002 @@ -136,6 +136,7 @@ source drivers/pnp/Config.in source drivers/block/Config.in source drivers/message/i2o/Config.in +source drivers/evms/Config.in source drivers/md/Config.in mainmenu_option next_comment diff -Naur linux-2002-03-06/arch/ppc/config.in evms-2002-03-06/arch/ppc/config.in --- linux-2002-03-06/arch/ppc/config.in Wed Mar 6 09:29:44 2002 +++ evms-2002-03-06/arch/ppc/config.in Tue Feb 26 07:35:25 2002 @@ -241,6 +241,7 @@ source drivers/mtd/Config.in source drivers/pnp/Config.in source drivers/block/Config.in +source drivers/evms/Config.in source drivers/md/Config.in if [ "$CONFIG_NET" = "y" ]; then diff -Naur linux-2002-03-06/arch/parisc/config.in evms-2002-03-06/arch/parisc/config.in --- linux-2002-03-06/arch/parisc/config.in Wed Mar 6 09:29:44 2002 +++ evms-2002-03-06/arch/parisc/config.in Wed Mar 6 09:27:06 2002 @@ -106,6 +106,8 @@ source drivers/block/Config.in +source drivers/evms/Config.in + if [ "$CONFIG_NET" = "y" ]; then source net/Config.in fi diff -Naur linux-2002-03-06/arch/s390/config.in evms-2002-03-06/arch/s390/config.in --- linux-2002-03-06/arch/s390/config.in Wed Mar 6 09:29:44 2002 +++ evms-2002-03-06/arch/s390/config.in Wed Mar 6 07:47:50 2002 @@ -57,6 +57,8 @@ source drivers/s390/Config.in +source drivers/evms/Config.in + if [ "$CONFIG_NET" = "y" ]; then source net/Config.in fi diff -Naur linux-2002-03-06/arch/s390x/config.in evms-2002-03-06/arch/s390x/config.in --- linux-2002-03-06/arch/s390x/config.in Wed Mar 6 09:29:44 2002 +++ evms-2002-03-06/arch/s390x/config.in Wed Mar 6 09:27:06 2002 @@ -61,6 +61,8 @@ source drivers/s390/Config.in +source drivers/evms/Config.in + if [ "$CONFIG_NET" = "y" ]; then source net/Config.in fi diff -Naur linux-2002-03-06/drivers/Makefile evms-2002-03-06/drivers/Makefile --- linux-2002-03-06/drivers/Makefile Wed Mar 6 09:29:44 2002 +++ evms-2002-03-06/drivers/Makefile Tue Feb 26 07:36:13 2002 @@ -8,7 +8,7 @@ mod-subdirs := dio mtd sbus video macintosh usb input telephony sgi ide \ message/i2o message/fusion scsi md ieee1394 pnp isdn atm \ - fc4 net/hamradio i2c acpi bluetooth + fc4 net/hamradio i2c acpi bluetooth evms subdir-y := parport char block net sound misc media cdrom hotplug subdir-m := $(subdir-y) @@ -46,5 +46,6 @@ subdir-$(CONFIG_ACPI) += acpi subdir-$(CONFIG_BLUEZ) += bluetooth +subdir-$(CONFIG_EVMS) += evms include $(TOPDIR)/Rules.make diff -Naur linux-2002-03-06/drivers/block/genhd.c evms-2002-03-06/drivers/block/genhd.c --- linux-2002-03-06/drivers/block/genhd.c Wed Mar 6 09:29:44 2002 +++ evms-2002-03-06/drivers/block/genhd.c Tue Feb 26 07:36:28 2002 @@ -130,6 +130,32 @@ EXPORT_SYMBOL(get_gendisk); +/** + * walk_gendisk - issue a command for every registered gendisk + * @walk: user-specified callback + * @data: opaque data for the callback + * + * This function walks through the gendisk chain and calls back + * into @walk for every element. + */ +int +walk_gendisk(int (*walk)(struct gendisk *, void *), void *data) +{ + struct gendisk *gp; + int error = 0; + + read_lock(&gendisk_lock); + for (gp = gendisk_head; gp; gp = gp->next) + if ((error = walk(gp, data))) + break; + read_unlock(&gendisk_lock); + + return error; +} + +EXPORT_SYMBOL(walk_gendisk); + + #ifdef CONFIG_PROC_FS int get_partition_list(char *page, char **start, off_t offset, int count) diff -Naur linux-2002-03-06/include/linux/genhd.h evms-2002-03-06/include/linux/genhd.h --- linux-2002-03-06/include/linux/genhd.h Wed Mar 6 09:29:44 2002 +++ evms-2002-03-06/include/linux/genhd.h Tue Feb 26 07:36:57 2002 @@ -92,6 +92,7 @@ extern void add_gendisk(struct gendisk *gp); extern void del_gendisk(struct gendisk *gp); extern struct gendisk *get_gendisk(kdev_t dev); +extern int walk_gendisk(int (*walk)(struct gendisk *, void *), void *); #endif /* __KERNEL__ */ diff -Naur linux-2002-03-06/include/linux/sysctl.h evms-2002-03-06/include/linux/sysctl.h --- linux-2002-03-06/include/linux/sysctl.h Wed Mar 6 09:29:44 2002 +++ evms-2002-03-06/include/linux/sysctl.h Tue Feb 26 07:36:57 2002 @@ -553,7 +553,8 @@ DEV_HWMON=2, DEV_PARPORT=3, DEV_RAID=4, - DEV_MAC_HID=5 + DEV_MAC_HID=5, + DEV_EVMS=6 }; /* /proc/sys/dev/cdrom */ @@ -569,6 +570,18 @@ /* /proc/sys/dev/parport */ enum { DEV_PARPORT_DEFAULT=-3 +}; + +/* /proc/sys/dev/evms */ +enum { + DEV_EVMS_INFO_LEVEL=1, + DEV_EVMS_MD=2 +}; + +/* /proc/sys/dev/evms/raid */ +enum { + DEV_EVMS_MD_SPEED_LIMIT_MIN=1, + DEV_EVMS_MD_SPEED_LIMIT_MAX=2 }; /* /proc/sys/dev/raid */ diff -Naur linux-2002-03-06/init/main.c evms-2002-03-06/init/main.c --- linux-2002-03-06/init/main.c Wed Mar 6 09:29:44 2002 +++ evms-2002-03-06/init/main.c Tue Feb 26 07:37:19 2002 @@ -269,6 +269,7 @@ { "ftlc", 0x2c10 }, { "ftld", 0x2c18 }, { "mtdblock", 0x1f00 }, + { "evms", 0x3f00 }, { NULL, 0 } }; diff -Naur linux-2002-03-06/kernel/ksyms.c evms-2002-03-06/kernel/ksyms.c --- linux-2002-03-06/kernel/ksyms.c Wed Mar 6 09:29:44 2002 +++ evms-2002-03-06/kernel/ksyms.c Tue Mar 5 14:53:51 2002 @@ -311,6 +311,8 @@ EXPORT_SYMBOL(refile_buffer); EXPORT_SYMBOL(max_sectors); EXPORT_SYMBOL(max_readahead); +EXPORT_SYMBOL(is_swap_partition); +EXPORT_SYMBOL(root_device_name); /* tty routines */ EXPORT_SYMBOL(tty_hangup);