[linux-lvm] Removing direct access to gendisk_head

Jan-Benedict Glaw jbglaw at lug-owl.de
Sat Oct 6 11:01:47 UTC 2001


Hi!

I'm currently looking over kernel code (for cleaning-up purposes)
and removed EXPORT_SYMBOL(gendisk_head) which was a no-no for
current LVM kernel code. Please think about picking up this patch

	- Named struct initializers
	- Removing direct use of gendisk_head

There's an open Q: Do we need to nullify ->real_devices and ->next?
I don't think so (but I am unsure) so please remove these two lines
upon your oppinion:-)

MfG, JBG


--- lvm.c.orig	Sat Oct  6 11:19:40 2001
+++ lvm.c	Sat Oct  6 12:48:27 2001
@@ -414,17 +414,17 @@
 
 static struct gendisk lvm_gendisk =
 {
-	MAJOR_NR,		/* major # */
-	LVM_NAME,		/* name of major */
-	0,			/* number of times minor is shifted
-				   to get real minor */
-	1,			/* maximum partitions per device */
-	lvm_hd_struct,		/* partition table */
-	lvm_size,		/* device size in blocks, copied
-				   to block_size[] */
-	MAX_LV,			/* number or real devices */
-	NULL,			/* internal */
-	NULL,			/* pointer to next gendisk struct (internal) */
+	major:		MAJOR_NR,		/* major number */
+	major_name:	LVM_NAME,		/* name of major */
+	minor_shift:	0,			/* number of times minor is shifted
+						   to get real minor */
+	max_p:		1,			/* maximum partitions per device */
+	part:		lvm_hd_struct,		/* partition table */
+	sizes:		lvm_size,		/* device size in blocks, copied
+						   to block_size[] */
+	nr_real:	MAX_LV,			/* number or real devices */
+	real_devices:	NULL,			/* internal */
+	next:		NULL,			/* pointer to next gendisk struct (internal) */
 };
 
 /*
@@ -454,19 +454,8 @@
 	lvm_init_vars();
 	lvm_geninit(&lvm_gendisk);
 
-	/* 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;
-	}
+	/* insert our gendisk */
+	add_gendisk(&lvm_gendisk);
 
 #ifdef LVM_HD_NAME
 	/* reference from drivers/block/genhd.c */
@@ -508,18 +497,8 @@
 		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;
-- 
Jan-Benedict Glaw . jbglaw at lug-owl.de . +49-172-7608481




More information about the linux-lvm mailing list