make device mapper compile on 2.5.4x
PATCH 1/1 make device mapper compile on 2.5.4x
Hello,
device mapper does not compile on my 2.4.x tree, because of an argument incompatibility in set_device_ro(). Please find attached a patch, which makes this file compile. I am not sure if it is correct, since I do not unterstand whats going on here, and have not tested it yet. Please somebody have a look at it since it it broken for multiple releases, yet.
BTW: I also suggest to remove the www.sistina.com/lvm/ url from the MAINTAINER file since it does not contain any useful information anymore.
Greetings
Bernd
md/dm-ioctl.c renamed from md/dm-ioctl.c~ +14 -2
@@ -560,6 +560,7 @@struct dm_table *t;struct mapped_device *md;int minor; +struct block_device *bdev; r =check_name (param->name);if (r)
@@ -585,7 +586,12 @@ }dm_table_put (t);/* md will have grabbed its own reference */ -set_device_ro (dm_kdev (md),0 /*(param->flags & DM_READONLY_FLAG)*/ ); + bdev =bdget (kdev_t_to_nr (dm_kdev (md))); +if (!bdev) +return -ENXIO ; +set_device_ro (bdev, (param->flags &DM_READONLY_FLAG )); +bdput (bdev); + r =dm_hash_insert (param->name, *param->uuid ? param->uuid :NULL , md);dm_put (md);
@@ -847,6 +853,7 @@int r;struct mapped_device *md;struct dm_table *t; +struct block_device *bdev; r =dm_table_create (&t,get_mode (param));if (r)
@@ -871,7 +878,12 @@return r; } -set_device_ro (dm_kdev (md), (param->flags &DM_READONLY_FLAG )); + bdev =bdget (kdev_t_to_nr (dm_kdev (md))); +if (!bdev) +return -ENXIO ; +set_device_ro (bdev, (param->flags &DM_READONLY_FLAG )); +bdput (bdev); +dm_put (md); r =info (param, user);
Signature · 4 lines
(OO) -- [email protected] -- ( .. ) ecki@{inka.de,linux.de,debian.org} http://home.pages.de/~eckes/ o--o *plush* 2048/93600EFD eckes@irc +497257930613 BE5-RIPE (O____O) When cryptography is outlawed, bayl bhgynjf jvyy unir cevinpl!
md/dm-ioctl.c line 593
Quoted 6 lines · Bernd Eckenfels
md/dm-ioctl.c renamed from md/dm-ioctl.c~ +5
-1-set_device_ro (dm_kdev (md),0 /*(param->flags & DM_READONLY_FLAG)*/ ); + bdev =bdget (kdev_t_to_nr (dm_kdev (md))); +if (!bdev) +return -ENXIO ; +set_device_ro (bdev, (param->flags &DM_READONLY_FLAG )); +bdput (bdev);
That is simply wrong. set_device_ro() works only on opened block_device. Correct fix is to use set_disk_ro() and it's already in the tree (1.830 on bkbits).
Quoted 4 lines · Alexander Viro
On Mon, 11 Nov 2002, Bernd Eckenfels wrote:
Quoted 10 lines
md/dm-ioctl.c line 593
Quoted 6 lines
md/dm-ioctl.c renamed from md/dm-ioctl.c~ +5
-1-set_device_ro (dm_kdev (md),0 /*(param->flags & DM_READONLY_FLAG)*/ ); + bdev =bdget (kdev_t_to_nr (dm_kdev (md))); +if (!bdev) +return -ENXIO ; +set_device_ro (bdev, (param->flags &DM_READONLY_FLAG )); +bdput (bdev);That is simply wrong.
set_device_ro()works only on openedblock_device. Correct fix is to useset_disk_ro()and it's already in the tree (1.830 on bkbits).
And I have sent the patch for this 3 times now.
- Joe