[linux-lvm] Extend/Reduce snapshot not updating VG's used PE count.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I've noticed that extending or reducing a snapshot doesn't seem to affect
the used PE count of its volume group (as shown in places like
/proc/lvm/global).  I haven't noticed any particular ill effects, but it is
disconcerting.

The PE count for the PV *is* updated.  Strangely, after reboot (at least
with lvm 1.0.3) the PE count for the PV does not include PEs used by
snapshots.  As soon as a single snapshot is created, removed, extended, or
reduced, it becomes correct again.  Again, I haven't noticed any particular
ill effects.

Following is a patch that solves the first problem (but not the second) for
lvm 1.0.3.  Looking at current CVS, I believe the problem still exists.  The
first portion of the patch adjusts vg's pe_allocated field in
__extend_reduce_snapshot().  The second portion of the patch updates the
snapshot's lv_allocated_snapshot_le field to be correct after a resize in
lvm_do_lv_extend_reduce().  No user space changes are required.

Dale J. Stephenson
steph@snapserver.com

--- linux/drivers/md/lvm.c.orig	Mon Apr 29 08:50:41 2002
+++ linux/drivers/md/lvm.c	Mon Apr 29 12:41:29 2002
@@ -2280,6 +2280,9 @@
 		return -ENOMEM;
 	}
 
+	vg_ptr->pe_allocated -= old_lv->lv_allocated_snapshot_le;
+	vg_ptr->pe_allocated += new_lv->lv_allocated_le;
+
 	return 0;
 }
 
@@ -2409,6 +2412,8 @@
 
 		vfree(old_lv->lv_block_exception);
 		vfree(old_lv->lv_snapshot_hash_table);
+		old_lv->lv_allocated_snapshot_le = 
+			new_lv->lv_allocated_le;
 		old_lv->lv_remap_end = new_lv->lv_remap_end;
 		old_lv->lv_block_exception = new_lv->lv_block_exception;
 		old_lv->lv_snapshot_hash_table =

_______________________________________________
linux-lvm mailing list
linux-lvm@sistina.com
http://lists.sistina.com/mailman/listinfo/linux-lvm
read the LVM HOW-TO at http://www.sistina.com/lvm/Pages/howto.html

[Index of Archives]     [Gluster Users]     [Kernel Development]     [Linux Clusters]     [Device Mapper]     [Security]     [Bugtraq]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]

  Powered by Linux