From: Hannes Reinecke Subject: Send uevents for write_protect changes References: bnc#440959 Whenever a block device changes it's read-only attribute we should notify the userspace about it. Signed-off-by: Hannes Reinecke --- block/genhd.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) --- a/block/genhd.c +++ b/block/genhd.c @@ -813,6 +813,16 @@ void put_disk(struct gendisk *disk) EXPORT_SYMBOL(put_disk); +static void set_disk_ro_uevent(struct gendisk *gd, int ro) +{ + char event[] = "DISK_RO=1"; + char *envp[] = { event, NULL }; + + if (!ro) + event[8] = '0'; + kobject_uevent_env(&gd->dev.kobj, KOBJ_CHANGE, envp); +} + void set_device_ro(struct block_device *bdev, int flag) { if (bdev->bd_contains != bdev) @@ -826,6 +836,9 @@ EXPORT_SYMBOL(set_device_ro); void set_disk_ro(struct gendisk *disk, int flag) { int i; + if (disk->policy != flag) + set_disk_ro_uevent(disk, flag); + disk->policy = flag; for (i = 0; i < disk->minors - 1; i++) if (disk->part[i]) disk->part[i]->policy = flag;