[Ocfs2-devel] Commenting patch
Kurt Hackel
Kurt.Hackel at oracle.com
Wed Apr 21 17:57:19 CDT 2004
John,
Eeeeek! Sorry I should have said something! I pretty much finished
mkfs over the last few days. I couldn't take it anymore so I just went
ahead and did it over the weekend ;-)
How far along are you? We should sync up.
-kurt
On Wed, Apr 21, 2004 at 04:48:36PM -0700, John L. Villalovos wrote:
> 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);
>
> 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);
> _______________________________________________
> Ocfs2-devel mailing list
> Ocfs2-devel at oss.oracle.com
> http://oss.oracle.com/mailman/listinfo/ocfs2-devel
More information about the Ocfs2-devel
mailing list