Loading Documentation/feature-removal-schedule.txt +9 −0 Original line number Diff line number Diff line Loading @@ -171,3 +171,12 @@ Why: The ISA interface is faster and should be always available. The I2C probing is also known to cause trouble in at least one case (see bug #5889.) Who: Jean Delvare <khali@linux-fr.org> --------------------------- What: mount/umount uevents When: February 2007 Why: These events are not correct, and do not properly let userspace know when a file system has been mounted or unmounted. Userspace should poll the /proc/mounts file instead to detect this properly. Who: Greg Kroah-Hartman <gregkh@suse.de> fs/super.c +14 −1 Original line number Diff line number Diff line Loading @@ -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)) Loading Loading @@ -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; Loading @@ -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); Loading include/linux/kobject.h +4 −2 Original line number Diff line number Diff line Loading @@ -41,8 +41,10 @@ enum kobject_action { KOBJ_ADD = (__force kobject_action_t) 0x01, /* exclusive to core */ KOBJ_REMOVE = (__force kobject_action_t) 0x02, /* exclusive to core */ KOBJ_CHANGE = (__force kobject_action_t) 0x03, /* device state change */ KOBJ_OFFLINE = (__force kobject_action_t) 0x04, /* device offline */ KOBJ_ONLINE = (__force kobject_action_t) 0x05, /* device online */ KOBJ_MOUNT = (__force kobject_action_t) 0x04, /* mount event for block devices (broken) */ KOBJ_UMOUNT = (__force kobject_action_t) 0x05, /* umount event for block devices (broken) */ KOBJ_OFFLINE = (__force kobject_action_t) 0x06, /* device offline */ KOBJ_ONLINE = (__force kobject_action_t) 0x07, /* device online */ }; struct kobject { Loading lib/kobject_uevent.c +4 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,10 @@ static char *action_to_string(enum kobject_action action) return "remove"; case KOBJ_CHANGE: return "change"; case KOBJ_MOUNT: return "mount"; case KOBJ_UMOUNT: return "umount"; case KOBJ_OFFLINE: return "offline"; case KOBJ_ONLINE: Loading Loading
Documentation/feature-removal-schedule.txt +9 −0 Original line number Diff line number Diff line Loading @@ -171,3 +171,12 @@ Why: The ISA interface is faster and should be always available. The I2C probing is also known to cause trouble in at least one case (see bug #5889.) Who: Jean Delvare <khali@linux-fr.org> --------------------------- What: mount/umount uevents When: February 2007 Why: These events are not correct, and do not properly let userspace know when a file system has been mounted or unmounted. Userspace should poll the /proc/mounts file instead to detect this properly. Who: Greg Kroah-Hartman <gregkh@suse.de>
fs/super.c +14 −1 Original line number Diff line number Diff line Loading @@ -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)) Loading Loading @@ -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; Loading @@ -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); Loading
include/linux/kobject.h +4 −2 Original line number Diff line number Diff line Loading @@ -41,8 +41,10 @@ enum kobject_action { KOBJ_ADD = (__force kobject_action_t) 0x01, /* exclusive to core */ KOBJ_REMOVE = (__force kobject_action_t) 0x02, /* exclusive to core */ KOBJ_CHANGE = (__force kobject_action_t) 0x03, /* device state change */ KOBJ_OFFLINE = (__force kobject_action_t) 0x04, /* device offline */ KOBJ_ONLINE = (__force kobject_action_t) 0x05, /* device online */ KOBJ_MOUNT = (__force kobject_action_t) 0x04, /* mount event for block devices (broken) */ KOBJ_UMOUNT = (__force kobject_action_t) 0x05, /* umount event for block devices (broken) */ KOBJ_OFFLINE = (__force kobject_action_t) 0x06, /* device offline */ KOBJ_ONLINE = (__force kobject_action_t) 0x07, /* device online */ }; struct kobject { Loading
lib/kobject_uevent.c +4 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,10 @@ static char *action_to_string(enum kobject_action action) return "remove"; case KOBJ_CHANGE: return "change"; case KOBJ_MOUNT: return "mount"; case KOBJ_UMOUNT: return "umount"; case KOBJ_OFFLINE: return "offline"; case KOBJ_ONLINE: Loading