diff -Naurp kernel-source-2.6.12-orig/fs/super.c kernel-source-2.6.12/fs/super.c --- kernel-source-2.6.12-orig/fs/super.c 2005-06-17 23:48:29 +0400 +++ kernel-source-2.6.12/fs/super.c 2005-08-31 19:17:54 +0400 @@ -734,6 +734,7 @@ void kill_block_super(struct super_block generic_shutdown_super(sb); sync_blockdev(bdev); close_bdev_excl(bdev); + bdev_uevent(bdev, KOBJ_FREE); } EXPORT_SYMBOL(kill_block_super); diff -Naurp kernel-source-2.6.12-orig/include/linux/kobject_uevent.h kernel-source-2.6.12/include/linux/kobject_uevent.h --- kernel-source-2.6.12-orig/include/linux/kobject_uevent.h 2005-06-17 23:48:29 +0400 +++ kernel-source-2.6.12/include/linux/kobject_uevent.h 2005-08-31 19:16:50 +0400 @@ -29,6 +29,7 @@ enum kobject_action { KOBJ_UMOUNT = (__force kobject_action_t) 0x05, /* umount event for block devices */ KOBJ_OFFLINE = (__force kobject_action_t) 0x06, /* offline event for hotplug devices */ KOBJ_ONLINE = (__force kobject_action_t) 0x07, /* online event for hotplug devices */ + KOBJ_FREE = (__force kobject_action_t) 0x08, /* free device event for block devices */ }; diff -Naurp kernel-source-2.6.12-orig/lib/kobject_uevent.c kernel-source-2.6.12/lib/kobject_uevent.c --- kernel-source-2.6.12-orig/lib/kobject_uevent.c 2005-06-17 23:48:29 +0400 +++ kernel-source-2.6.12/lib/kobject_uevent.c 2005-08-31 19:18:13 +0400 @@ -44,6 +44,8 @@ static char *action_to_string(enum kobje return "offline"; case KOBJ_ONLINE: return "online"; + case KOBJ_FREE: + return "free"; default: return NULL; }