Thanks, integrated. Heinz On Wed, Oct 05, 2005 at 08:45:32PM -0700, Poul Petersen wrote: > I'm playing with some AoE (ATA over Ethernet) hardware and wanted to > get it working with LVM1 (1.0.6 specifically, but this patch is for 1.0.8). > I am trying to avoid upgrading the kernel on our production machine in the > short term. Anyways, while the AoE driver is in the 2.6.11+ kernels it has > to be added to 2.4 as an independent module > (http://www.coraid.com/support/linux/). A couple of things to note about > this: > > 1) The AoE module on the 2.4 kernel does not support partitioning, so I > didn't bother to support it in this LVM patch. > > 2) AOE_MAJOR is not defined in include/linux/major.h on the 2.4 series > kernel. It is defined in the 2.6 kernel as major=152, and it is also > likewise defined in the AoE 2.4 module source (all.h), but of course when > compiling LVM it isn't going to know where the AoE module source is located. > I wasn't really certain how to handle this, so I just stuck it in > kernel/lvm.h. I'm sure that's wrong. Probably it could be added into the > PATCHES stuff, but I havn't sorted out how that all works. One could always > add the #define to the kernel source I suppose, but I wanted my patch to > just work :) > > 3) It looked like all I needed to do was tell LVM about the specifics of AoE > block devices. It seems to be working, but I'll be the first to admit that > I'm hacking here :) > > 4) Without this patch, simple LVM commands fail with an error like: > > # pvcreate /dev/etherd/e0.7 > pvcreate -- invalid physical volume "/dev/etherd/e0.7" > > -poul > > ----- > PATCH > ----- > > diff -urN 1.0.8.orig/kernel/lvm.h 1.0.8/kernel/lvm.h > --- 1.0.8.orig/kernel/lvm.h 2003-11-17 07:58:55.000000000 -0800 > +++ 1.0.8/kernel/lvm.h 2005-10-05 20:11:47.000000000 -0700 > @@ -153,6 +153,10 @@ > #error Bad include/linux/major.h - LVM MAJOR undefined > #endif > > +#if !defined AOE_MAJOR > +#define AOE_MAJOR 152 > +#endif > + > #ifdef BLOCK_SIZE > #undef BLOCK_SIZE > #endif > diff -urN 1.0.8.orig/tools/lib/liblvm.h 1.0.8/tools/lib/liblvm.h > --- 1.0.8.orig/tools/lib/liblvm.h 2003-02-28 06:51:35.000000000 -0800 > +++ 1.0.8/tools/lib/liblvm.h 2005-10-05 20:13:49.000000000 -0700 > @@ -191,6 +191,7 @@ > LVM_DEVICE_TYPE_UBD, /* User-mode virtual block device */ > LVM_DEVICE_TYPE_ATARAID, /* ATA Raid */ > LVM_DEVICE_TYPE_I2O, /* i2o block device */ > + LVM_DEVICE_TYPE_AOE, /* ATA over Ethernet */ > } lvm_device_type_t; > > /* for lvm_show_size () */ > diff -urN 1.0.8.orig/tools/lib/lvm_check_dev.c > 1.0.8/tools/lib/lvm_check_dev.c > --- 1.0.8.orig/tools/lib/lvm_check_dev.c 2003-02-06 > 07:05:33.000000000 -0800 > +++ 1.0.8/tools/lib/lvm_check_dev.c 2005-10-05 20:07:10.000000000 -0700 > @@ -64,6 +64,9 @@ > #ifdef I2O_MAJOR > I2O_MAJOR, > #endif > +#ifdef AOE_MAJOR > + AOE_MAJOR, > +#endif > -1 > }; > > diff -urN 1.0.8.orig/tools/lib/lvm_check_partitioned_dev.c > 1.0.8/tools/lib/lvm_check_partitioned_dev.c > --- 1.0.8.orig/tools/lib/lvm_check_partitioned_dev.c 2003-02-06 > 07:05:33.000000000 -0800 > +++ 1.0.8/tools/lib/lvm_check_partitioned_dev.c 2005-10-05 > 20:08:31.000000000 -0700 > @@ -64,6 +64,7 @@ > case LVM_DEVICE_TYPE_LOOP: > case LVM_DEVICE_TYPE_MD: > case LVM_DEVICE_TYPE_ATARAID: > + case LVM_DEVICE_TYPE_AOE: > break; > default: > ret = TRUE; > @@ -161,6 +162,7 @@ > { "ubd", LVM_DEVICE_TYPE_UBD }, /* User-mode virtual block device > */ > { "ataraid", LVM_DEVICE_TYPE_ATARAID }, /* ATA Raid > */ > { "i2o_block", LVM_DEVICE_TYPE_I2O }, /* i2o disk */ > + { "aoe", LVM_DEVICE_TYPE_AOE }, /* ATA over Ethernet > */ > { NULL, LVM_DEVICE_TYPE_INVALID } /* Device not recognized > */ > }; > FILE *procdevices = NULL; > diff -urN 1.0.8.orig/tools/lib/lvm_dir_cache.c > 1.0.8/tools/lib/lvm_dir_cache.c > --- 1.0.8.orig/tools/lib/lvm_dir_cache.c 2003-02-06 > 07:05:34.000000000 -0800 > +++ 1.0.8/tools/lib/lvm_dir_cache.c 2005-10-05 20:09:36.000000000 -0700 > @@ -69,6 +69,7 @@ > static char *_noprocdir[] = { > LVM_DIR_PREFIX "loop", > LVM_DIR_PREFIX "nb", > + LVM_DIR_PREFIX "etherd", > NULL > }; > > @@ -85,6 +86,7 @@ > LVM_DIR_PREFIX "ubd", > LVM_DIR_PREFIX "ataraid", > LVM_DIR_PREFIX "i2o_block", > + LVM_DIR_PREFIX "etherd", > NULL > }; > > > _______________________________________________ > linux-lvm mailing list > linux-lvm@redhat.com > https://www.redhat.com/mailman/listinfo/linux-lvm > read the LVM HOW-TO at http://tldp.org/HOWTO/LVM-HOWTO/ =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Heinz Mauelshagen Red Hat GmbH Consulting Development Engineer Am Sonnenhang 11 Cluster and Storage Development 56242 Marienrachdorf Germany Mauelshagen@RedHat.com +49 2626 141200 FAX 924446 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- _______________________________________________ linux-lvm mailing list linux-lvm@redhat.com https://www.redhat.com/mailman/listinfo/linux-lvm read the LVM HOW-TO at http://tldp.org/HOWTO/LVM-HOWTO/