Skip to contentSkip to conversation

Patch for lvm-1.0.1-rc4 to work under linux-2.4.10-ac4 (Re-edition)

linux-lvm Andre Margis 3 participants 3 messages Oct 3, 2001 – Oct 12, 2001

lore
Share & tools
lore
#0 lore raw

Sorry, for last message i wrong the function alloc_kiovec, is to be alloc_kiovec_sz

I change two programs to run under linux.2.4.10-ac4

I don't if this is correct. I test on my machine I believe it's working

This is my corrections:

on lvm.c

line 457

     /* insert our gendisk at the corresponding major */
        /*
        if (gendisk_head != NULL) {
                gendisk_ptr = gendisk_head;
                while (gendisk_ptr->next != NULL &&
                       gendisk_ptr->major > lvm_gendisk.major) {
                        gendisk_ptr = gendisk_ptr->next;
                }
                lvm_gendisk.next = gendisk_ptr->next;
                gendisk_ptr->next = &lvm_gendisk;
        } else {
                gendisk_head = &lvm_gendisk;
                lvm_gendisk.next = NULL;
        }
        */

        add_gendisk(&lvm_gendisk);

line 515

        /*
        gendisk_ptr = gendisk_ptr_prev = gendisk_head;
        while (gendisk_ptr != NULL) {
                if (gendisk_ptr == &lvm_gendisk)
                        break;
                gendisk_ptr_prev = gendisk_ptr;
                gendisk_ptr = gendisk_ptr->next;
        }*/
        /* delete our gendisk from chain */
        /*
        if (gendisk_ptr == &lvm_gendisk)
                gendisk_ptr_prev->next = gendisk_ptr->next;*/

        del_gendisk(&lvm_gendisk);

on lvm-snap.c

add line 53
int kio_max_sectors = KIO_MAX_SECTORS;

change all functions alloc_kiovec(a,b) by
alloc_kiovec_sz(a,b,&kio_max_sectors)
at lines 518 and 527.

change all functions free_kiovec(a,b) by free_kiovec_sz(a,b,&kio_max_sectors) at lines 543, 548, 573 and 580

My changes are correct?

Any help?

Thanks

Andre

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

-------------------------------------------------------

#1 lore raw
Quoted 1 line · Andre Margis

I change two programs to run under linux.2.4.10-ac4

The first set is functionally identical to the changes made to lvm.c in Christoph Hellwig's gendisk clean-up. By the looks of things, these changes have been made in both the Linus and ac kernels.

The changes you made to lvm_snap.c are also similar to changes to the LVM in the ac kernels, but do not appear in the Linus kernel.

For the convenience of the list and the developers, I've included unified diffs below.

Quoted 1 line

My changes are correct?

I think so. The danger is that other critical changes in the LVM code in the ac kernels have not also been made in 1.0.1-rc4. I hope the developers can have a look.

Developers, is there much progress in feeding LVM 1.0.x to Alan?

Regards,

Mark.

