Revert mount/umount uevent removal
This change reverts the 033b96fd30
commit
from Kay Sievers that removed the mount/umount uevents from the kernel.
Some older versions of HAL still depend on these events to detect when a
new device has been mounted. These events are not correctly emitted,
and are broken by design, and so, should not be relied upon by any
future program. Instead, the /proc/mounts file should be polled to
properly detect this kind of event.
A feature-removal-schedule.txt entry has been added, noting when this
interface will be removed from the kernel.
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
15
fs/super.c
15
fs/super.c
@@ -666,6 +666,16 @@ static int test_bdev_super(struct super_block *s, void *data)
|
||||
return (void *)s->s_bdev == data;
|
||||
}
|
||||
|
||||
static void bdev_uevent(struct block_device *bdev, enum kobject_action action)
|
||||
{
|
||||
if (bdev->bd_disk) {
|
||||
if (bdev->bd_part)
|
||||
kobject_uevent(&bdev->bd_part->kobj, action);
|
||||
else
|
||||
kobject_uevent(&bdev->bd_disk->kobj, action);
|
||||
}
|
||||
}
|
||||
|
||||
struct super_block *get_sb_bdev(struct file_system_type *fs_type,
|
||||
int flags, const char *dev_name, void *data,
|
||||
int (*fill_super)(struct super_block *, void *, int))
|
||||
@@ -707,8 +717,10 @@ struct super_block *get_sb_bdev(struct file_system_type *fs_type,
|
||||
up_write(&s->s_umount);
|
||||
deactivate_super(s);
|
||||
s = ERR_PTR(error);
|
||||
} else
|
||||
} else {
|
||||
s->s_flags |= MS_ACTIVE;
|
||||
bdev_uevent(bdev, KOBJ_MOUNT);
|
||||
}
|
||||
}
|
||||
|
||||
return s;
|
||||
@@ -724,6 +736,7 @@ void kill_block_super(struct super_block *sb)
|
||||
{
|
||||
struct block_device *bdev = sb->s_bdev;
|
||||
|
||||
bdev_uevent(bdev, KOBJ_UMOUNT);
|
||||
generic_shutdown_super(sb);
|
||||
sync_blockdev(bdev);
|
||||
close_bdev_excl(bdev);
|
||||
|
Reference in New Issue
Block a user