[linux-lvm] A Caldera related bug?

Andreas Dilger adilger at turbolabs.com
Thu Aug 30 09:23:21 UTC 2001


On Aug 30, 2001  09:08 +0200, Christoph Hellwig wrote:
> This is because LVM is _completly_ broken by including kernel headers all
> over theplace, and - even worse - sometimes even defining __KERNEL__ and
> using kernel-only datatypes.

Yes, it is going to be ugly when kdev_t is no longer == dev_t.

> --- LVM/1.0.1-rc1/kernel/lvm.h~	Thu Aug 30 09:00:30 2001
> +++ LVM/1.0.1-rc1/kernel/lvm.h	Thu Aug 30 09:02:47 2001
> @@ -110,10 +110,7 @@
>  #include <linux/kdev_t.h>
>  #include <linux/list.h>
>  #else
> -#define __KERNEL__
>  #include <linux/kdev_t.h>
> -#include <linux/list.h>
> -#undef __KERNEL__
>  #endif				/* #ifndef __KERNEL__ */

In this case, you may as well just remove the whole "#ifdef __KERNEL__"
part of the header here.

>  /* remap physical sector/rdev pairs including hash */
>  typedef struct lv_block_exception_v1 {
> +#ifdef __KERNEL__
>  	struct list_head hash;
> +#else
> +	uint64_t hash;			/* XXX b0rken on 64bit plattforms */
> +#endif

Maybe the non-kernel part can be considered as two void * pointers?
I'm not sure if that will work on sparc64, if the kernel and user
pointer sizes are not the same.

In the end, what is really needed is a well-defined LVM API between
kernel and user-space that doesn't pass this kind of stuff.

Cheers, Andreas
-- 
Andreas Dilger  \ "If a man ate a pound of pasta and a pound of antipasto,
                 \  would they cancel out, leaving him still hungry?"
http://www-mddsp.enel.ucalgary.ca/People/adilger/               -- Dogbert





More information about the linux-lvm mailing list