[Pvfs2-cvs] commit by kunkel in pvfs2/src/apps/admin: module.mk.in pvfs2-migrate.c pvfs2-viewdist.c pvfs2-print-file-mapping.c

CVS commit program cvs at parl.clemson.edu
Sat Aug 26 14:00:28 EDT 2006


Update of /projects/cvsroot/pvfs2/src/apps/admin
In directory parlweb1:/tmp/cvs-serv12029/src/apps/admin

Modified Files:
      Tag: kunkel-branch
	module.mk.in pvfs2-migrate.c pvfs2-viewdist.c 
Removed Files:
      Tag: kunkel-branch
	pvfs2-print-file-mapping.c 
Log Message:
Argh, removed redundant print-file-mapping, this is already done by 
viewdist... some minor bugfixes...


Index: module.mk.in
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/apps/admin/module.mk.in,v
diff -p -u -r1.39.12.1 -r1.39.12.2
--- module.mk.in	22 Aug 2006 10:54:17 -0000	1.39.12.1
+++ module.mk.in	26 Aug 2006 18:00:28 -0000	1.39.12.2
@@ -15,7 +15,6 @@ ADMINSRC := \
 	$(DIR)/pvfs2-event-mon-example.c \
 	$(DIR)/pvfs2-mkdir.c \
 	$(DIR)/pvfs2-migrate.c \
-	$(DIR)/pvfs2-print-file-mapping.c \
 	$(DIR)/pvfs2-chmod.c \
 	$(DIR)/pvfs2-chown.c \
 	$(DIR)/pvfs2-fs-dump.c\

Index: pvfs2-migrate.c
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/apps/admin/Attic/pvfs2-migrate.c,v
diff -p -u -r1.1.2.2 -r1.1.2.3
--- pvfs2-migrate.c	26 Aug 2006 13:37:45 -0000	1.1.2.2
+++ pvfs2-migrate.c	26 Aug 2006 18:00:28 -0000	1.1.2.3
@@ -22,12 +22,14 @@
 #include "pint-sysint-utils.h"
 #include "pvfs2-internal.h"
 
