[PATCH] LVM-1.0.8 for 2.4.23-rc1

From: Xose Vazquez Perez
Date: Mon Nov 17 2003 - 21:14:15 EST


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.

diff -Nuar old/drivers/md/lvm.c new/drivers/md/lvm.c
--- old/drivers/md/lvm.c 2003-11-18 02:45:25.000000000 +0100
+++ new/drivers/md/lvm.c 2003-11-18 02:40:24.000000000 +0100
@@ -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);
diff -Nuar old/drivers/md/lvm-snap.c new/drivers/md/lvm-snap.c
--- old/drivers/md/lvm-snap.c 2003-11-18 02:45:25.000000000 +0100
+++ new/drivers/md/lvm-snap.c 2003-11-18 02:50:37.000000000 +0100
@@ -44,6 +44,7 @@
* 26/06/2002 - support for new list_move macro [patch@xxxxxxxxxxxxxxxxx]
* 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);
diff -Nuar old/include/linux/lvm.h new/include/linux/lvm.h
--- old/include/linux/lvm.h 2003-11-18 02:45:19.000000000 +0100
+++ new/include/linux/lvm.h 2003-11-18 02:41:05.000000000 +0100
@@ -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")"