[linux-lvm] PATCH: LVM-1.0.8 + AoE + kernel-2.4.x
Heinz Mauelshagen
mauelshagen at redhat.com
Thu Oct 6 07:37:57 UTC 2005
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 at 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 at RedHat.com +49 2626 141200
FAX 924446
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
More information about the linux-lvm
mailing list