diff -Naur linux-2002-03-06/MAINTAINERS evms-2002-03-06/MAINTAINERS
--- linux-2002-03-06/MAINTAINERS	Wed Mar  6 09:35:15 2002
+++ evms-2002-03-06/MAINTAINERS	Mon Mar  4 08:49:55 2002
@@ -518,6 +518,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:35:15 2002
+++ evms-2002-03-06/Makefile	Thu Feb 21 14:37:23 2002
@@ -187,6 +187,7 @@
 DRIVERS-$(CONFIG_BLUEZ) += drivers/bluetooth/bluetooth.o
 DRIVERS-$(CONFIG_HOTPLUG_PCI) += drivers/hotplug/vmlinux-obj.o
 DRIVERS-$(CONFIG_ISDN) += drivers/isdn/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:35:15 2002
+++ evms-2002-03-06/arch/i386/config.in	Thu Feb 21 14:38:19 2002
@@ -290,6 +290,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:35:15 2002
+++ evms-2002-03-06/arch/ia64/config.in	Wed Mar  6 09:34:09 2002
@@ -120,6 +120,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:35:15 2002
+++ evms-2002-03-06/arch/ppc/config.in	Thu Feb 21 14:38:44 2002
@@ -410,6 +410,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:35:15 2002
+++ evms-2002-03-06/arch/parisc/config.in	Wed Mar  6 07:53:00 2002
@@ -98,6 +98,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:35:15 2002
+++ evms-2002-03-06/arch/s390/config.in	Wed Mar  6 07:53:00 2002
@@ -41,6 +41,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:35:15 2002
+++ evms-2002-03-06/arch/s390x/config.in	Wed Mar  6 09:33:55 2002
@@ -44,6 +44,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:35:15 2002
+++ evms-2002-03-06/drivers/Makefile	Thu Feb 21 14:39:12 2002
@@ -8,7 +8,8 @@
 
 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 input/serio input/gameport
+		fc4 net/hamradio i2c acpi bluetooth input/serio input/gameport \
+		evms
 
 subdir-y :=	base parport char block net misc media cdrom hotplug
 subdir-m :=	$(subdir-y)
@@ -48,5 +49,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:35:15 2002
+++ evms-2002-03-06/drivers/block/genhd.c	Tue Jan 15 08:19:34 2002
@@ -117,6 +117,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);
+
+
 unsigned long
 get_start_sect(kdev_t dev)
 {
diff -Naur linux-2002-03-06/include/linux/fs.h evms-2002-03-06/include/linux/fs.h
--- linux-2002-03-06/include/linux/fs.h	Wed Mar  6 09:35:15 2002
+++ evms-2002-03-06/include/linux/fs.h	Thu Feb 21 14:40:39 2002
@@ -1484,7 +1484,7 @@
 	return 0;
 }
 extern kdev_t ROOT_DEV;
-extern char root_device_name[];
+extern void get_root_device_name( char * root_name );
 
 
 extern void show_buffers(void);
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:35:15 2002
+++ evms-2002-03-06/include/linux/genhd.h	Tue Jan 15 08:20:22 2002
@@ -87,6 +87,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 *data);
 extern unsigned long get_start_sect(kdev_t dev);
 extern unsigned long get_nr_sects(kdev_t dev);
 
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:35:15 2002
+++ evms-2002-03-06/include/linux/sysctl.h	Tue Jan 15 08:20:22 2002
@@ -551,7 +551,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 */
@@ -567,6 +568,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/do_mounts.c evms-2002-03-06/init/do_mounts.c
--- linux-2002-03-06/init/do_mounts.c	Wed Mar  6 09:35:15 2002
+++ evms-2002-03-06/init/do_mounts.c	Thu Feb 14 09:46:04 2002
@@ -210,6 +210,7 @@
 	{ "ftlc", 0x2c10 },
 	{ "ftld", 0x2c18 },
 	{ "mtdblock", 0x1f00 },
+	{ "evms", 0x3f00 },
 	{ NULL, 0 }
 };
 
@@ -722,6 +723,11 @@
 	}
 #endif
 	mount_block_root("/dev/root", root_mountflags);
+}
+
+void get_root_device_name( char * root_name )
+{
+	strncpy(root_name, root_device_name, 63);	
 }
 
 #ifdef CONFIG_BLK_DEV_INITRD
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:35:15 2002
+++ evms-2002-03-06/kernel/ksyms.c	Tue Mar  5 14:55:56 2002
@@ -323,6 +323,7 @@
 EXPORT_SYMBOL(init_buffer);
 EXPORT_SYMBOL(refile_buffer);
 EXPORT_SYMBOL(wipe_partitions);
+EXPORT_SYMBOL(is_swap_partition);
 
 /* tty routines */
 EXPORT_SYMBOL(tty_hangup);
