]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blob - src/patches/suse-2.6.27.31/patches.suse/genhd-disk-ro-uevents
Reenabled linux-xen, added patches for Xen Kernel Version 2.6.27.31,
[people/teissler/ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.suse / genhd-disk-ro-uevents
1 From: Hannes Reinecke <hare@suse.de>
2 Subject: Send uevents for write_protect changes
3 References: bnc#440959
4
5 Whenever a block device changes it's read-only attribute
6 we should notify the userspace about it.
7
8 Signed-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;