]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blame - src/patches/suse-2.6.27.31/patches.suse/genhd-disk-ro-uevents
Move xen patchset to new version's subdir.
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.suse / genhd-disk-ro-uevents
CommitLineData
00e5a55c
BS
1From: Hannes Reinecke <hare@suse.de>
2Subject: Send uevents for write_protect changes
3References: bnc#440959
4
5Whenever a block device changes it's read-only attribute
6we should notify the userspace about it.
7
8Signed-off-by: Hannes Reinecke <hare@suse.de>
9
10---
11 block/genhd.c | 13 +++++++++++++
12 1 file changed, 13 insertions(+)
13
14--- a/block/genhd.c
15+++ b/block/genhd.c
16@@ -813,6 +813,16 @@ void put_disk(struct gendisk *disk)
17
18 EXPORT_SYMBOL(put_disk);
19
20+static void set_disk_ro_uevent(struct gendisk *gd, int ro)
21+{
22+ char event[] = "DISK_RO=1";
23+ char *envp[] = { event, NULL };
24+
25+ if (!ro)
26+ event[8] = '0';
27+ kobject_uevent_env(&gd->dev.kobj, KOBJ_CHANGE, envp);
28+}
29+
30 void set_device_ro(struct block_device *bdev, int flag)
31 {
32 if (bdev->bd_contains != bdev)
33@@ -826,6 +836,9 @@ EXPORT_SYMBOL(set_device_ro);
34 void set_disk_ro(struct gendisk *disk, int flag)
35 {
36 int i;
37+ if (disk->policy != flag)
38+ set_disk_ro_uevent(disk, flag);
39+
40 disk->policy = flag;
41 for (i = 0; i < disk->minors - 1; i++)
42 if (disk->part[i]) disk->part[i]->policy = flag;