]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blob - src/patches/suse-2.6.27.25/patches.suse/dm-emulate-blkrrpart-ioctl
Updated xen patches taken from suse.
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.25 / patches.suse / dm-emulate-blkrrpart-ioctl
1 From: Hannes Reinecke <hare@suse.de>
2 Subject: Emulate BLKRRPART on device-mapper
3
4 Partitions on device-mapper devices are managed by kpartx (if at
5 all). So if we were just to send out a 'change' event if someone
6 called BLKRRPART on these devices, kpartx will be triggered via udev
7 and can manage the partitions accordingly.
8
9 Signed-off-by: Hannes Reinecke <hare@suse.de>
10
11 ---
12 drivers/md/dm.c | 22 ++++++++++++++--------
13 1 file changed, 14 insertions(+), 8 deletions(-)
14
15 --- a/drivers/md/dm.c
16 +++ b/drivers/md/dm.c
17 @@ -333,19 +333,25 @@ static int dm_blk_ioctl(struct inode *in
18 if (!map || !dm_table_get_size(map))
19 goto out;
20
21 - /* We only support devices that have a single target */
22 - if (dm_table_get_num_targets(map) != 1)
23 - goto out;
24 -
25 - tgt = dm_table_get_target(map, 0);
26 -
27 if (dm_suspended(md)) {
28 r = -EAGAIN;
29 goto out;
30 }
31
32 - if (tgt->type->ioctl)
33 - r = tgt->type->ioctl(tgt, inode, file, cmd, arg);
34 + if (cmd == BLKRRPART) {
35 + /* Emulate Re-read partitions table */
36 + kobject_uevent(&md->disk->dev.kobj, KOBJ_CHANGE);
37 + r = 0;
38 + } else {
39 + /* We only support devices that have a single target */
40 + if (dm_table_get_num_targets(map) != 1)
41 + goto out;
42 +
43 + tgt = dm_table_get_target(map, 0);
44 +
45 + if (tgt->type->ioctl)
46 + r = tgt->type->ioctl(tgt, inode, file, cmd, arg);
47 + }
48
49 out:
50 dm_table_put(map);