+#define DFILE_KEY "system.pvfs2." DATAFILE_HANDLES_KEYSTR
+
 /* optional parameters, filled in by parse_args() */
 struct options
 {
     char *file;
-    char *old_dataserver_alias;
-    char *new_dataserver_alias;
+    char *old_dataserver;
+    char *new_dataserver;
     PVFS_handle old_dataserver_handle_number;
     
     int verbose;
@@ -41,6 +43,7 @@ static void usage(
     int argc,
     char **argv);
     
+    
 int lookup(
     char *pvfs2_file,
     PVFS_credentials * credentials,
@@ -48,179 +51,67 @@ int lookup(
     PVFS_object_ref * out_object_ref,
     PVFS_sysresp_getattr * out_resp_getattr);
     
-const char *get_server_for_handle(
-    PVFS_handle handle,
-    int server_count,
-    char **server_names,
-    PVFS_handle * data_lower_handle,
-    PVFS_handle * data_upper_handle);
-
-const char *get_server_for_handle(
-    PVFS_handle handle,
-    int server_count,
-    char **server_names,
-    PVFS_handle * data_lower_handle,
-    PVFS_handle * data_upper_handle)
-{
-    int i;
-    for (i = 0; i < server_count; i++)
-    {
-        if (data_lower_handle[i] <= handle && handle <= data_upper_handle[i])
-        {
-            return server_names[i];
-        }
-    }
-    return NULL;
-}
-
-int migrate_alias(
-    PVFS_fs_id fs_id,
-    PVFS_credentials *credentials,
-    PVFS_object_ref metafile_ref,
-    PVFS_handle datafile_handle,
-    const char * const metaserver_alias,
-    const char * const source_alias,
-    const char * const target_alias
-    );
-    
-int getServers(
-    int type,
-    PVFS_fs_id fsid,
-    PVFS_credentials * credentials,
-    PVFS_BMI_addr_t ** out_addr_array_p,
-    char ***out_server_names,
-    int *out_server_count,
-    PVFS_handle ** lower_handle,
-    PVFS_handle ** upper_handle);
-    
-static inline double Wtime(
-    void)
-{
-    struct timeval t;
-    gettimeofday(&t, NULL);
-    return ((double) t.tv_sec + (double) (t.tv_usec) / 1000000);
-}
-
-int getServers(
-    int type,
-    PVFS_fs_id fsid,
-    PVFS_credentials * credentials,
-    PVFS_BMI_addr_t ** out_addr_array_p,
-    char ***out_server_names,
-    int *out_server_count,
-    PVFS_handle ** lower_handle_p,
-    PVFS_handle ** upper_handle_p)
+/*
+ * nservers is an in-out style parameter
+ * servers is allocated memory upto *nservers and each element inside that
+ * is allocated internally in this function.
+ * callers job is to free up all the memory
+ */
+static int generic_server_location( PVFS_object_ref obj, PVFS_credentials *creds,
+        char **servers, PVFS_handle *handles, int *nservers)
 {
-    int ret, i;
-    int count;
-    PVFS_BMI_addr_t *addr_array;
-
-    ret = PVFS_mgmt_count_servers(fsid, credentials, type, &count);
-    if (ret < 0)
-    {
-        PVFS_perror("PVFS_mgmt_count_servers()", ret);
-        exit(1);
-    }
-
-    *out_server_count = count;
-
-    addr_array = (PVFS_BMI_addr_t *) malloc(count * sizeof(PVFS_BMI_addr_t));
-    memset(addr_array, 0, count * sizeof(PVFS_BMI_addr_t));
-    *out_addr_array_p = addr_array;
-
-    *out_server_names = (char **) malloc(count * sizeof(char *));
-    *lower_handle_p = (PVFS_handle *) malloc(count * sizeof(PVFS_handle));
-    *upper_handle_p = (PVFS_handle *) malloc(count * sizeof(PVFS_handle));
-
-    if (addr_array == NULL || *out_server_names == NULL ||
-        *lower_handle_p == NULL || *upper_handle_p == NULL)
+    char *buffer = (char *) malloc(4096);
+    int ret, num_dfiles, count;
+    PVFS_fs_id fsid;
+    
+    PVFS_ds_keyval key, val;
+
+    key.buffer = DFILE_KEY;
+    key.buffer_sz = strlen(DFILE_KEY) + 1;
+    val.buffer = buffer;
+    val.buffer_sz = 4096;
+    if ((ret = PVFS_sys_geteattr(obj, 
+            creds, &key, &val, NULL)) < 0)
     {
-        perror("malloc");
-        return ret;
+        PVFS_perror("PVFS_sys_geteattr", ret);
+        return -1;
     }
+    ret = val.read_sz;
+    fsid = obj.fs_id;
 
-    ret =
-        PVFS_mgmt_get_server_array(fsid, credentials, type, addr_array,
-                                   out_server_count);
-    if (ret < 0)
-    {
-        PVFS_perror("PVFS_mgmt_get_server_array()", ret);
-        return ret;
+    /*
+     * At this point, we know all the dfile handles 
+     */
+    num_dfiles = (ret / sizeof(PVFS_handle));
+    count = num_dfiles < *nservers ? num_dfiles : *nservers;
+    for (ret = 0; ret < count; ret++)
+    {
+        PVFS_handle *ptr = (PVFS_handle *) ((char *) buffer + ret * sizeof(PVFS_handle));
+        servers[ret] = (char *) calloc(1, PVFS_MAX_SERVER_ADDR_LEN);
+        handles[ret] = *ptr;
+        if (servers[ret] == NULL)
+        {
+            break;
+        }
+        /* ignore any errors */
+        PINT_cached_config_get_server_name(
+                servers[ret], PVFS_MAX_SERVER_ADDR_LEN,
+                *ptr, fsid);
     }
-
-    if (count != *out_server_count)
+    if (ret != count)
     {
-        fprintf(stderr, "Error count != *out_server_count: %d != %d \n", count,
-                *out_server_count);
-        return -1;
-    }
-
-    char **server_names = *out_server_names;
-    PVFS_handle *lower_handle = *lower_handle_p;
-    PVFS_handle *upper_handle = *upper_handle_p;
-
-    for (i = 0; i < count; i++)
-    {
-        ret = PVFS_mgmt_map_addr_to_alias(fsid, credentials, addr_array[i],
-                                          &server_names[i],
-                                          &lower_handle[i], &upper_handle[i],
-                                          type);
-        if (ret != 0)
+        int j;
+        for (j = 0; j < ret; j++)
         {
-            fprintf(stderr,
-                    "Could not map bmi_address to string for entry: %d\n",
-                    i + 1);
-            exit(1);
+            free(servers[j]);
+            servers[j] = NULL;
         }
+        return -1;
     }
-
+    *nservers = count;
     return 0;
 }
 
-int migrate_alias(
-    PVFS_fs_id fs_id,
-    PVFS_credentials *credentials,
-    PVFS_object_ref metafile_ref,    
-    PVFS_handle datafile_handle,
-    const char * const metaserver_alias,
-    const char * const source_alias,
-    const char * const target_alias
-    )
-{
-    PVFS_hint * hints = NULL;
-    PVFS_BMI_addr_t source_address;
-    PVFS_BMI_addr_t target_address;
-    PVFS_BMI_addr_t meta_address;
-    PVFS_error ret;
-
-    ret = PVFS_get_bmi_address(source_alias, fs_id, &source_address);    
-    if( ret != 0){
-        return ret;
-    }
-    ret = PVFS_get_bmi_address(target_alias, fs_id, &target_address);    
-    if( ret != 0){
-        return ret;
-    }
-    ret = PVFS_get_bmi_address(metaserver_alias, fs_id, &meta_address);    
-    if( ret != 0){
-        return ret;
-    }    
-    
-    PVFS_add_hint(& hints, REQUEST_ID, "pvfs2-migrate");        
-    ret = PVFS_mgmt_migrate(fs_id, credentials, meta_address , metafile_ref.handle, 
-        datafile_handle, source_address, target_address, hints);
-    PVFS_free_hint(& hints);
-    
-    return ret;
-}
-
-
-/*
- * Steps:
- * lookup filename
- * map aliases to handle_ranges
- * start migration and we are done once the migration finishes :)
- */
 int main(
     int argc,
     char **argv)
@@ -231,19 +122,19 @@ int main(
 
     PVFS_fs_id fsid = 0;
     PVFS_object_ref metafile_ref;
-    int data_server_count;
-    PVFS_BMI_addr_t *data_addr_array = NULL;
-    char **data_server_names = NULL;
-    PVFS_handle *data_lower_handle = NULL;
-    PVFS_handle *data_upper_handle = NULL;
-    
-    int meta_server_count;
-    PVFS_BMI_addr_t *meta_addr_array = NULL;
-    char **meta_server_names = NULL;
-    PVFS_handle *meta_lower_handle = NULL;
-    PVFS_handle *meta_upper_handle = NULL;
+    int i;
+
+    char *servers[1024];
+    char metadataserver[256];
     
-    char * metaserver_alias = NULL;
+    PVFS_handle handles[1024];
+    int nservers = 1024;
+    
+    PVFS_BMI_addr_t bmi_metadataserver;
+    PVFS_BMI_addr_t bmi_olddatataserver;
+    PVFS_BMI_addr_t bmi_newdatataserver;
+    
+    PVFS_hint * hints = NULL;
 
     PVFS_sysresp_getattr resp_getattr;  
     
@@ -269,146 +160,115 @@ int main(
         return -1;
     }
     
-    ret = getServers(PVFS_MGMT_IO_SERVER,
-                     fsid,
-                     &credentials,
-                     &data_addr_array,
-                     &data_server_names,
-                     &data_server_count,
-                     &data_lower_handle, &data_upper_handle);
+    ret = generic_server_location(metafile_ref, &credentials, servers, 
+        handles, &nservers);
     if (ret < 0)
     {
-        return ret;
-    }    
-    
-    ret = getServers(PVFS_MGMT_META_SERVER,
-                     fsid,
-                     &credentials,
-                     &meta_addr_array,
-                     &meta_server_names,
-                     &meta_server_count,
-                     &meta_lower_handle, &meta_upper_handle);
-    if (ret < 0)
-    {
-        return ret;
+        fprintf(stderr, "Could not read server location information!\n");
+        return -1;
     }    
     
-    /*
-     * Lookup server alias !
-     */
-    metaserver_alias = (char *) get_server_for_handle(
-                                      metafile_ref.handle,
-                                      meta_server_count, meta_server_names,
-                                      meta_lower_handle, meta_upper_handle);
-     
     if( user_opts->old_dataserver_handle_number != 0){
-        user_opts->old_dataserver_alias = (char *) get_server_for_handle(
-                                      user_opts->old_dataserver_handle_number,
-                                      data_server_count, data_server_names,
-                                      data_lower_handle, data_upper_handle);
-    }else{
-        /*
-         * lookup handle number !
-         * get datafiles from acache if possible !
-         */
-         
-        PVFS_sys_attr *attr;
-        PVFS_handle *dfile_array;
-        int dfile_count;
-        int i;
-        int matching = 0;
-        PVFS_handle server_lower_range;
-        PVFS_handle server_upper_range;
-        
-        attr = & resp_getattr.attr;
-        
-        dfile_array =
-            (PVFS_handle *) malloc(sizeof(PVFS_handle) * attr->dfile_count);
-        dfile_count = attr->dfile_count;
-        ret =
-            PVFS_mgmt_get_datafiles_from_acache(metafile_ref, dfile_array,
-                                                &dfile_count);
         /*
-         * find matching server.
+         * Lookup server bmi-address !
          */
-        
-        for (i = 0; i < data_server_count; i++)
+        for(i = 0 ; i < nservers; i++)
         {
-            if( strcmp(data_server_names[i], user_opts->old_dataserver_alias) == 0 )
+            if( user_opts->old_dataserver_handle_number == handles[i] )
             {
-               server_lower_range = data_lower_handle[i];
-               server_upper_range = data_upper_handle[i];
-               break;
+                user_opts->old_dataserver = servers[i];
+                break;
             }
-        }        
-        if( i == data_server_count )
+        }
+         
+        if( i == nservers)
         {
-            fprintf(stderr, "Server name could not be found !\n");
-            return -1;
+            fprintf(stderr, "Error, could not find dataserver for handle: %lld\n", 
+                lld(user_opts->old_dataserver_handle_number));
+            return(-1);
         }
-        
+    }else{
         /*
-         * Find matching handles in datafiles
+         * Lookup by server bmi address:
          */
-        for (i = 0; i < dfile_count; i++)
-        {
-                if (server_lower_range <= dfile_array[i] && 
-                    dfile_array[i] <= server_upper_range)
-                {
-                    matching++;
-                    user_opts->old_dataserver_handle_number = dfile_array[i];
-                    if(user_opts->verbose )
-                    {
-                        printf("Found datafile %lld\n", dfile_array[i]);
-                    }
-                }           
-        }
-        
-        if( matching < 1 )
+        for(i = 0 ; i < nservers; i++)
         {
-            fprintf(stderr, "Found no datafile in range of server !\n");
-            return -1;
+            if( strcmp(servers[i], user_opts->old_dataserver) == 0)
+            {
+                user_opts->old_dataserver_handle_number = handles[i];
+                break;
+            }
         }
-        
-        if( matching > 1 )
+        if( i == nservers)
         {
-            fprintf(stderr, "Found multiple datafiles in range of server, please specify datafile !\n");
-            return -1;
+            fprintf(stderr, "Error, could not find handle within datafile for server: %s\n", 
+                user_opts->old_dataserver);
+            return(-1);
         }
-
-        free(dfile_array);
     }
    
     
-    if (user_opts->old_dataserver_alias == NULL){
-        fprintf(stderr, "Error, could not find handle for handle: %lld\n", 
-            lld(user_opts->old_dataserver_handle_number));
-        exit(1); 
-    }
+
     /*
     * Got metafile 
     */
-    if( strcmp(user_opts->old_dataserver_alias, user_opts->new_dataserver_alias) == 0 )
+    if( strcmp(user_opts->old_dataserver, user_opts->new_dataserver) == 0 )
     {
         fprintf(stderr, "Error, source and target dataserver are %s, nothing to be done\n", 
-            user_opts->old_dataserver_alias);
-        /*exit(1);*/
+            user_opts->old_dataserver);
+        return (-1);
+    }
+    
+    ret = PINT_cached_config_get_server_name(metadataserver, 256, 
+        metafile_ref.handle, metafile_ref.fs_id);
+    if( ret != 0)
+    {
+        fprintf(stderr, "Error, could not get metadataserver name\n");
+        return (-1);
+    }
+    
+    
+    ret = BMI_addr_lookup(&bmi_metadataserver,metadataserver);
+    if (ret < 0)
+    {
+        fprintf(stderr, "Error, BMI_addr_lookup unsuccessful %s\n",
+        metadataserver );
+        return(-1);
+    }
+    
+    ret = BMI_addr_lookup(&bmi_newdatataserver, user_opts->new_dataserver);
+    if (ret < 0)
+    {
+        fprintf(stderr, "Error, BMI_addr_lookup unsuccessful %s\n",
+         user_opts->new_dataserver );
+        return(-1);
+    }    
+    
+    ret = BMI_addr_lookup(&bmi_olddatataserver,user_opts->old_dataserver);
+    if (ret < 0)
+    {
+        fprintf(stderr, "Error, BMI_addr_lookup unsuccessful %s\n",
+        user_opts->old_dataserver );
+        return(-1);
     }
     
     if( user_opts->verbose )
     {
         printf("Found metafile handle: %lld\n", lld(metafile_ref.handle));
-        printf("Starting migration for pvfs2-file:%s on metadaserver: %s \n"
-                "\t replace dataserver %s with %s for handle: %lld\n",
-            user_opts->file, metaserver_alias,  
-            user_opts->old_dataserver_alias, user_opts->new_dataserver_alias,
+        printf("Starting migration for pvfs2-file:%s \n\tMetadataserver: %s \n"
+                "\treplace dataserver %s with %s \n\taffected datafile with handle: %lld\n",
+            user_opts->file, metadataserver,  
+            user_opts->old_dataserver, user_opts->new_dataserver,
             lld(user_opts->old_dataserver_handle_number));         
     }
+
     
-    ret = migrate_alias( fsid, & credentials, metafile_ref, 
-        user_opts->old_dataserver_handle_number,
-        metaserver_alias, user_opts->old_dataserver_alias,
-        user_opts->new_dataserver_alias);
+    PVFS_add_hint(& hints, REQUEST_ID, "pvfs2-migrate");        
+    ret = PVFS_mgmt_migrate(metafile_ref.fs_id, & credentials, bmi_metadataserver
+        , metafile_ref.handle, 
+        user_opts->old_dataserver_handle_number, 
+        bmi_olddatataserver, bmi_newdatataserver, hints);
+    PVFS_free_hint(& hints);
     
     if ( ret != 0 )
     {
@@ -449,7 +309,7 @@ static struct options *parse_args(
         switch (one_opt)
         {
         case('d'):        
-            tmp_opts->old_dataserver_alias = optarg;
+            tmp_opts->old_dataserver = optarg;
             break;
         case('s'):
             tmp_opts->old_dataserver_handle_number = (PVFS_handle) atoll(optarg);
@@ -467,7 +327,7 @@ static struct options *parse_args(
     }
 
     if( tmp_opts->old_dataserver_handle_number == 0 &&
-        tmp_opts->old_dataserver_alias  == NULL ){
+        tmp_opts->old_dataserver  == NULL ){
         usage(argc, argv);
         exit(EXIT_FAILURE);   
     } 
@@ -477,7 +337,7 @@ static struct options *parse_args(
         exit(EXIT_FAILURE);
     }
     tmp_opts->file = argv[argc - 2];
-    tmp_opts->new_dataserver_alias = argv[argc - 1];
+    tmp_opts->new_dataserver = argv[argc - 1];
 
     return (tmp_opts);
 }

Index: pvfs2-viewdist.c
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/apps/admin/pvfs2-viewdist.c,v
diff -p -u -r1.15.8.3 -r1.15.8.4
--- pvfs2-viewdist.c	19 Aug 2006 13:09:32 -0000	1.15.8.3
+++ pvfs2-viewdist.c	26 Aug 2006 18:00:28 -0000	1.15.8.4
@@ -212,6 +212,7 @@ int main(int argc, char ** argv)
     PVFS_credentials credentials;
     char *servers[256];
     PVFS_handle handles[256];
+    char metadataserver[256];
     int i, nservers = 256;
 
     memset(&dist, 0, sizeof(dist));
@@ -263,6 +264,17 @@ int main(int argc, char ** argv)
         printf("strip_size = %ld\n", (unsigned long)(params.strip_size));
     }
     PINT_dist_free(dist);
+    
+    
+    ret = PINT_cached_config_get_server_name(metadataserver, 256, 
+        src.u.pvfs2.ref.handle, src.u.pvfs2.ref.fs_id);
+    if( ret != 0)
+    {
+        fprintf(stderr, "Error, could not get metadataserver name\n");
+        return (-1);
+    }
+    printf("Metadataserver: %s\n", metadataserver);
+      
     printf("Number of datafiles/servers = %d\n", nservers);
     for (i = 0; i < nservers; i++)
     {




More information about the Pvfs2-cvs mailing list