[Ocfs2-devel] Commenting patch

John L. Villalovos john.l.villalovos at intel.com
Wed Apr 21 17:48:36 CDT 2004


So I am working on trying to get mkfs doing all the initialization.  So in the process I am commenting the kernel module code so that I will know what is happenning.

So here are some comments I have added.

John

Index: super.c
===================================================================
--- super.c	(revision 860)
+++ super.c	(working copy)
@@ -961,6 +961,8 @@
  	
  	osb->publ_map |= (1 << osb->node_num);
  	osb->vol_state = VOLUME_INIT;
+	// Check if first time this partition has been mounted.  If so create
+	// the root Oracle INode.
  	status = ocfs_create_root_oin (osb, NULL);
  	if (status >= 0)
  		osb->vol_state = VOLUME_ENABLED;
Index: oin.c
===================================================================
--- oin.c	(revision 860)
+++ oin.c	(working copy)
@@ -446,6 +446,11 @@

  /* ocfs_create_root_oin()
   *
+ * This function will create the root Oracle INode (OIN) on the file system if
+ * this is the first time that this partition has ever been mounted.
+ *
+ * If this is NOT the first time this partition has been mounted (meaning it
+ * has been mounted before) then this function does nothing.
   */
  int ocfs_create_root_oin (ocfs_super * osb, struct inode *root)
  {
@@ -459,7 +464,15 @@

  	LOG_ENTRY ();

+	// Is this the first time this partition has been mounted?
  	if (osb->vol_layout.root_start_off == 0) {
+		// This is our first time being mounted.  We need to take care
+		// of setting up the root Oracle inode.  In order to do this we
+		// are going to call ocfs_create_root_dir_node.  So we need to
+		// get the disk offset to the root directory (root_dirnode).
+		// In order to get that we need to read in the volume header
+		// from the first sector of the disk.
+
  		status = ocfs_wait_for_disk_lock_release (osb, OCFS_VOLUME_LOCK_OFFSET,
  						 10000, OCFS_DLM_NO_LOCK);
  		if (status < 0) {
@@ -471,12 +484,14 @@
  				     OCFS_DLM_EXCLUSIVE_LOCK, FLAG_FILE_CREATE,
  				     &lockres, &bh, NULL);
  		if (status >= 0) {
+			// Read the volume header from the first sector of the
+			// partition and put it into our buffer head
  			status = ocfs_read_bh(osb, 0, &hdr_bh, 0, NULL);
  			if (status < 0)
  				LOG_ERROR_STATUS (status);

  			tmpstat = ocfs_release_lock (osb, OCFS_VOLUME_LOCK_OFFSET, OCFS_DLM_EXCLUSIVE_LOCK, 0, lockres, bh, NULL);
-	
+
  			if (bh)
  				brelse(bh);

@@ -492,7 +507,13 @@
  				LOG_ERROR_STATUS (status);
  			goto finally;
  		}
-		
+
+		// Get the volume header data from our buffer head.  We need to
+		// know the following in order to call
+		// ocfs_create_root_dir_node():
+		//      * root_off: disk offset to the ocfs root dirnode
+		//        (root_directory)
+		//      * internal_off: disk offset tot he data segment
  		volDiskHdr = (ocfs_vol_disk_hdr *) OCFS_BH_GET_DATA_READ(hdr_bh); /* read */
  		root_off = volDiskHdr->root_off;
  		int_off = volDiskHdr->internal_off;
@@ -502,10 +523,13 @@
  			ocfs_wait_for_disk_lock_release (osb,
  							OCFS_VOLUME_LOCK_OFFSET,
  							30000, OCFS_DLM_NO_LOCK);
+			// Setup the root_start_off with the correct value so
+			// that it will not run this function the next time the
+			// filesystem is mounted.
  			osb->vol_layout.root_start_off = root_off;
  			osb->vol_layout.root_int_off = int_off;
  		}
-
+		// Do all the work in creating our root directory
  		status = ocfs_create_root_dir_node (osb);
  		if (status < 0) {
  			LOG_ERROR_STATUS (status);

-------------- next part --------------
Index: super.c
===================================================================
--- super.c	(revision 860)
+++ super.c	(working copy)
@@ -961,6 +961,8 @@
 	
 	osb->publ_map |= (1 << osb->node_num);
 	osb->vol_state = VOLUME_INIT;
+	// Check if first time this partition has been mounted.  If so create
+	// the root Oracle INode.
 	status = ocfs_create_root_oin (osb, NULL);
 	if (status >= 0)
 		osb->vol_state = VOLUME_ENABLED;
Index: oin.c
===================================================================
--- oin.c	(revision 860)
+++ oin.c	(working copy)
@@ -446,6 +446,11 @@
 
 /* ocfs_create_root_oin()
  *
+ * This function will create the root Oracle INode (OIN) on the file system if
+ * this is the first time that this partition has ever been mounted.
+ *
+ * If this is NOT the first time this partition has been mounted (meaning it
+ * has been mounted before) then this function does nothing.
  */
 int ocfs_create_root_oin (ocfs_super * osb, struct inode *root)
 {
@@ -459,7 +464,15 @@
 
 	LOG_ENTRY ();
 
+	// Is this the first time this partition has been mounted?
 	if (osb->vol_layout.root_start_off == 0) {
+		// This is our first time being mounted.  We need to take care
+		// of setting up the root Oracle inode.  In order to do this we
+		// are going to call ocfs_create_root_dir_node.  So we need to
+		// get the disk offset to the root directory (root_dirnode).
+		// In order to get that we need to read in the volume header
+		// from the first sector of the disk.
+
 		status = ocfs_wait_for_disk_lock_release (osb, OCFS_VOLUME_LOCK_OFFSET,
 						 10000, OCFS_DLM_NO_LOCK);
 		if (status < 0) {
@@ -471,12 +484,14 @@
 				     OCFS_DLM_EXCLUSIVE_LOCK, FLAG_FILE_CREATE,
 				     &lockres, &bh, NULL);
 		if (status >= 0) {
+			// Read the volume header from the first sector of the
+			// partition and put it into our buffer head
 			status = ocfs_read_bh(osb, 0, &hdr_bh, 0, NULL);
 			if (status < 0)
 				LOG_ERROR_STATUS (status);
 
 			tmpstat = ocfs_release_lock (osb, OCFS_VOLUME_LOCK_OFFSET, OCFS_DLM_EXCLUSIVE_LOCK, 0, lockres, bh, NULL);
-	
+
 			if (bh)
 				brelse(bh);
 
@@ -492,7 +507,13 @@
 				LOG_ERROR_STATUS (status);
 			goto finally;
 		}
-		
+
+		// Get the volume header data from our buffer head.  We need to
+		// know the following in order to call
+		// ocfs_create_root_dir_node():
+		//      * root_off: disk offset to the ocfs root dirnode
+		//        (root_directory)
+		//      * internal_off: disk offset tot he data segment
 		volDiskHdr = (ocfs_vol_disk_hdr *) OCFS_BH_GET_DATA_READ(hdr_bh); /* read */
 		root_off = volDiskHdr->root_off;
 		int_off = volDiskHdr->internal_off;
@@ -502,10 +523,13 @@
 			ocfs_wait_for_disk_lock_release (osb,
 							OCFS_VOLUME_LOCK_OFFSET,
 							30000, OCFS_DLM_NO_LOCK);
+			// Setup the root_start_off with the correct value so
+			// that it will not run this function the next time the
+			// filesystem is mounted.
 			osb->vol_layout.root_start_off = root_off;
 			osb->vol_layout.root_int_off = int_off;
 		}
-
+		// Do all the work in creating our root directory
 		status = ocfs_create_root_dir_node (osb);
 		if (status < 0) {
 			LOG_ERROR_STATUS (status);


More information about the Ocfs2-devel mailing list