2002-11-11 22:47:11

by Bernd Eckenfels

[permalink] [raw]
Subject: [patch] 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 http://www.sistina.com/lvm/ url from the
MAINTAINER file since it does not contain any useful information anymore.

Greetings
Bernd

--- drivers/md/dm-ioctl.c~ 2002-11-11 23:27:38.000000000 +0100
+++ drivers/md/dm-ioctl.c 2002-11-11 23:43:41.000000000 +0100
@@ -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);


--
(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!


2002-11-11 23:16:13

by Alexander Viro

[permalink] [raw]
Subject: Re: [patch] make device mapper compile on 2.5.4x



On Mon, 11 Nov 2002, Bernd Eckenfels wrote:

> - 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).

2002-11-12 08:51:43

by Joe Thornber

[permalink] [raw]
Subject: Re: [linux-lvm] Re: [patch] make device mapper compile on 2.5.4x

On Mon, Nov 11, 2002 at 06:23:00PM -0500, Alexander Viro wrote:
>
>
> On Mon, 11 Nov 2002, Bernd Eckenfels wrote:
>
> > - 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).

And I have sent the patch for this 3 times now.

- Joe