[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