diff --git a/config.save b/config.save index 4ba69e8..1792ff7 100755 --- a/config.save +++ b/config.save @@ -435,7 +435,7 @@ $config_headers Report bugs to the package provider." -ac_cs_config="" +ac_cs_config="'--prefix=/home/cengiz/'" ac_cs_version="\ config.status configured by ./configure, generated by GNU Autoconf 2.68, @@ -445,7 +445,7 @@ Copyright (C) 2010 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." -ac_pwd='/usr/src/orangefs-osd' +ac_pwd='/home/cengiz/orangefs-osd' srcdir='.' INSTALL='/usr/bin/install -c' test -n "$AWK" || AWK=awk @@ -525,7 +525,7 @@ if $ac_cs_silent; then fi if $ac_cs_recheck; then - set X '/bin/bash' './configure' $ac_configure_extra_args --no-create --no-recursion + set X '/bin/bash' './configure' '--prefix=/home/cengiz/' $ac_configure_extra_args --no-create --no-recursion shift $as_echo "running CONFIG_SHELL=/bin/bash $*" >&6 CONFIG_SHELL='/bin/bash' @@ -708,9 +708,9 @@ S["ENABLE_COVERAGE"]="" S["BUILD_FUSE"]="" S["FUSE_CFLAGS"]="" S["FUSE_LDFLAGS"]="" -S["SRC_ABSOLUTE_TOP"]="/usr/src/orangefs-osd" +S["SRC_ABSOLUTE_TOP"]="/home/cengiz/orangefs-osd" S["SRC_RELATIVE_TOP"]="./" -S["BUILD_ABSOLUTE_TOP"]="/usr/src/orangefs-osd" +S["BUILD_ABSOLUTE_TOP"]="/home/cengiz/orangefs-osd" S["LINUX24_KERNEL_MINOR_VER"]="" S["LINUX24_KERNEL_SRC"]="" S["LINUX_KERNEL_SRC"]="" @@ -794,7 +794,7 @@ S["libexecdir"]="${exec_prefix}/libexec" S["sbindir"]="${exec_prefix}/sbin" S["bindir"]="${exec_prefix}/bin" S["program_transform_name"]="s,x,x," -S["prefix"]="/usr/local" +S["prefix"]="/home/cengiz" S["exec_prefix"]="${prefix}" S["PACKAGE_URL"]="" S["PACKAGE_BUGREPORT"]="" diff --git a/src/apps/admin/pvfs2-cp.c b/src/apps/admin/pvfs2-cp.c index b274c8c..69b98b8 100644 --- a/src/apps/admin/pvfs2-cp.c +++ b/src/apps/admin/pvfs2-cp.c @@ -149,7 +149,7 @@ int main (int argc, char ** argv) resolve_filename(&dest, user_opts->destfile); PVFS_util_gen_credentials(&credentials); - + ret = generic_open(&src, &credentials, 0, 0, NULL, OPEN_SRC); if (ret < 0) { diff --git a/src/client/sysint/sys-create.sm b/src/client/sysint/sys-create.sm index ef6925a..4b5c910 100644 --- a/src/client/sysint/sys-create.sm +++ b/src/client/sysint/sys-create.sm @@ -357,6 +357,21 @@ PVFS_error PVFS_sys_create( { PVFS_error ret = -PVFS_EINVAL, error = 0; PVFS_sys_op_id op_id; + int ios_num; + struct server_configuration_s *server_config; + + server_config = PINT_get_server_config_struct( + parent_ref.fs_id); + PINT_cached_config_get_num_io(parent_ref.fs_id, &ios_num); + if(server_config->energysaving) + { + if(server_config->econumnodes >= ios_num) + { + server_config->econumnodes = 0; + server_config->energysaving = 0; + } + } + PINT_put_server_config_struct(server_config); gossip_debug(GOSSIP_CLIENT_DEBUG, "PVFS_sys_create entered\n"); @@ -713,6 +728,7 @@ static PINT_sm_action create_create_setup_msgpair( sm_p->object_ref.fs_id, sm_p->u.create.attr, sm_p->u.create.num_data_files, + server_config->econumnodes, sm_p->u.create.layout, sm_p->hints); js_p->error_code = 0; @@ -788,7 +804,7 @@ static PINT_sm_action create_datafiles_setup_msgpair_array( &sm_p->u.create.layout, sm_p->u.create.data_server_addrs, sm_p->u.create.io_handle_extent_array); - + if(ret < 0) { gossip_err("create: failed to map the layout to a set of IO servers\n"); diff --git a/src/common/misc/pint-cached-config.c b/src/common/misc/pint-cached-config.c index 7c4f32b..bf9a4ae 100644 --- a/src/common/misc/pint-cached-config.c +++ b/src/common/misc/pint-cached-config.c @@ -1387,6 +1387,8 @@ int PINT_cached_config_get_server_list( PVFS_fs_id fs_id, PINT_dist *dist, int num_dfiles_req, + int user_id, + int num_energy_nodes, PVFS_sys_layout *layout, const char ***server_names, int *server_count) @@ -1433,7 +1435,13 @@ int PINT_cached_config_get_server_list( return ret; } - servers = malloc(sizeof(*servers) * num_io_servers); + if(num_energy_nodes) + { + servers = malloc(sizeof(*servers) * num_energy_nodes); + } else { + servers = malloc(sizeof(*servers) * num_io_servers); + } + if(!servers) { gossip_err("Failed to allocate server address list\n"); @@ -1441,13 +1449,21 @@ int PINT_cached_config_get_server_list( return -PVFS_ENOMEM; } - for(i = 0; i < num_io_servers; ++i) - { - servers[i] = BMI_addr_rev_lookup(server_addrs[i]); + if(num_energy_nodes) { + for(i = 0; i < num_energy_nodes; ++i) + { + servers[i] = BMI_addr_rev_lookup(server_addrs[(i+(user_id % num_io_servers)) % num_io_servers]); + } + *server_count = num_energy_nodes; + } else { + for(i = 0; i < num_io_servers; ++i) + { + servers[i] = BMI_addr_rev_lookup(server_addrs[i]); + } + *server_count = num_io_servers; } free(server_addrs); - *server_count = num_io_servers; *server_names = servers; return 0; diff --git a/src/common/misc/pint-cached-config.h b/src/common/misc/pint-cached-config.h index 7d0c47f..f970914 100644 --- a/src/common/misc/pint-cached-config.h +++ b/src/common/misc/pint-cached-config.h @@ -138,6 +138,8 @@ int PINT_cached_config_get_server_list( PVFS_fs_id fs_id, PINT_dist *dist, int num_dfiles_req, + int user_id, + int num_energy_nodes, PVFS_sys_layout *layout, const char ***server_names, int *server_count); diff --git a/src/common/misc/server-config.c b/src/common/misc/server-config.c index e8632dd..f558ae8 100644 --- a/src/common/misc/server-config.c +++ b/src/common/misc/server-config.c @@ -4278,46 +4278,6 @@ static char *get_handle_range_str( return ret; } -char *assign_io_servers( - struct server_configuration_s *config_s, - struct filesystem_configuration_s *fs) -{ - char *ret = (char *)0; - PINT_llist *cur = NULL; - struct host_handle_mapping_s *cur_h_mapping = NULL; - int num_io_servers = 0; - gossip_err("%d\n", fs->exp_anon_gid); - - if (config_s && config_s->host_id && fs) - { - cur = fs->data_handle_ranges; - while(cur) - { - cur_h_mapping = PINT_llist_head(cur); - if (!cur_h_mapping) - { - break; - } - assert(cur_h_mapping->alias_mapping); - assert(cur_h_mapping->alias_mapping->host_alias); - assert(cur_h_mapping->handle_range); - - num_io_servers++; - - cur = PINT_llist_next(cur); - } - } - - if (config_s->econumnodes > num_io_servers) - { - gossip_err("Turning off energy saving mode\n"); - config_s->econumnodes = 0; - config_s->energysaving = 0; - } - - return ret; -} - /* returns 1 if the specified configuration object is valid (i.e. contains values that make sense); 0 otherwise diff --git a/src/common/misc/server-config.h b/src/common/misc/server-config.h index c79df27..db23a3f 100644 --- a/src/common/misc/server-config.h +++ b/src/common/misc/server-config.h @@ -284,10 +284,6 @@ char *PINT_config_get_merged_handle_range_str( struct server_configuration_s *config_s, struct filesystem_configuration_s *fs); -char *assign_io_servers( - struct server_configuration_s *config_s, - struct filesystem_configuration_s *fs); - int PINT_config_is_valid_configuration( struct server_configuration_s *config_s); diff --git a/src/proto/pvfs2-req-proto.h b/src/proto/pvfs2-req-proto.h index 714f6fb..bafd938 100644 --- a/src/proto/pvfs2-req-proto.h +++ b/src/proto/pvfs2-req-proto.h @@ -175,7 +175,7 @@ struct PVFS_servreq_create { PVFS_fs_id fs_id; PVFS_object_attr attr; - + int32_t num_energy_nodes; int32_t num_dfiles_req; /* NOTE: leave layout as final field so that we can deal with encoding * errors */ @@ -184,7 +184,7 @@ struct PVFS_servreq_create endecode_fields_5_struct( PVFS_servreq_create, PVFS_fs_id, fs_id, - skip4,, + int32_t, num_energy_nodes, PVFS_object_attr, attr, int32_t, num_dfiles_req, PVFS_sys_layout, layout); @@ -197,6 +197,7 @@ endecode_fields_5_struct( __fsid, \ __attr, \ __num_dfiles_req, \ + __num_energy_nodes, \ __layout, \ __hints) \ do { \ @@ -207,6 +208,7 @@ do { \ (__req).hints = (__hints); \ (__req).u.create.fs_id = (__fsid); \ (__req).u.create.num_dfiles_req = (__num_dfiles_req); \ + (__req).u.create.num_energy_nodes = (__num_energy_nodes); \ (__attr).objtype = PVFS_TYPE_METAFILE; \ mask = (__attr).mask; \ (__attr).mask = PVFS_ATTR_COMMON_ALL; \ diff --git a/src/server/create.sm b/src/server/create.sm index 07a7428..9bfa124 100644 --- a/src/server/create.sm +++ b/src/server/create.sm @@ -305,6 +305,8 @@ static int check_stuffed( s_op->req->u.create.fs_id, s_op->req->u.create.attr.u.meta.dist, s_op->req->u.create.num_dfiles_req, + s_op->req->credentials.uid, + s_op->req->u.create.num_energy_nodes, &s_op->req->u.create.layout, &s_op->u.create.io_servers, &s_op->u.create.num_io_servers); diff --git a/src/server/pvfs2-server.c b/src/server/pvfs2-server.c index 60a427e..c1a3244 100644 --- a/src/server/pvfs2-server.c +++ b/src/server/pvfs2-server.c @@ -905,11 +905,6 @@ static int server_initialize_subsystems( PINT_config_get_merged_handle_range_str( &server_config, cur_fs); - if(server_config.energysaving) - { - assign_io_servers(&server_config, cur_fs); - } - /* * error out if we're not configured to house either a meta or * data handle range at all.