[Ocfs2-commits] mfasheh commits r1660 - branches/dlm-glue/src

svn-commits at oss.oracle.com svn-commits at oss.oracle.com
Sat Nov 20 17:32:40 CST 2004


Author: mfasheh
Date: 2004-11-20 17:32:38 -0600 (Sat, 20 Nov 2004)
New Revision: 1660

Modified:
   branches/dlm-glue/src/super.c
Log:
* clean things up a bit wrt passing group_name around



Modified: branches/dlm-glue/src/super.c
===================================================================
--- branches/dlm-glue/src/super.c	2004-11-20 23:32:00 UTC (rev 1659)
+++ branches/dlm-glue/src/super.c	2004-11-20 23:32:38 UTC (rev 1660)
@@ -139,7 +139,8 @@
 static int __init ocfs_driver_entry (void);
 static void __exit ocfs_driver_exit (void);
 static void ocfs_put_super (struct super_block *sb);
-static int ocfs_mount_volume (struct super_block *sb, int reclaim_id, char *group_name, struct inode *root);
+static int ocfs_mount_volume (struct super_block *sb, int reclaim_id,
+			      char **group_name, struct inode *root);
 static void ocfs_dismount_volume(struct super_block *sb);
 static int ocfs_initialize_mem_lists (void);
 static void ocfs_free_mem_lists (void);
@@ -156,7 +157,7 @@
 static int ocfs_init_global_system_inodes(ocfs_super *osb);
 static int ocfs_init_local_system_inodes(ocfs_super *osb);
 static int ocfs_release_system_inodes(ocfs_super *osb);
-static int ocfs2_fill_node_info(ocfs_super *osb, const char *group_name);
+static int ocfs2_fill_node_info(ocfs_super *osb, char **group_name);
 static int ocfs2_complete_mount_recovery(ocfs_super *osb);
 static int ocfs_check_volume(ocfs_super * osb);
 static int ocfs_verify_volume(ocfs2_dinode *di, struct buffer_head *bh,
@@ -339,7 +340,7 @@
 	/* this is needed to support O_LARGE_FILE */
 	sb->s_maxbytes = OCFS_LINUX_MAX_FILE_SIZE;
 
-	status = ocfs_mount_volume (sb, reclaim_id, group_name, NULL);
+	status = ocfs_mount_volume (sb, reclaim_id, &group_name, NULL);
 	if (status < 0)
 		goto read_super_error;
 
@@ -489,13 +490,15 @@
 			}
 			LOG_TRACE_ARGS("group name passed = %s\n", value);
 
-			size = strlen(value);
+			size = strlen(value) + 1;
 			*group_name = kmalloc(size, GFP_KERNEL);
 			if (!(*group_name)) {
 				LOG_ERROR_STATUS(-ENOMEM);
 				goto bail;
 			}
-
+			memset(*group_name, 0, size);
+			printk("ocfs2: group name passed = %s, size = %d\n",
+			       value, size);
 			strcpy(*group_name, value);
 		} else {
 			LOG_ERROR_ARGS ("Invalid mount option: %s", c);
@@ -856,24 +859,25 @@
 	return 0;
 }
 
-static int ocfs2_fill_node_info(ocfs_super *osb, const char *group_name)
+static int ocfs2_fill_node_info(ocfs_super *osb, char **group_name)
 {
 	int status;
 	struct inode *group = NULL;
 
-	osb->group_name = kmalloc(NM_MAX_NAME_LEN, GFP_KERNEL);
-	if (!osb->group_name) {
-		status = -ENOMEM;
-		LOG_ERROR_STATUS(status);
-		goto bail;
+	if (group_name) {
+		osb->group_name = *group_name;
+		*group_name = NULL;
+	} else {
+		osb->group_name = kmalloc(NM_MAX_NAME_LEN, GFP_KERNEL);
+		if (!osb->group_name) {
+			status = -ENOMEM;
+			LOG_ERROR_STATUS(status);
+			goto bail;
+		}
+		memset(osb->group_name, 0, NM_MAX_NAME_LEN);
+		memcpy(osb->group_name, osb->uuid, MAX_VOL_ID_LENGTH);
 	}
-	memset(osb->group_name, 0, NM_MAX_NAME_LEN);
 
-	if (group_name)
-		strncpy(osb->group_name, group_name, NM_MAX_NAME_LEN);
-	else
-		memcpy(osb->group_name, osb->uuid, MAX_VOL_ID_LENGTH);
-
 	group = nm_get_group_by_name(osb->group_name);
 	if (!group) {
 		printk("ocfs2: could not join group \"%s\"\n",
@@ -898,7 +902,8 @@
  * ocfs_mount_volume()
  *
  */
-static int ocfs_mount_volume (struct super_block *sb, int reclaim_id, char *group_name, struct inode *root)
+static int ocfs_mount_volume (struct super_block *sb, int reclaim_id,
+			      char **group_name, struct inode *root)
 {
 	int status, sector_size;
 	int unlock_super = 0;



More information about the Ocfs2-commits mailing list