]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blame - src/patches/suse-2.6.27.39/patches.suse/dm-emulate-blkrrpart-ioctl
Fix oinkmaster patch.
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.39 / patches.suse / dm-emulate-blkrrpart-ioctl
CommitLineData
2cb7cef9
BS
1From: Hannes Reinecke <hare@suse.de>
2Subject: Emulate BLKRRPART on device-mapper
3
4Partitions on device-mapper devices are managed by kpartx (if at
5all). So if we were just to send out a 'change' event if someone
6called BLKRRPART on these devices, kpartx will be triggered via udev
7and can manage the partitions accordingly.
8
9Signed-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);