drivers/md/lvm.c renamed from 1.0.1-rc4/PATCHES/cleaned/lvm.c +2 -30
@@ -432,8 +432,6 @@
  */
 int lvm_init(void)
 {
-	struct gendisk *gendisk_ptr = NULL;
-
 	if (devfs_register_chrdev(LVM_CHAR_MAJOR,
 				  lvm_name, &lvm_chr_fops) < 0) {
 		printk(KERN_ERR "%s -- devfs_register_chrdev failed\n",
@@ -453,20 +451,7 @@
 	lvm_init_fs();
 	lvm_init_vars();
 	lvm_geninit(&lvm_gendisk);
-
-	/* insert our gendisk@the corresponding major */
-	if (gendisk_head != NULL) {
-		gendisk_ptr = gendisk_head;
-		while (gendisk_ptr->next != NULL &&
-		       gendisk_ptr->major > lvm_gendisk.major) {
-			gendisk_ptr = gendisk_ptr->next;
-		}
-		lvm_gendisk.next = gendisk_ptr->next;
-		gendisk_ptr->next = &lvm_gendisk;
-	} else {
-		gendisk_head = &lvm_gendisk;
-		lvm_gendisk.next = NULL;
-	}
+	add_gendisk(&lvm_gendisk);
 
 #ifdef LVM_HD_NAME
 	/* reference from drivers/block/genhd.c */
@@ -499,8 +484,6 @@
 
 static void lvm_cleanup(void)
 {
-	struct gendisk *gendisk_ptr = NULL, *gendisk_ptr_prev = NULL;
-
 	if (devfs_unregister_chrdev(LVM_CHAR_MAJOR, lvm_name) < 0)
 		printk(KERN_ERR "%s -- devfs_unregister_chrdev failed\n",
 		       lvm_name);
@@ -508,18 +491,7 @@
 		printk(KERN_ERR "%s -- devfs_unregister_blkdev failed\n",
 		       lvm_name);
 
-
-
-	gendisk_ptr = gendisk_ptr_prev = gendisk_head;
-	while (gendisk_ptr != NULL) {
-		if (gendisk_ptr == &lvm_gendisk)
-			break;
-		gendisk_ptr_prev = gendisk_ptr;
-		gendisk_ptr = gendisk_ptr->next;
-	}
-	/* delete our gendisk from chain */
-	if (gendisk_ptr == &lvm_gendisk)
-		gendisk_ptr_prev->next = gendisk_ptr->next;
+	del_gendisk(&lvm_gendisk);
 
 	blk_size[MAJOR_NR] = NULL;
 	blksize_size[MAJOR_NR] = NULL;
drivers/md/lvm-snap.c renamed from 1.0.1-rc4/PATCHES/cleaned/lvm-snap.c +9 -6
@@ -511,9 +511,10 @@
 int lvm_snapshot_alloc(lv_t * lv_snap)
 {
 	int ret, max_sectors;
+       int nbhs = KIO_MAX_SECTORS;
 
 	/* allocate kiovec to do chunk io */
-	ret = alloc_kiovec(1, &lv_snap->lv_iobuf);
+       ret = alloc_kiovec_sz(1, &lv_snap->lv_iobuf, &nbhs);
 	if (ret) goto out;
 
 	max_sectors = KIO_MAX_SECTORS << (PAGE_SHIFT-9);
@@ -522,7 +523,7 @@
 	if (ret) goto out_free_kiovec;
 
 	/* allocate kiovec to do exception table io */
-	ret = alloc_kiovec(1, &lv_snap->lv_COW_table_iobuf);
+       ret = alloc_kiovec_sz(1, &lv_snap->lv_COW_table_iobuf, &nbhs);
 	if (ret) goto out_free_kiovec;
 
 	ret = lvm_snapshot_alloc_iobuf_pages(lv_snap->lv_COW_table_iobuf,
@@ -538,12 +539,12 @@
 
 out_free_both_kiovecs:
 	unmap_kiobuf(lv_snap->lv_COW_table_iobuf);
-	free_kiovec(1, &lv_snap->lv_COW_table_iobuf);
+	free_kiovec_sz(1, &lv_snap->lv_COW_table_iobuf, &nbhs);
 	lv_snap->lv_COW_table_iobuf = NULL;
 
 out_free_kiovec:
 	unmap_kiobuf(lv_snap->lv_iobuf);
-	free_kiovec(1, &lv_snap->lv_iobuf);
+	free_kiovec_sz(1, &lv_snap->lv_iobuf, &nbhs);
 	lv_snap->lv_iobuf = NULL;
 	if (lv_snap->lv_snapshot_hash_table != NULL)
 		vfree(lv_snap->lv_snapshot_hash_table);
@@ -553,6 +554,8 @@
 
 void lvm_snapshot_release(lv_t * lv)
 {
+	int 	nbhs = KIO_MAX_SECTORS;
+
 	if (lv->lv_block_exception)
 	{
 		vfree(lv->lv_block_exception);
@@ -568,14 +571,14 @@
 	{
 	        kiobuf_wait_for_io(lv->lv_iobuf);
 		unmap_kiobuf(lv->lv_iobuf);
-		free_kiovec(1, &lv->lv_iobuf);
+		free_kiovec_sz(1, &lv->lv_iobuf, &nbhs);
 		lv->lv_iobuf = NULL;
 	}
 	if (lv->lv_COW_table_iobuf)
 	{
 	        kiobuf_wait_for_io(lv->lv_COW_table_iobuf);
 		unmap_kiobuf(lv->lv_COW_table_iobuf);
-		free_kiovec(1, &lv->lv_COW_table_iobuf);
+               free_kiovec_sz(1, &lv->lv_COW_table_iobuf, &nbhs);
 		lv->lv_COW_table_iobuf = NULL;
 	}
 }
#2 lore raw
Quoted 1 line · Mark van Walraven

Developers, is there much progress in feeding LVM 1.0.x to Alan?

Alan has all patches to bring him up to about -rc2.

- Joe