From: Joe Thornber I made a couple of mistakes when I wrote the original ioctl interface, the main problem being with not paying enough attention to the alignment of the data within structs. I think this will bite us when hammer comes along. The fix is simple and also include changing the dev_t's passed in to be u64s for future proofing. We're calling this interface version 3, with version 2 being a similar patch produced by Kevin Corry a while ago. When people move to v3 kernels they will need to rebuild the libdevmapper package. The cvs version of which now supports *both* v1 and v3. A new release of libdevmapper is imminent. If you want more specifics you'll have to talk to Alasdair Kergon (agk@uk.sistina.com) who is dealing with this while I concentrate on the mirror target. The only other thing that will need changing in dm to cope with 64bit dev_t concerns the bitset I'm using to keep track of allocated minor numbers. A trivial patch like this would work for now: 25-akpm/drivers/md/dm.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) diff -puN drivers/md/dm.c~dm-larger-dev_t-fix drivers/md/dm.c --- 25/drivers/md/dm.c~dm-larger-dev_t-fix Mon Apr 14 16:21:24 2003 +++ 25-akpm/drivers/md/dm.c Mon Apr 14 16:21:24 2003 @@ -15,7 +15,7 @@ #include static const char *_name = DM_NAME; -#define MAX_DEVICES (1 << KDEV_MINOR_BITS) +#define MAX_DEVICES 1024 static int major = 0; static int _major = 0; _