patch-2.4.17 linux/drivers/md/lvm-fs.c
Next file: linux/drivers/md/lvm-snap.c
Previous file: linux/drivers/isdn/tpam/tpam_queues.c
Back to the patch index
Back to the overall index
- Lines: 36
- Date:
Fri Dec 21 16:40:32 2001
- Orig file:
linux-2.4.16/drivers/md/lvm-fs.c
- Orig date:
Sun Nov 11 18:09:32 2001
diff -Naur -X /home/marcelo/lib/dontdiff linux-2.4.16/drivers/md/lvm-fs.c linux/drivers/md/lvm-fs.c
@@ -30,6 +30,7 @@
* 04/10/2001 - corrected devfs_register() call in lvm_init_fs()
* 11/04/2001 - don't devfs_register("lvm") as user-space always does it
* 10/05/2001 - show more of PV name in /proc/lvm/global
+ * 16/12/2001 - fix devfs unregister order and prevent duplicate unreg (REG)
*
*/
@@ -138,7 +139,7 @@
int i;
devfs_unregister(ch_devfs_handle[vg_ptr->vg_number]);
- devfs_unregister(vg_devfs_handle[vg_ptr->vg_number]);
+ ch_devfs_handle[vg_ptr->vg_number] = NULL;
/* remove lv's */
for(i = 0; i < vg_ptr->lv_max; i++)
@@ -148,6 +149,10 @@
for(i = 0; i < vg_ptr->pv_max; i++)
if(vg_ptr->pv[i]) lvm_fs_remove_pv(vg_ptr, vg_ptr->pv[i]);
+ /* must not remove directory before leaf nodes */
+ devfs_unregister(vg_devfs_handle[vg_ptr->vg_number]);
+ vg_devfs_handle[vg_ptr->vg_number] = NULL;
+
if(vg_ptr->vg_dir_pde) {
remove_proc_entry(LVM_LV_SUBDIR, vg_ptr->vg_dir_pde);
vg_ptr->lv_subdir_pde = NULL;
@@ -189,6 +194,7 @@
void lvm_fs_remove_lv(vg_t *vg_ptr, lv_t *lv) {
devfs_unregister(lv_devfs_handle[MINOR(lv->lv_dev)]);
+ lv_devfs_handle[MINOR(lv->lv_dev)] = NULL;
if(vg_ptr->lv_subdir_pde) {
const char *name = _basename(lv->lv_name);
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)