Patch for lvm-1.0.1-rc4 to work under linux-2.4.10-ac4 (Re-edition)
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) byalloc_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
-------------------------------------------------------
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 ; } }
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