Skip to contentSkip to conversation

LVM-1.0.8 for 2.4.23-rc1]

PATCH New Xose Vazquez Perez 1 participant 1 message Nov 20, 2003

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 LVM-1.0.8 for 2.4.23-rc1]

here it goes...

-------- Original Message --------
Subject: [PATCH] LVM-1.0.8 for 2.4.23-rc1
Date: Tue, 18 Nov 2003 03:10:22 +0100
From: Xose Vazquez Perez <[email protected]>
To: linux-kernel <[email protected]>, Tosatti <[email protected]>

Changelog for 1.0.7 to 1.0.8

Driver
------
o fixed list handling in lvm_find_exception_table()

o corrected physical extent counters

user space utils and complete patch at:
ftp://ftp.sistina.com/pub/LVM/1.0/

-thanks-
--
Software is like sex, it's better when it's bug free.

Signature · 1 line
HTML mails are going to trash automagically
drivers/md/lvm.c +2 -1
diff -Nuar old/drivers/md/lvm.c new/drivers/md/lvm.c
@@ -2594,8 +2594,9 @@
 				      new_lv->lv_block_exception[e].
 				      rsector_org, new_lv);
 
-		vg_ptr->pe_allocated -= old_lv->lv_allocated_le;
+		vg_ptr->pe_allocated -= old_lv->lv_allocated_snapshot_le;
 		vg_ptr->pe_allocated += new_lv->lv_allocated_le;
+		old_lv->lv_allocated_snapshot_le = new_lv->lv_allocated_le;
 	} else {
 		vfree(old_lv->lv_current_pe);
 		vfree(old_lv->lv_snapshot_hash_table);
drivers/md/lvm-snap.c +5 -3
diff -Nuar old/drivers/md/lvm-snap.c new/drivers/md/lvm-snap.c
@@ -44,6 +44,7 @@
  *    26/06/2002 - support for new list_move macro [[email protected]]
  *    26/07/2002 - removed conditional list_move macro because we will
  *                 discontinue LVM1 before 2.6 anyway
+ *    27/08/2003 - fixed unsafe list handling in lvm_find_exception_table() [HM]
  *
  */
 
@@ -114,7 +115,7 @@
 							     org_start,
 							     lv_t * lv)
 {
-	struct list_head *hash_table = lv->lv_snapshot_hash_table, *next;
+	struct list_head *hash_table = lv->lv_snapshot_hash_table, *next, *n;
 	unsigned long mask = lv->lv_snapshot_hash_mask;
 	int chunk_size = lv->lv_chunk_size;
 	lv_block_exception_t *ret;
@@ -123,8 +124,9 @@
 	hash_table =
 	    &hash_table[hashfn(org_dev, org_start, mask, chunk_size)];
 	ret = NULL;
-	for (next = hash_table->next; next != hash_table;
-	     next = next->next) {
+
+	for (next = hash_table->next, n = next->next; next != hash_table;
+             next = n, n = next->next) {
 		lv_block_exception_t *exception;
 
 		exception = list_entry(next, lv_block_exception_t, hash);
include/linux/lvm.h +2 -2
diff -Nuar old/include/linux/lvm.h new/include/linux/lvm.h
@@ -80,8 +80,8 @@
 #ifndef _LVM_H_INCLUDE
 #define _LVM_H_INCLUDE
 
-#define LVM_RELEASE_NAME "1.0.7"
-#define LVM_RELEASE_DATE "28/03/2003"
+#define LVM_RELEASE_NAME "1.0.8"
+#define LVM_RELEASE_DATE "17/11/2003"
 
 #define	_LVM_KERNEL_H_VERSION	"LVM "LVM_RELEASE_NAME" ("LVM_RELEASE_DATE")"