Changeset 9020

Show
Ignore:
Timestamp:
08/22/11 12:16:24 (22 months ago)
Author:
sdsnyde
Message:

added new uid management app under src/apps/admin/pvfs2-get-uid
also included are a server and client side sm and the uid mgmt implementation files

Location:
branches/Orange-Branch
Files:
5 added
15 modified

Legend:

Unmodified
Added
Removed
  • branches/Orange-Branch/include/pvfs2-mgmt.h

    r8899 r9020  
    2626#include "pvfs2-sysint.h" 
    2727#include "pvfs2-types.h" 
     28#include "pint-uid-mgmt.h" 
    2829 
    2930/* non-blocking mgmt operation handle */ 
     
    414415    PVFS_BMI_addr_t *addr); 
    415416 
     417PVFS_error PVFS_imgmt_get_uid_list( 
     418    PVFS_fs_id fs_id, 
     419    PVFS_credentials *credentials, 
     420    int server_count, 
     421    PVFS_BMI_addr_t *addr_array, 
     422    uint32_t history, 
     423    PVFS_uid_info_s **uid_info_array, 
     424    uint32_t *uid_count, 
     425    PVFS_mgmt_op_id *op_id, 
     426    PVFS_hint hints, 
     427    void *user_ptr); 
     428 
     429PVFS_error PVFS_mgmt_get_uid_list( 
     430    PVFS_fs_id fs_id, 
     431    PVFS_credentials *credentials, 
     432    int server_count, 
     433    PVFS_BMI_addr_t *addr_array, 
     434    uint32_t history, 
     435    PVFS_uid_info_s **uid_info_array, 
     436    uint32_t *uid_count, 
     437    PVFS_hint hints, 
     438    void *user_ptr); 
     439 
     440 
    416441#endif /* __PVFS2_MGMT_H */ 
    417442 
  • branches/Orange-Branch/src/apps/admin/module.mk.in

    r8900 r9020  
    2828        $(DIR)/pvfs2-perror.c \ 
    2929        $(DIR)/pvfs2-check-server.c \ 
    30         $(DIR)/pvfs2-drop-caches.c 
     30        $(DIR)/pvfs2-drop-caches.c \ 
     31        $(DIR)/pvfs2-get-uid.c 
    3132 
    3233ADMINSRC_SERVER := \ 
  • branches/Orange-Branch/src/client/sysint/client-state-machine.c

    r8941 r9020  
    269269    {&pvfs2_client_mgmt_remove_dirent_sm}, 
    270270    {&pvfs2_client_mgmt_create_dirent_sm}, 
    271     {&pvfs2_client_mgmt_get_dirdata_handle_sm} 
     271    {&pvfs2_client_mgmt_get_dirdata_handle_sm}, 
     272    {&pvfs2_client_mgmt_get_uid_list_sm} 
    272273}; 
    273274 
     
    992993        { PVFS_MGMT_GET_DIRDATA_HANDLE, 
    993994          "PVFS_MGMT_GET_DIRDATA_HANDLE" }, 
     995        { PVFS_MGMT_GET_UID_LIST, "PVFS_MGMT_GET_UID_LIST" }, 
    994996        { PVFS_SYS_GETEATTR, "PVFS_SYS_GETEATTR" }, 
    995997        { PVFS_SYS_SETEATTR, "PVFS_SYS_SETEATTR" }, 
  • branches/Orange-Branch/src/client/sysint/client-state-machine.h

    r8957 r9020  
    553553{ 
    554554    struct PINT_dev_unexp_info *info; 
     555}; 
     556 
     557/* scratch area used for the UID management state machine */ 
     558struct PINT_client_mgmt_get_uid_list_sm 
     559{ 
     560    PVFS_fs_id fs_id; 
     561    uint32_t history; 
     562    int server_count; 
     563    PVFS_id_gen_t *addr_array;         /* in */ 
     564    PVFS_uid_info_s **uid_statistics;  /* out */ 
     565    uint32_t *uid_count;               /* out */ 
    555566}; 
    556567 
     
    632643        struct PINT_sysdev_unexp_sm sysdev_unexp; 
    633644        struct PINT_client_job_timer_sm job_timer; 
     645        struct PINT_client_mgmt_get_uid_list_sm get_uid_list; 
    634646    } u; 
    635647} PINT_client_sm; 
     
    720732    PVFS_MGMT_CREATE_DIRENT        = 79, 
    721733    PVFS_MGMT_GET_DIRDATA_HANDLE   = 80, 
     734    PVFS_MGMT_GET_UID_LIST         = 81,  
    722735    PVFS_SERVER_GET_CONFIG         = 200, 
    723736    PVFS_CLIENT_JOB_TIMER          = 300, 
     
    728741#define PVFS_OP_SYS_MAXVALID  21 
    729742#define PVFS_OP_SYS_MAXVAL 69 
    730 #define PVFS_OP_MGMT_MAXVALID 81 
     743#define PVFS_OP_MGMT_MAXVALID 82 
    731744#define PVFS_OP_MGMT_MAXVAL 199 
    732745 
     
    831844extern struct PINT_state_machine_s pvfs2_client_statfs_sm; 
    832845extern struct PINT_state_machine_s pvfs2_fs_add_sm; 
     846extern struct PINT_state_machine_s pvfs2_client_mgmt_get_uid_list_sm; 
    833847 
    834848/* nested state machines (helpers) */ 
  • branches/Orange-Branch/src/client/sysint/module.mk.in

    r6524 r9020  
    5050        $(DIR)/mgmt-remove-dirent.c \ 
    5151        $(DIR)/mgmt-create-dirent.c \ 
    52         $(DIR)/mgmt-get-dirdata-handle.c 
     52        $(DIR)/mgmt-get-dirdata-handle.c \ 
     53        $(DIR)/mgmt-get-uid-list.c 
    5354 
    5455# track generated .c files that need to be removed during dist clean, etc. 
  • branches/Orange-Branch/src/common/misc/module.mk.in

    r7574 r9020  
    2222          $(DIR)/pint-eattr.c \ 
    2323          $(DIR)/pint-hint.c \ 
    24           $(DIR)/pint-mem.c 
     24          $(DIR)/pint-mem.c \ 
     25          $(DIR)/pint-uid-mgmt.c 
    2526SERVERSRC += $(DIR)/server-config.c \ 
    2627             $(DIR)/server-config-mgr.c \ 
     
    4142             $(DIR)/pint-eattr.c \ 
    4243             $(DIR)/pint-mem.c \ 
    43              $(DIR)/pint-hint.c 
     44             $(DIR)/pint-hint.c \ 
     45             $(DIR)/pint-uid-mgmt.c 
    4446 
    4547LIBBMISRC += $(DIR)/str-utils.c \ 
  • branches/Orange-Branch/src/common/misc/pint-util.c

    r8941 r9020  
    473473} 
    474474 
     475/* parses a struct timeval into a readable timestamp string*/ 
     476/* assumes sufficient memory has been allocated for str, no checking */ 
     477/* to be safe, make str a 64 character string atleast */ 
     478void PINT_util_parse_timeval(struct timeval tv, char *str) 
     479{ 
     480    time_t now; 
     481    struct tm *currentTime; 
     482 
     483    now = tv.tv_sec; 
     484    currentTime = localtime(&now); 
     485    strftime(str, 64, "%m/%d/%Y %H:%M:%S", currentTime); 
     486 
     487    return; 
     488} 
    475489 
    476490PVFS_time PINT_util_mktime_version(PVFS_time time) 
  • branches/Orange-Branch/src/common/misc/pint-util.h

    r8941 r9020  
    149149void PINT_util_get_current_timeval(struct timeval *tv); 
    150150int PINT_util_get_timeval_diff(struct timeval *tv_start, struct timeval *tv_end); 
     151void PINT_util_parse_timeval(struct timeval tv, char *str); 
    151152 
    152153PVFS_time PINT_util_mktime_version(PVFS_time time); 
  • branches/Orange-Branch/src/proto/PINT-le-bytefield.c

    r8891 r9020  
    279279                respsize = extra_size_PVFS_servresp_tree_get_file_size; 
    280280                break; 
     281            case PVFS_SERV_MGMT_GET_UID: 
     282                resp.u.mgmt_get_uid.uid_info_array_count = 0; 
     283                respsize = extra_size_PVFS_servresp_mgmt_get_uid; 
     284                break; 
    281285            case PVFS_SERV_NUM_OPS:  /** sentinel, should not hit */ 
    282286                assert(0); 
     
    448452        CASE(PVFS_SERV_LISTEATTR, listeattr); 
    449453        CASE(PVFS_SERV_LISTATTR,  listattr); 
     454        CASE(PVFS_SERV_MGMT_GET_UID, mgmt_get_uid); 
    450455 
    451456        case PVFS_SERV_GETCONFIG: 
     
    546551        CASE(PVFS_SERV_LISTATTR, listattr); 
    547552        CASE(PVFS_SERV_TREE_GET_FILE_SIZE, tree_get_file_size); 
     553        CASE(PVFS_SERV_MGMT_GET_UID, mgmt_get_uid); 
    548554 
    549555        case PVFS_SERV_REMOVE: 
     
    660666        CASE(PVFS_SERV_LISTEATTR, listeattr); 
    661667        CASE(PVFS_SERV_LISTATTR, listattr); 
     668        CASE(PVFS_SERV_MGMT_GET_UID, mgmt_get_uid); 
    662669 
    663670        case PVFS_SERV_GETCONFIG: 
     
    748755        CASE(PVFS_SERV_LISTATTR, listattr); 
    749756        CASE(PVFS_SERV_TREE_GET_FILE_SIZE, tree_get_file_size); 
     757        CASE(PVFS_SERV_MGMT_GET_UID, mgmt_get_uid); 
    750758 
    751759        case PVFS_SERV_REMOVE: 
     
    914922            case PVFS_SERV_MGMT_PERF_MON: 
    915923            case PVFS_SERV_MGMT_EVENT_MON: 
     924            case PVFS_SERV_MGMT_GET_UID: 
    916925 
    917926            case PVFS_SERV_DELEATTR: 
     
    10521061                   } 
    10531062 
     1063                case PVFS_SERV_MGMT_GET_UID: 
     1064                   { 
     1065                      decode_free(resp->u.mgmt_get_uid.uid_info_array); 
     1066                      break; 
     1067                   } 
     1068 
    10541069                case PVFS_SERV_GETCONFIG: 
    10551070                case PVFS_SERV_REMOVE: 
  • branches/Orange-Branch/src/proto/pvfs2-req-proto.h

    r8941 r9020  
    1919#include "pvfs2-mgmt.h" 
    2020#include "pint-hint.h" 
     21#include "pint-uid-mgmt.h" 
    2122 
    2223/* update PVFS2_PROTO_MAJOR on wire protocol changes that break backwards 
     
    2829 * compatibility (such as adding a new request type) 
    2930 */ 
    30 #define PVFS2_PROTO_MINOR 0 
     31#define PVFS2_PROTO_MINOR 1 
    3132#define PVFS2_PROTO_VERSION ((PVFS2_PROTO_MAJOR*1000)+(PVFS2_PROTO_MINOR)) 
    3233 
     
    8485    PVFS_SERV_TREE_REMOVE = 41, 
    8586    PVFS_SERV_TREE_GET_FILE_SIZE = 42, 
     87    PVFS_SERV_MGMT_GET_UID = 43, 
    8688    /* leave this entry last */ 
    8789    PVFS_SERV_NUM_OPS 
     
    19171919    (PVFS_REQ_LIMIT_EATTR_KEY_LEN * PVFS_REQ_LIMIT_EATTR_LIST) 
    19181920 
     1921/* mgmt_get_uid ****************************************************/ 
     1922/* retrieves uid managment history from server */ 
     1923 
     1924struct PVFS_servreq_mgmt_get_uid 
     1925{ 
     1926    uint32_t history;      /* number of seconds we want to go back 
     1927                              when retrieving the uid history */ 
     1928}; 
     1929endecode_fields_1_struct( 
     1930    PVFS_servreq_mgmt_get_uid, 
     1931    uint32_t, history); 
     1932 
     1933#define PINT_SERVREQ_MGMT_GET_UID_FILL(__req,         \ 
     1934                                        __creds,      \ 
     1935                                        __history,    \ 
     1936                                        __hints)      \ 
     1937do {                                                  \ 
     1938    memset(&(__req), 0, sizeof(__req));               \ 
     1939    (__req).op = PVFS_SERV_MGMT_GET_UID;              \ 
     1940    (__req).credentials = (__creds);                  \ 
     1941    (__req).hints = (__hints);                        \ 
     1942    (__req).u.mgmt_get_uid.history = (__history);     \ 
     1943} while (0) 
     1944 
     1945struct PVFS_servresp_mgmt_get_uid 
     1946{ 
     1947    PVFS_uid_info_s *uid_info_array;    /* array of uid info */ 
     1948    uint32_t uid_info_array_count;      /* size of above array */ 
     1949}; 
     1950endecode_fields_1a_struct( 
     1951    PVFS_servresp_mgmt_get_uid, 
     1952    skip4,, 
     1953    uint32_t, uid_info_array_count, 
     1954    PVFS_uid_info_s, uid_info_array); 
     1955 
     1956#define extra_size_PVFS_servresp_mgmt_get_uid \ 
     1957    UID_MGMT_MAX_HISTORY * sizeof(PVFS_uid_info_s) 
    19191958 
    19201959/* server request *********************************************/ 
     
    19632002        struct PVFS_servreq_tree_remove tree_remove; 
    19642003        struct PVFS_servreq_tree_get_file_size tree_get_file_size; 
     2004        struct PVFS_servreq_mgmt_get_uid mgmt_get_uid; 
    19652005    } u; 
    19662006}; 
     
    20182058        struct PVFS_servresp_listattr listattr; 
    20192059        struct PVFS_servresp_tree_get_file_size tree_get_file_size; 
     2060        struct PVFS_servresp_mgmt_get_uid mgmt_get_uid; 
    20202061    } u; 
    20212062}; 
  • branches/Orange-Branch/src/server/module.mk.in

    r8486 r9020  
    4848                $(DIR)/precreate-pool-refiller.c \ 
    4949                $(DIR)/unstuff.c \ 
    50                 $(DIR)/tree-communicate.c 
     50                $(DIR)/tree-communicate.c \ 
     51                $(DIR)/mgmt-get-uid.c 
    5152 
    5253        # c files that should be added to server library 
  • branches/Orange-Branch/src/server/prelude.sm

    r8891 r9020  
    9999    s_op->access_type = PINT_server_req_get_access_type(s_op->req); 
    100100    s_op->sched_policy = PINT_server_req_get_sched_policy(s_op->req); 
     101 
     102    /* add the user to the uid mgmt system */ 
     103    ret = PINT_add_user_to_uid_mgmt(s_op->req->credentials.uid); 
     104    if (ret != 0) 
     105    { 
     106        gossip_debug(GOSSIP_MIRROR_DEBUG, "Unable to add user id to uid" 
     107                      "management interface\n"); 
     108    } 
    101109 
    102110    return SM_ACTION_COMPLETE; 
  • branches/Orange-Branch/src/server/pvfs2-server-req.c

    r8098 r9020  
    5252extern struct PINT_server_req_params pvfs2_tree_remove_params; 
    5353extern struct PINT_server_req_params pvfs2_tree_get_file_size_params; 
     54extern struct PINT_server_req_params pvfs2_uid_mgmt_params; 
    5455 
    5556/* table of incoming request types and associated parameters */ 
     
    99100    /* 41 */ {PVFS_SERV_TREE_REMOVE, &pvfs2_tree_remove_params}, 
    100101    /* 42 */ {PVFS_SERV_TREE_GET_FILE_SIZE, &pvfs2_tree_get_file_size_params}, 
     102    /* 43 */ {PVFS_SERV_MGMT_GET_UID, &pvfs2_uid_mgmt_params}, 
    101103}; 
    102104 
  • branches/Orange-Branch/src/server/pvfs2-server.c

    r8985 r9020  
    4747#include "pint-event.h" 
    4848#include "pint-util.h" 
     49#include "pint-uid-mgmt.h" 
    4950 
    5051#ifndef PVFS2_VERSION 
     
    11631164#endif 
    11641165 
     1166    ret = PINT_uid_mgmt_initialize(); 
     1167    if (ret < 0) 
     1168    { 
     1169        gossip_err("Error initializing the uid management interface\n"); 
     1170        return (ret); 
     1171    } 
     1172 
     1173    *server_status_flag |= SERVER_UID_MGMT_INIT; 
     1174 
    11651175    ret = precreate_pool_initialize(server_index); 
    11661176    if (ret < 0) 
     
    16231633        gossip_debug(GOSSIP_SERVER_DEBUG, "[-]         performance " 
    16241634                     "interface     [ stopped ]\n"); 
     1635    } 
     1636 
     1637    if (status & SERVER_UID_MGMT_INIT) 
     1638    { 
     1639        gossip_debug(GOSSIP_SERVER_DEBUG, "[+] halting uid management " 
     1640                     "interface     [   ...   ]\n"); 
     1641        PINT_uid_mgmt_finalize(); 
     1642        gossip_debug(GOSSIP_SERVER_DEBUG, "[-]         uid management " 
     1643                     "interface     [ stopped ]\n"); 
     1644 
    16251645    } 
    16261646 
  • branches/Orange-Branch/src/server/pvfs2-server.h

    r8941 r9020  
    210210    SERVER_CACHED_CONFIG_INIT  = (1 << 17), 
    211211    SERVER_PRECREATE_INIT  = (1 << 18), 
     212    SERVER_UID_MGMT_INIT = (1 << 19),  
    212213} PINT_server_status_flag; 
    213214