nfs-ganesha 1.4
|
00001 00012 #include "fsal.h" 00013 00014 #if HPSS_MAJOR_VERSION >= 6 00015 #include <hpss_mech.h> 00016 #include <hpss_String.h> 00017 #endif 00018 00019 /* defined the set of attributes supported with HPSS */ 00020 #define HPSS_SUPPORTED_ATTRIBUTES ( \ 00021 FSAL_ATTR_SUPPATTR | FSAL_ATTR_TYPE | FSAL_ATTR_SIZE | \ 00022 FSAL_ATTR_FSID | FSAL_ATTR_FILEID | \ 00023 FSAL_ATTR_MODE | FSAL_ATTR_NUMLINKS | FSAL_ATTR_OWNER | \ 00024 FSAL_ATTR_GROUP | FSAL_ATTR_ATIME | FSAL_ATTR_CREATION | \ 00025 FSAL_ATTR_CTIME | FSAL_ATTR_MTIME | FSAL_ATTR_SPACEUSED | \ 00026 FSAL_ATTR_MOUNTFILEID | FSAL_ATTR_CHGTIME ) 00027 00028 /* the following variables must not be defined in fsal_internal.c */ 00029 #ifndef FSAL_INTERNAL_C 00030 00031 /* static filesystem info. 00032 * read access only. 00033 */ 00034 extern fsal_staticfsinfo_t global_fs_info; 00035 00036 extern fsal_uint_t CredentialLifetime; 00037 00038 extern fsal_uint_t ReturnInconsistentDirent; 00039 00040 00041 #endif 00042 00046 fsal_status_t fsal_internal_init_global(fsal_init_info_t * fsal_info, 00047 fs_common_initinfo_t * fs_common_info); 00048 00052 void fsal_increment_nbcall(int function_index, fsal_status_t status); 00053 00057 void fsal_internal_getstats(fsal_statistics_t * output_stats); 00058 00062 void fsal_internal_SetCredentialLifetime(fsal_uint_t lifetime_in); 00063 00067 void fsal_internal_SetReturnInconsistentDirent(fsal_uint_t bool_in); 00068 00072 void TakeTokenFSCall(); 00073 void ReleaseTokenFSCall(); 00074 00082 fsal_boolean_t fsal_do_log(fsal_status_t status); 00083 00084 /* All the call to FSAL to be wrapped */ 00085 fsal_status_t HPSSFSAL_access(hpssfsal_handle_t * p_object_handle, /* IN */ 00086 hpssfsal_op_context_t * p_context, /* IN */ 00087 fsal_accessflags_t access_type, /* IN */ 00088 fsal_attrib_list_t * p_object_attributes /* [ IN/OUT ] */ ); 00089 00090 fsal_status_t HPSSFSAL_getattrs(hpssfsal_handle_t * p_filehandle, /* IN */ 00091 hpssfsal_op_context_t * p_context, /* IN */ 00092 fsal_attrib_list_t * p_object_attributes /* IN/OUT */ ); 00093 00094 fsal_status_t HPSSFSAL_setattrs(hpssfsal_handle_t * p_filehandle, /* IN */ 00095 hpssfsal_op_context_t * p_context, /* IN */ 00096 fsal_attrib_list_t * p_attrib_set, /* IN */ 00097 fsal_attrib_list_t * 00098 p_object_attributes /* [ IN/OUT ] */ ); 00099 00100 fsal_status_t HPSSFSAL_BuildExportContext(hpssfsal_export_context_t * p_export_context, /* OUT */ 00101 fsal_path_t * p_export_path, /* IN */ 00102 char *fs_specific_options /* IN */ ); 00103 00104 fsal_status_t HPSSFSAL_InitClientContext(hpssfsal_op_context_t * p_thr_context); 00105 00106 fsal_status_t HPSSFSAL_CleanUpExportContext(hpssfsal_export_context_t * p_export_context) ; 00107 00108 fsal_status_t HPSSFSAL_GetClientContext(hpssfsal_op_context_t * p_thr_context, /* IN/OUT */ 00109 hpssfsal_export_context_t * p_export_context, /* IN */ 00110 fsal_uid_t uid, /* IN */ 00111 fsal_gid_t gid, /* IN */ 00112 fsal_gid_t * alt_groups, /* IN */ 00113 fsal_count_t nb_alt_groups /* IN */ ); 00114 00115 fsal_status_t HPSSFSAL_create(hpssfsal_handle_t * p_parent_directory_handle, /* IN */ 00116 fsal_name_t * p_filename, /* IN */ 00117 hpssfsal_op_context_t * p_context, /* IN */ 00118 fsal_accessmode_t accessmode, /* IN */ 00119 hpssfsal_handle_t * p_object_handle, /* OUT */ 00120 fsal_attrib_list_t * p_object_attributes /* [ IN/OUT ] */ ); 00121 00122 fsal_status_t HPSSFSAL_mkdir(hpssfsal_handle_t * p_parent_directory_handle, /* IN */ 00123 fsal_name_t * p_dirname, /* IN */ 00124 hpssfsal_op_context_t * p_context, /* IN */ 00125 fsal_accessmode_t accessmode, /* IN */ 00126 hpssfsal_handle_t * p_object_handle, /* OUT */ 00127 fsal_attrib_list_t * p_object_attributes /* [ IN/OUT ] */ ); 00128 00129 fsal_status_t HPSSFSAL_link(hpssfsal_handle_t * p_target_handle, /* IN */ 00130 hpssfsal_handle_t * p_dir_handle, /* IN */ 00131 fsal_name_t * p_link_name, /* IN */ 00132 hpssfsal_op_context_t * p_context, /* IN */ 00133 fsal_attrib_list_t * p_attributes /* [ IN/OUT ] */ ); 00134 00135 fsal_status_t HPSSFSAL_mknode(hpssfsal_handle_t * parentdir_handle, /* IN */ 00136 fsal_name_t * p_node_name, /* IN */ 00137 hpssfsal_op_context_t * p_context, /* IN */ 00138 fsal_accessmode_t accessmode, /* IN */ 00139 fsal_nodetype_t nodetype, /* IN */ 00140 fsal_dev_t * dev, /* IN */ 00141 hpssfsal_handle_t * p_object_handle, /* OUT (handle to the created node) */ 00142 fsal_attrib_list_t * node_attributes /* [ IN/OUT ] */ ); 00143 00144 fsal_status_t HPSSFSAL_opendir(hpssfsal_handle_t * p_dir_handle, /* IN */ 00145 hpssfsal_op_context_t * p_context, /* IN */ 00146 hpssfsal_dir_t * p_dir_descriptor, /* OUT */ 00147 fsal_attrib_list_t * p_dir_attributes /* [ IN/OUT ] */ ); 00148 00149 fsal_status_t HPSSFSAL_readdir(hpssfsal_dir_t * p_dir_descriptor, /* IN */ 00150 hpssfsal_cookie_t start_position, /* IN */ 00151 fsal_attrib_mask_t get_attr_mask, /* IN */ 00152 fsal_mdsize_t buffersize, /* IN */ 00153 fsal_dirent_t * p_pdirent, /* OUT */ 00154 hpssfsal_cookie_t * p_end_position, /* OUT */ 00155 fsal_count_t * p_nb_entries, /* OUT */ 00156 fsal_boolean_t * p_end_of_dir /* OUT */ ); 00157 00158 fsal_status_t HPSSFSAL_closedir(hpssfsal_dir_t * p_dir_descriptor /* IN */ ); 00159 00160 fsal_status_t HPSSFSAL_open_by_name(hpssfsal_handle_t * dirhandle, /* IN */ 00161 fsal_name_t * filename, /* IN */ 00162 hpssfsal_op_context_t * p_context, /* IN */ 00163 fsal_openflags_t openflags, /* IN */ 00164 hpssfsal_file_t * file_descriptor, /* OUT */ 00165 fsal_attrib_list_t * 00166 file_attributes /* [ IN/OUT ] */ ); 00167 00168 fsal_status_t HPSSFSAL_open(hpssfsal_handle_t * p_filehandle, /* IN */ 00169 hpssfsal_op_context_t * p_context, /* IN */ 00170 fsal_openflags_t openflags, /* IN */ 00171 hpssfsal_file_t * p_file_descriptor, /* OUT */ 00172 fsal_attrib_list_t * p_file_attributes /* [ IN/OUT ] */ ); 00173 00174 fsal_status_t HPSSFSAL_read(hpssfsal_file_t * p_file_descriptor, /* IN */ 00175 fsal_seek_t * p_seek_descriptor, /* [IN] */ 00176 fsal_size_t buffer_size, /* IN */ 00177 caddr_t buffer, /* OUT */ 00178 fsal_size_t * p_read_amount, /* OUT */ 00179 fsal_boolean_t * p_end_of_file /* OUT */ ); 00180 00181 fsal_status_t HPSSFSAL_write(hpssfsal_file_t * p_file_descriptor, /* IN */ 00182 fsal_op_context_t * p_context, /* IN */ 00183 fsal_seek_t * p_seek_descriptor, /* IN */ 00184 fsal_size_t buffer_size, /* IN */ 00185 caddr_t buffer, /* IN */ 00186 fsal_size_t * p_write_amount /* OUT */ ); 00187 00188 fsal_status_t HPSSFSAL_close(hpssfsal_file_t * p_file_descriptor /* IN */ ); 00189 00190 fsal_status_t HPSSFSAL_open_by_fileid(hpssfsal_handle_t * filehandle, /* IN */ 00191 fsal_u64_t fileid, /* IN */ 00192 hpssfsal_op_context_t * p_context, /* IN */ 00193 fsal_openflags_t openflags, /* IN */ 00194 hpssfsal_file_t * file_descriptor, /* OUT */ 00195 fsal_attrib_list_t * 00196 file_attributes /* [ IN/OUT ] */ ); 00197 00198 fsal_status_t HPSSFSAL_close_by_fileid(hpssfsal_file_t * file_descriptor /* IN */ , 00199 fsal_u64_t fileid); 00200 00201 fsal_status_t HPSSFSAL_dynamic_fsinfo(hpssfsal_handle_t * p_filehandle, /* IN */ 00202 hpssfsal_op_context_t * p_context, /* IN */ 00203 fsal_dynamicfsinfo_t * p_dynamicinfo /* OUT */ ); 00204 00205 fsal_status_t HPSSFSAL_Init(fsal_parameter_t * init_info /* IN */ ); 00206 00207 fsal_status_t HPSSFSAL_terminate(); 00208 00209 fsal_status_t HPSSFSAL_test_access(hpssfsal_op_context_t * p_context, /* IN */ 00210 fsal_accessflags_t access_type, /* IN */ 00211 fsal_attrib_list_t * p_object_attributes /* IN */ ); 00212 00213 fsal_status_t HPSSFSAL_setattr_access(hpssfsal_op_context_t * p_context, /* IN */ 00214 fsal_attrib_list_t * candidate_attributes, /* IN */ 00215 fsal_attrib_list_t * object_attributes /* IN */ ); 00216 00217 fsal_status_t HPSSFSAL_rename_access(hpssfsal_op_context_t * pcontext, /* IN */ 00218 fsal_attrib_list_t * pattrsrc, /* IN */ 00219 fsal_attrib_list_t * pattrdest) /* IN */ ; 00220 00221 fsal_status_t HPSSFSAL_create_access(hpssfsal_op_context_t * pcontext, /* IN */ 00222 fsal_attrib_list_t * pattr) /* IN */ ; 00223 00224 fsal_status_t HPSSFSAL_unlink_access(hpssfsal_op_context_t * pcontext, /* IN */ 00225 fsal_attrib_list_t * pattr) /* IN */ ; 00226 00227 fsal_status_t HPSSFSAL_link_access(hpssfsal_op_context_t * pcontext, /* IN */ 00228 fsal_attrib_list_t * pattr) /* IN */ ; 00229 00230 fsal_status_t HPSSFSAL_merge_attrs(fsal_attrib_list_t * pinit_attr, 00231 fsal_attrib_list_t * pnew_attr, 00232 fsal_attrib_list_t * presult_attr); 00233 00234 fsal_status_t HPSSFSAL_lookup(hpssfsal_handle_t * p_parent_directory_handle, /* IN */ 00235 fsal_name_t * p_filename, /* IN */ 00236 hpssfsal_op_context_t * p_context, /* IN */ 00237 hpssfsal_handle_t * p_object_handle, /* OUT */ 00238 fsal_attrib_list_t * p_object_attributes /* [ IN/OUT ] */ ); 00239 00240 fsal_status_t HPSSFSAL_lookupPath(fsal_path_t * p_path, /* IN */ 00241 hpssfsal_op_context_t * p_context, /* IN */ 00242 hpssfsal_handle_t * object_handle, /* OUT */ 00243 fsal_attrib_list_t * 00244 p_object_attributes /* [ IN/OUT ] */ ); 00245 00246 fsal_status_t HPSSFSAL_lookupJunction(hpssfsal_handle_t * p_junction_handle, /* IN */ 00247 hpssfsal_op_context_t * p_context, /* IN */ 00248 hpssfsal_handle_t * p_fsoot_handle, /* OUT */ 00249 fsal_attrib_list_t * 00250 p_fsroot_attributes /* [ IN/OUT ] */ ); 00251 00252 fsal_status_t HPSSFSAL_CleanObjectResources(hpssfsal_handle_t * in_fsal_handle); 00253 00254 fsal_status_t HPSSFSAL_set_quota(fsal_path_t * pfsal_path, /* IN */ 00255 int quota_type, /* IN */ 00256 fsal_uid_t fsal_uid, /* IN */ 00257 fsal_quota_t * pquota, /* IN */ 00258 fsal_quota_t * presquota); /* OUT */ 00259 00260 fsal_status_t HPSSFSAL_get_quota(fsal_path_t * pfsal_path, /* IN */ 00261 int quota_type, /* IN */ 00262 fsal_uid_t fsal_uid, /* IN */ 00263 fsal_quota_t * pquota); /* OUT */ 00264 00265 fsal_status_t HPSSFSAL_check_quota( char * path, /* IN */ 00266 fsal_quota_type_t quota_type, 00267 fsal_uid_t fsal_uid) ; /* IN */ 00268 00269 fsal_status_t HPSSFSAL_rcp(hpssfsal_handle_t * filehandle, /* IN */ 00270 hpssfsal_op_context_t * p_context, /* IN */ 00271 fsal_path_t * p_local_path, /* IN */ 00272 fsal_rcpflag_t transfer_opt /* IN */ ); 00273 00274 fsal_status_t HPSSFSAL_rename(hpssfsal_handle_t * p_old_parentdir_handle, /* IN */ 00275 fsal_name_t * p_old_name, /* IN */ 00276 hpssfsal_handle_t * p_new_parentdir_handle, /* IN */ 00277 fsal_name_t * p_new_name, /* IN */ 00278 hpssfsal_op_context_t * p_context, /* IN */ 00279 fsal_attrib_list_t * p_src_dir_attributes, /* [ IN/OUT ] */ 00280 fsal_attrib_list_t * 00281 p_tgt_dir_attributes /* [ IN/OUT ] */ ); 00282 00283 void HPSSFSAL_get_stats(fsal_statistics_t * stats, /* OUT */ 00284 fsal_boolean_t reset /* IN */ ); 00285 00286 fsal_status_t HPSSFSAL_readlink(hpssfsal_handle_t * p_linkhandle, /* IN */ 00287 hpssfsal_op_context_t * p_context, /* IN */ 00288 fsal_path_t * p_link_content, /* OUT */ 00289 fsal_attrib_list_t * p_link_attributes /* [ IN/OUT ] */ ); 00290 00291 fsal_status_t HPSSFSAL_symlink(hpssfsal_handle_t * p_parent_directory_handle, /* IN */ 00292 fsal_name_t * p_linkname, /* IN */ 00293 fsal_path_t * p_linkcontent, /* IN */ 00294 hpssfsal_op_context_t * p_context, /* IN */ 00295 fsal_accessmode_t accessmode, /* IN (ignored) */ 00296 hpssfsal_handle_t * p_link_handle, /* OUT */ 00297 fsal_attrib_list_t * p_link_attributes /* [ IN/OUT ] */ ); 00298 00299 int HPSSFSAL_handlecmp(hpssfsal_handle_t * handle1, hpssfsal_handle_t * handle2, 00300 fsal_status_t * status); 00301 00302 unsigned int HPSSFSAL_Handle_to_HashIndex(hpssfsal_handle_t * p_handle, 00303 unsigned int cookie, 00304 unsigned int alphabet_len, 00305 unsigned int index_size); 00306 00307 unsigned int HPSSFSAL_Handle_to_RBTIndex(hpssfsal_handle_t * p_handle, 00308 unsigned int cookie); 00309 00310 fsal_status_t HPSSFSAL_DigestHandle(hpssfsal_export_context_t * p_expcontext, /* IN */ 00311 fsal_digesttype_t output_type, /* IN */ 00312 hpssfsal_handle_t * p_in_fsal_handle, /* IN */ 00313 caddr_t out_buff /* OUT */ ); 00314 00315 fsal_status_t HPSSFSAL_ExpandHandle(hpssfsal_export_context_t * p_expcontext, /* IN */ 00316 fsal_digesttype_t in_type, /* IN */ 00317 caddr_t in_buff, /* IN */ 00318 hpssfsal_handle_t * p_out_fsal_handle /* OUT */ ); 00319 00320 fsal_status_t HPSSFSAL_SetDefault_FSAL_parameter(fsal_parameter_t * out_parameter); 00321 00322 fsal_status_t HPSSFSAL_SetDefault_FS_common_parameter(fsal_parameter_t * out_parameter); 00323 00324 fsal_status_t HPSSFSAL_SetDefault_FS_specific_parameter(fsal_parameter_t * out_parameter); 00325 00326 fsal_status_t HPSSFSAL_load_FSAL_parameter_from_conf(config_file_t in_config, 00327 fsal_parameter_t * out_parameter); 00328 00329 fsal_status_t HPSSFSAL_load_FS_common_parameter_from_conf(config_file_t in_config, 00330 fsal_parameter_t * 00331 out_parameter); 00332 00333 fsal_status_t HPSSFSAL_load_FS_specific_parameter_from_conf(config_file_t in_config, 00334 fsal_parameter_t * 00335 out_parameter); 00336 00337 fsal_status_t HPSSFSAL_truncate(hpssfsal_handle_t * p_filehandle, /* IN */ 00338 hpssfsal_op_context_t * p_context, /* IN */ 00339 fsal_size_t length, /* IN */ 00340 hpssfsal_file_t * file_descriptor, /* Unused in this FSAL */ 00341 fsal_attrib_list_t * 00342 p_object_attributes /* [ IN/OUT ] */ ); 00343 00344 fsal_status_t HPSSFSAL_unlink(hpssfsal_handle_t * p_parent_directory_handle, /* IN */ 00345 fsal_name_t * p_object_name, /* IN */ 00346 hpssfsal_op_context_t * p_context, /* IN */ 00347 fsal_attrib_list_t * 00348 p_parent_directory_attributes /* [IN/OUT ] */ ); 00349 00350 char *HPSSFSAL_GetFSName(); 00351 00352 fsal_status_t HPSSFSAL_GetXAttrAttrs(hpssfsal_handle_t * p_objecthandle, /* IN */ 00353 hpssfsal_op_context_t * p_context, /* IN */ 00354 unsigned int xattr_id, /* IN */ 00355 fsal_attrib_list_t * p_attrs); 00356 00357 fsal_status_t HPSSFSAL_ListXAttrs(hpssfsal_handle_t * p_objecthandle, /* IN */ 00358 unsigned int cookie, /* IN */ 00359 hpssfsal_op_context_t * p_context, /* IN */ 00360 fsal_xattrent_t * xattrs_tab, /* IN/OUT */ 00361 unsigned int xattrs_tabsize, /* IN */ 00362 unsigned int *p_nb_returned, /* OUT */ 00363 int *end_of_list /* OUT */ ); 00364 00365 fsal_status_t HPSSFSAL_GetXAttrValueById(hpssfsal_handle_t * p_objecthandle, /* IN */ 00366 unsigned int xattr_id, /* IN */ 00367 hpssfsal_op_context_t * p_context, /* IN */ 00368 caddr_t buffer_addr, /* IN/OUT */ 00369 size_t buffer_size, /* IN */ 00370 size_t * p_output_size /* OUT */ ); 00371 00372 fsal_status_t HPSSFSAL_GetXAttrIdByName(hpssfsal_handle_t * p_objecthandle, /* IN */ 00373 const fsal_name_t * xattr_name, /* IN */ 00374 hpssfsal_op_context_t * p_context, /* IN */ 00375 unsigned int *pxattr_id /* OUT */ ); 00376 00377 fsal_status_t HPSSFSAL_GetXAttrValueByName(hpssfsal_handle_t * p_objecthandle, /* IN */ 00378 const fsal_name_t * xattr_name, /* IN */ 00379 hpssfsal_op_context_t * p_context, /* IN */ 00380 caddr_t buffer_addr, /* IN/OUT */ 00381 size_t buffer_size, /* IN */ 00382 size_t * p_output_size /* OUT */ ); 00383 00384 fsal_status_t HPSSFSAL_SetXAttrValue(hpssfsal_handle_t * p_objecthandle, /* IN */ 00385 const fsal_name_t * xattr_name, /* IN */ 00386 hpssfsal_op_context_t * p_context, /* IN */ 00387 caddr_t buffer_addr, /* IN */ 00388 size_t buffer_size, /* IN */ 00389 int create /* IN */ ); 00390 00391 fsal_status_t HPSSFSAL_SetXAttrValueById(hpssfsal_handle_t * p_objecthandle, /* IN */ 00392 unsigned int xattr_id, /* IN */ 00393 hpssfsal_op_context_t * p_context, /* IN */ 00394 caddr_t buffer_addr, /* IN */ 00395 size_t buffer_size /* IN */ ); 00396 00397 fsal_status_t HPSSFSAL_RemoveXAttrById(hpssfsal_handle_t * p_objecthandle, /* IN */ 00398 hpssfsal_op_context_t * p_context, /* IN */ 00399 unsigned int xattr_id) /* IN */ ; 00400 00401 fsal_status_t HPSSFSAL_RemoveXAttrByName(hpssfsal_handle_t * p_objecthandle, /* IN */ 00402 hpssfsal_op_context_t * p_context, /* IN */ 00403 const fsal_name_t * xattr_name) /* IN */ ; 00404 00405 int HPSSFSAL_GetXattrOffsetSetable( void ) ; 00406 00407 unsigned int HPSSFSAL_GetFileno(fsal_file_t * pfile); 00408 00409 fsal_status_t HPSSFSAL_getextattrs(fsal_handle_t * p_filehandle, /* IN */ 00410 fsal_op_context_t * p_context, /* IN */ 00411 fsal_extattrib_list_t * p_object_attributes /* OUT */) ; 00412 00413 fsal_status_t HPSSFSAL_commit( fsal_file_t * p_file_descriptor, 00414 fsal_off_t offset, 00415 fsal_size_t size ) ; 00416 00417