nfs-ganesha 1.4
|
00001 /* 00002 * 00003 * 00004 * Copyright CEA/DAM/DIF (2008) 00005 * contributeur : Philippe DENIEL philippe.deniel@cea.fr 00006 * Thomas LEIBOVICI thomas.leibovici@cea.fr 00007 * 00008 * 00009 * This program is free software; you can redistribute it and/or 00010 * modify it under the terms of the GNU Lesser General Public 00011 * License as published by the Free Software Foundation; either 00012 * version 3 of the License, or (at your option) any later version. 00013 * 00014 * This program is distributed in the hope that it will be useful, 00015 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00017 * Lesser General Public License for more details. 00018 * 00019 * You should have received a copy of the GNU Lesser General Public 00020 * License along with this library; if not, write to the Free Software 00021 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00022 * 00023 * --------------------------------------- 00024 */ 00025 00036 #include "config.h" 00037 00038 /* fsal_types contains constants and type definitions for FSAL */ 00039 #include "fsal_types.h" 00040 #include "fsal.h" 00041 #include "mfsl_types.h" 00042 #include "mfsl.h" 00043 #include "common_utils.h" 00044 00045 #ifndef _USE_SWIG 00046 /****************************************************** 00047 * Attribute mask management. 00048 ******************************************************/ 00049 00050 static struct timeval mfsl_timer_diff( struct timeval * time_to, struct timeval * time_from ) 00051 { 00052 00053 struct timeval result; 00054 00055 if(time_to->tv_usec < time_from->tv_usec) 00056 { 00057 result.tv_sec = time_to->tv_sec - time_from->tv_sec - 1; 00058 result.tv_usec = 1000000 + time_to->tv_usec - time_from->tv_usec; 00059 } 00060 else 00061 { 00062 result.tv_sec = time_to->tv_sec - time_from->tv_sec; 00063 result.tv_usec = time_to->tv_usec - time_from->tv_usec; 00064 } 00065 00066 return result; 00067 } 00068 00076 fsal_status_t MFSL_SetDefault_parameter(mfsl_parameter_t * out_parameter) 00077 { 00078 fsal_status_t fsal_status; 00079 00080 fsal_status.major = ERR_FSAL_NO_ERROR; 00081 fsal_status.minor = 0; 00082 00083 return fsal_status; 00084 } /* MFSL_SetDefault_parameter */ 00085 00104 fsal_status_t MFSL_load_parameter_from_conf(config_file_t in_config, 00105 mfsl_parameter_t * out_parameter) 00106 { 00107 fsal_status_t fsal_status; 00108 00109 fsal_status.major = ERR_FSAL_NO_ERROR; 00110 fsal_status.minor = 0; 00111 00112 return fsal_status; 00113 } 00114 00119 fsal_status_t MFSL_Init(mfsl_parameter_t * init_info /* IN */ 00120 ) 00121 { 00122 fsal_status_t fsal_status; 00123 00124 fsal_status.major = ERR_FSAL_NO_ERROR; 00125 fsal_status.minor = 0; 00126 00127 return fsal_status; 00128 } 00129 00130 fsal_status_t MFSL_GetContext(mfsl_context_t * pcontext, 00131 fsal_op_context_t * pfsal_context) 00132 { 00133 fsal_status_t fsal_status; 00134 00135 fsal_status.major = ERR_FSAL_NO_ERROR; 00136 fsal_status.minor = 0; 00137 00138 return fsal_status; 00139 } 00140 00141 fsal_status_t MFSL_RefreshContext(mfsl_context_t * pcontext, 00142 fsal_op_context_t * pfsal_context) 00143 { 00144 fsal_status_t fsal_status; 00145 00146 fsal_status.major = ERR_FSAL_NO_ERROR; 00147 fsal_status.minor = 0; 00148 00149 return fsal_status; 00150 } 00151 00152 #endif /* ! _USE_SWIG */ 00153 00154 /****************************************************** 00155 * Common Filesystem calls. 00156 ******************************************************/ 00157 00158 fsal_status_t MFSL_lookup(mfsl_object_t * parent_directory_handle, /* IN */ 00159 fsal_name_t * p_filename, /* IN */ 00160 fsal_op_context_t * p_context, /* IN */ 00161 mfsl_context_t * p_mfsl_context, /* IN */ 00162 mfsl_object_t * object_handle, /* OUT */ 00163 fsal_attrib_list_t * object_attributes, /* [ IN/OUT ] */ 00164 void * pextra 00165 ) 00166 { 00167 struct timeval start, stop, delta ; 00168 fsal_status_t fsal_status = { ERR_FSAL_NO_ERROR, 0 } ; 00169 00170 gettimeofday( &start, 0 ) ; 00171 fsal_status = FSAL_lookup(&parent_directory_handle->handle, 00172 p_filename, p_context, &object_handle->handle, object_attributes); 00173 gettimeofday( &stop, 0 ) ; 00174 delta = mfsl_timer_diff( &stop, &start ) ; 00175 LogFullDebug( COMPONENT_MFSL, "%s: duration=%ld.%06ld", __FUNCTION__, delta.tv_sec, delta.tv_usec ) ; 00176 return fsal_status ; 00177 } /* MFSL_lookup */ 00178 00179 fsal_status_t MFSL_lookupPath(fsal_path_t * p_path, /* IN */ 00180 fsal_op_context_t * p_context, /* IN */ 00181 mfsl_context_t * p_mfsl_context, /* IN */ 00182 mfsl_object_t * object_handle, /* OUT */ 00183 fsal_attrib_list_t * object_attributes /* [ IN/OUT ] */ 00184 ) 00185 { 00186 struct timeval start, stop, delta ; 00187 fsal_status_t fsal_status = { ERR_FSAL_NO_ERROR, 0 } ; 00188 00189 gettimeofday( &start, 0 ) ; 00190 fsal_status = FSAL_lookupPath(p_path, p_context, &object_handle->handle, object_attributes); 00191 gettimeofday( &stop, 0 ) ; 00192 delta = mfsl_timer_diff( &stop, &start ) ; 00193 LogFullDebug( COMPONENT_MFSL, "%s: duration=%ld.%06ld", __FUNCTION__, delta.tv_sec, delta.tv_usec ) ; 00194 return fsal_status ; 00195 } /* MFSL_lookupPath */ 00196 00197 fsal_status_t MFSL_lookupJunction(mfsl_object_t * p_junction_handle, /* IN */ 00198 fsal_op_context_t * p_context, /* IN */ 00199 mfsl_context_t * p_mfsl_context, /* IN */ 00200 mfsl_object_t * p_fsoot_handle, /* OUT */ 00201 fsal_attrib_list_t * p_fsroot_attributes /* [ IN/OUT ] */ 00202 ) 00203 { 00204 struct timeval start, stop, delta ; 00205 fsal_status_t fsal_status = { ERR_FSAL_NO_ERROR, 0 } ; 00206 00207 gettimeofday( &start, 0 ) ; 00208 fsal_status = FSAL_lookupJunction(&p_junction_handle->handle, 00209 p_context, &p_fsoot_handle->handle, p_fsroot_attributes); 00210 gettimeofday( &stop, 0 ) ; 00211 delta = mfsl_timer_diff( &stop, &start ) ; 00212 LogFullDebug( COMPONENT_MFSL, "%s: duration=%ld.%06ld", __FUNCTION__, delta.tv_sec, delta.tv_usec ) ; 00213 return fsal_status ; 00214 } /* MFSL_lookupJunction */ 00215 00216 fsal_status_t MFSL_access(mfsl_object_t * object_handle, /* IN */ 00217 fsal_op_context_t * p_context, /* IN */ 00218 mfsl_context_t * p_mfsl_context, /* IN */ 00219 fsal_accessflags_t access_type, /* IN */ 00220 fsal_attrib_list_t * object_attributes, /* [ IN/OUT ] */ 00221 void * pextra 00222 ) 00223 { 00224 struct timeval start, stop, delta ; 00225 fsal_status_t fsal_status = { ERR_FSAL_NO_ERROR, 0 } ; 00226 00227 gettimeofday( &start, 0 ) ; 00228 fsal_status = FSAL_access(&object_handle->handle, p_context, access_type, object_attributes); 00229 gettimeofday( &stop, 0 ) ; 00230 delta = mfsl_timer_diff( &stop, &start ) ; 00231 LogFullDebug( COMPONENT_MFSL, "%s: duration=%ld.%06ld", __FUNCTION__, delta.tv_sec, delta.tv_usec ) ; 00232 return fsal_status ; 00233 } /* MFSL_access */ 00234 00235 fsal_status_t MFSL_create(mfsl_object_t * parent_directory_handle, /* IN */ 00236 fsal_name_t * p_filename, /* IN */ 00237 fsal_op_context_t * p_context, /* IN */ 00238 mfsl_context_t * p_mfsl_context, /* IN */ 00239 fsal_accessmode_t accessmode, /* IN */ 00240 mfsl_object_t * object_handle, /* OUT */ 00241 fsal_attrib_list_t * object_attributes, /* [ IN/OUT ] */ 00242 fsal_attrib_list_t * parent_attributes, /* [ IN/OUT ] */ 00243 void * pextra 00244 ) 00245 { 00246 struct timeval start, stop, delta ; 00247 fsal_status_t fsal_status = { ERR_FSAL_NO_ERROR, 0 } ; 00248 00249 gettimeofday( &start, 0 ) ; 00250 fsal_status = FSAL_create(&parent_directory_handle->handle, 00251 p_filename, 00252 p_context, accessmode, &object_handle->handle, object_attributes); 00253 gettimeofday( &stop, 0 ) ; 00254 delta = mfsl_timer_diff( &stop, &start ) ; 00255 LogFullDebug( COMPONENT_MFSL, "%s: duration=%ld.%06ld", __FUNCTION__, delta.tv_sec, delta.tv_usec ) ; 00256 return fsal_status ; 00257 } /* MFSL_create */ 00258 00259 fsal_status_t MFSL_mkdir(mfsl_object_t * parent_directory_handle, /* IN */ 00260 fsal_name_t * p_dirname, /* IN */ 00261 fsal_op_context_t * p_context, /* IN */ 00262 mfsl_context_t * p_mfsl_context, /* IN */ 00263 fsal_accessmode_t accessmode, /* IN */ 00264 mfsl_object_t * object_handle, /* OUT */ 00265 fsal_attrib_list_t * object_attributes, /* [ IN/OUT ] */ 00266 fsal_attrib_list_t * parent_attributes, /* [ IN/OUT ] */ 00267 void * pextra 00268 ) 00269 { 00270 struct timeval start, stop, delta ; 00271 fsal_status_t fsal_status = { ERR_FSAL_NO_ERROR, 0 } ; 00272 00273 gettimeofday( &start, 0 ) ; 00274 fsal_status = FSAL_mkdir(&parent_directory_handle->handle, 00275 p_dirname, 00276 p_context, accessmode, &object_handle->handle, object_attributes); 00277 gettimeofday( &stop, 0 ) ; 00278 delta = mfsl_timer_diff( &stop, &start ) ; 00279 LogFullDebug( COMPONENT_MFSL, "%s: duration=%ld.%06ld", __FUNCTION__, delta.tv_sec, delta.tv_usec ) ; 00280 return fsal_status ; 00281 } /* MFSL_mkdir */ 00282 00283 fsal_status_t MFSL_truncate(mfsl_object_t * filehandle, /* IN */ 00284 fsal_op_context_t * p_context, /* IN */ 00285 mfsl_context_t * p_mfsl_context, /* IN */ 00286 fsal_size_t length, /* IN */ 00287 mfsl_file_t * file_descriptor, /* INOUT */ 00288 fsal_attrib_list_t * object_attributes, /* [ IN/OUT ] */ 00289 void * pextra 00290 ) 00291 { 00292 struct timeval start, stop, delta ; 00293 fsal_status_t fsal_status = { ERR_FSAL_NO_ERROR, 0 } ; 00294 00295 gettimeofday( &start, 0 ) ; 00296 fsal_status = FSAL_truncate(&filehandle->handle, 00297 p_context, length, &file_descriptor->fsal_file, object_attributes); 00298 gettimeofday( &stop, 0 ) ; 00299 delta = mfsl_timer_diff( &stop, &start ) ; 00300 LogFullDebug( COMPONENT_MFSL, "%s: duration=%ld.%06ld", __FUNCTION__, delta.tv_sec, delta.tv_usec ) ; 00301 return fsal_status ; 00302 } /* MFSL_truncate */ 00303 00304 fsal_status_t MFSL_getattrs(mfsl_object_t * filehandle, /* IN */ 00305 fsal_op_context_t * p_context, /* IN */ 00306 mfsl_context_t * p_mfsl_context, /* IN */ 00307 fsal_attrib_list_t * object_attributes, /* IN/OUT */ 00308 void * pextra 00309 ) 00310 { 00311 struct timeval start, stop, delta ; 00312 fsal_status_t fsal_status = { ERR_FSAL_NO_ERROR, 0 } ; 00313 00314 gettimeofday( &start, 0 ) ; 00315 fsal_status = FSAL_getattrs(&filehandle->handle, p_context, object_attributes); 00316 gettimeofday( &stop, 0 ) ; 00317 delta = mfsl_timer_diff( &stop, &start ) ; 00318 LogFullDebug( COMPONENT_MFSL, "%s: duration=%ld.%06ld", __FUNCTION__, delta.tv_sec, delta.tv_usec ) ; 00319 return fsal_status ; 00320 } /* MFSL_getattrs */ 00321 00322 fsal_status_t MFSL_setattrs(mfsl_object_t * filehandle, /* IN */ 00323 fsal_op_context_t * p_context, /* IN */ 00324 mfsl_context_t * p_mfsl_context, /* IN */ 00325 fsal_attrib_list_t * attrib_set, /* IN */ 00326 fsal_attrib_list_t * object_attributes, /* [ IN/OUT ] */ 00327 void * pextra 00328 ) 00329 { 00330 struct timeval start, stop, delta ; 00331 fsal_status_t fsal_status = { ERR_FSAL_NO_ERROR, 0 } ; 00332 00333 gettimeofday( &start, 0 ) ; 00334 fsal_status = FSAL_setattrs(&filehandle->handle, p_context, attrib_set, object_attributes); 00335 gettimeofday( &stop, 0 ) ; 00336 delta = mfsl_timer_diff( &stop, &start ) ; 00337 LogFullDebug( COMPONENT_MFSL, "%s: duration=%ld.%06ld", __FUNCTION__, delta.tv_sec, delta.tv_usec ) ; 00338 return fsal_status ; 00339 } /* MFSL_setattrs */ 00340 00341 fsal_status_t MFSL_link(mfsl_object_t * target_handle, /* IN */ 00342 mfsl_object_t * dir_handle, /* IN */ 00343 fsal_name_t * p_link_name, /* IN */ 00344 fsal_op_context_t * p_context, /* IN */ 00345 mfsl_context_t * p_mfsl_context, /* IN */ 00346 fsal_attrib_list_t * attributes, /* [ IN/OUT ] */ 00347 void * pextra ) 00348 { 00349 struct timeval start, stop, delta ; 00350 fsal_status_t fsal_status = { ERR_FSAL_NO_ERROR, 0 } ; 00351 00352 gettimeofday( &start, 0 ) ; 00353 fsal_status = FSAL_link(&target_handle->handle, 00354 &dir_handle->handle, p_link_name, p_context, attributes); 00355 gettimeofday( &stop, 0 ) ; 00356 delta = mfsl_timer_diff( &stop, &start ) ; 00357 LogFullDebug( COMPONENT_MFSL, "%s: duration=%ld.%06ld", __FUNCTION__, delta.tv_sec, delta.tv_usec ) ; 00358 return fsal_status ; 00359 } /* MFSL_link */ 00360 00361 fsal_status_t MFSL_opendir(mfsl_object_t * dir_handle, /* IN */ 00362 fsal_op_context_t * p_context, /* IN */ 00363 mfsl_context_t * p_mfsl_context, /* IN */ 00364 fsal_dir_t * dir_descriptor, /* OUT */ 00365 fsal_attrib_list_t * dir_attributes, /* [ IN/OUT ] */ 00366 void * pextra 00367 ) 00368 { 00369 struct timeval start, stop, delta ; 00370 fsal_status_t fsal_status = { ERR_FSAL_NO_ERROR, 0 } ; 00371 00372 gettimeofday( &start, 0 ) ; 00373 fsal_status = FSAL_opendir(&dir_handle->handle, p_context, dir_descriptor, dir_attributes); 00374 gettimeofday( &stop, 0 ) ; 00375 delta = mfsl_timer_diff( &stop, &start ) ; 00376 LogFullDebug( COMPONENT_MFSL, "%s: duration=%ld.%06ld", __FUNCTION__, delta.tv_sec, delta.tv_usec ) ; 00377 return fsal_status ; 00378 } /* MFSL_opendir */ 00379 00380 fsal_status_t MFSL_readdir(fsal_dir_t * dir_descriptor, /* IN */ 00381 fsal_cookie_t start_position, /* IN */ 00382 fsal_attrib_mask_t get_attr_mask, /* IN */ 00383 fsal_mdsize_t buffersize, /* IN */ 00384 fsal_dirent_t * pdirent, /* OUT */ 00385 fsal_cookie_t * end_position, /* OUT */ 00386 fsal_count_t * nb_entries, /* OUT */ 00387 fsal_boolean_t * end_of_dir, /* OUT */ 00388 mfsl_context_t * p_mfsl_context, /* IN */ 00389 void * pextra 00390 ) 00391 { 00392 struct timeval start, stop, delta ; 00393 fsal_status_t fsal_status = { ERR_FSAL_NO_ERROR, 0 } ; 00394 00395 gettimeofday( &start, 0 ) ; 00396 fsal_status = FSAL_readdir(dir_descriptor, 00397 start_position, 00398 get_attr_mask, 00399 buffersize, pdirent, end_position, nb_entries, end_of_dir); 00400 gettimeofday( &stop, 0 ) ; 00401 delta = mfsl_timer_diff( &stop, &start ) ; 00402 LogFullDebug( COMPONENT_MFSL, "%s: duration=%ld.%06ld", __FUNCTION__, delta.tv_sec, delta.tv_usec ) ; 00403 return fsal_status ; 00404 } /* MFSL_readdir */ 00405 00406 fsal_status_t MFSL_closedir(fsal_dir_t * dir_descriptor, /* IN */ 00407 mfsl_context_t * p_mfsl_context, /* IN */ 00408 void * pextra 00409 ) 00410 { 00411 struct timeval start, stop, delta ; 00412 fsal_status_t fsal_status = { ERR_FSAL_NO_ERROR, 0 } ; 00413 00414 gettimeofday( &start, 0 ) ; 00415 fsal_status = FSAL_closedir(dir_descriptor); 00416 gettimeofday( &stop, 0 ) ; 00417 delta = mfsl_timer_diff( &stop, &start ) ; 00418 LogFullDebug( COMPONENT_MFSL, "%s: duration=%ld.%06ld", __FUNCTION__, delta.tv_sec, delta.tv_usec ) ; 00419 return fsal_status ; 00420 } /* FSAL_closedir */ 00421 00422 fsal_status_t MFSL_open(mfsl_object_t * filehandle, /* IN */ 00423 fsal_op_context_t * p_context, /* IN */ 00424 mfsl_context_t * p_mfsl_context, /* IN */ 00425 fsal_openflags_t openflags, /* IN */ 00426 mfsl_file_t * file_descriptor, /* OUT */ 00427 fsal_attrib_list_t * file_attributes, /* [ IN/OUT ] */ 00428 void * pextra 00429 ) 00430 { 00431 struct timeval start, stop, delta ; 00432 fsal_status_t fsal_status = { ERR_FSAL_NO_ERROR, 0 } ; 00433 00434 gettimeofday( &start, 0 ) ; 00435 fsal_status = FSAL_open(&filehandle->handle, 00436 p_context, openflags, &file_descriptor->fsal_file, file_attributes); 00437 gettimeofday( &stop, 0 ) ; 00438 delta = mfsl_timer_diff( &stop, &start ) ; 00439 LogFullDebug( COMPONENT_MFSL, "%s: duration=%ld.%06ld", __FUNCTION__, delta.tv_sec, delta.tv_usec ) ; 00440 return fsal_status ; 00441 } /* MFSL_open */ 00442 00443 fsal_status_t MFSL_open_by_name(mfsl_object_t * dirhandle, /* IN */ 00444 fsal_name_t * filename, /* IN */ 00445 fsal_op_context_t * p_context, /* IN */ 00446 mfsl_context_t * p_mfsl_context, /* IN */ 00447 fsal_openflags_t openflags, /* IN */ 00448 mfsl_file_t * file_descriptor, /* OUT */ 00449 fsal_attrib_list_t * file_attributes, /* [ IN/OUT ] */ 00450 void * pextra ) 00451 { 00452 struct timeval start, stop, delta ; 00453 fsal_status_t fsal_status = { ERR_FSAL_NO_ERROR, 0 } ; 00454 00455 gettimeofday( &start, 0 ) ; 00456 fsal_status = FSAL_open_by_name(&dirhandle->handle, 00457 filename, 00458 p_context, openflags, &file_descriptor->fsal_file, file_attributes); 00459 gettimeofday( &stop, 0 ) ; 00460 delta = mfsl_timer_diff( &stop, &start ) ; 00461 LogFullDebug( COMPONENT_MFSL, "%s: duration=%ld.%06ld", __FUNCTION__, delta.tv_sec, delta.tv_usec ) ; 00462 return fsal_status ; 00463 } /* MFSL_open_by_name */ 00464 00465 fsal_status_t MFSL_open_by_fileid(mfsl_object_t * filehandle, /* IN */ 00466 fsal_u64_t fileid, /* IN */ 00467 fsal_op_context_t * p_context, /* IN */ 00468 mfsl_context_t * p_mfsl_context, /* IN */ 00469 fsal_openflags_t openflags, /* IN */ 00470 mfsl_file_t * file_descriptor, /* OUT */ 00471 fsal_attrib_list_t * file_attributes, /* [ IN/OUT ] */ 00472 void * pextra ) 00473 { 00474 struct timeval start, stop, delta ; 00475 fsal_status_t fsal_status = { ERR_FSAL_NO_ERROR, 0 } ; 00476 00477 gettimeofday( &start, 0 ) ; 00478 fsal_status = FSAL_open_by_fileid(&filehandle->handle, 00479 fileid, 00480 p_context, openflags, &file_descriptor->fsal_file, file_attributes); 00481 gettimeofday( &stop, 0 ) ; 00482 delta = mfsl_timer_diff( &stop, &start ) ; 00483 LogFullDebug( COMPONENT_MFSL, "%s: duration=%ld.%06ld", __FUNCTION__, delta.tv_sec, delta.tv_usec ) ; 00484 return fsal_status ; 00485 } /* MFSL_open_by_fileid */ 00486 00487 fsal_status_t MFSL_read(mfsl_file_t * file_descriptor, /* IN */ 00488 fsal_seek_t * seek_descriptor, /* [IN] */ 00489 fsal_size_t buffer_size, /* IN */ 00490 caddr_t buffer, /* OUT */ 00491 fsal_size_t * read_amount, /* OUT */ 00492 fsal_boolean_t * end_of_file, /* OUT */ 00493 mfsl_context_t * p_mfsl_context, /* IN */ 00494 void * pextra 00495 ) 00496 { 00497 struct timeval start, stop, delta ; 00498 fsal_status_t fsal_status = { ERR_FSAL_NO_ERROR, 0 } ; 00499 00500 gettimeofday( &start, 0 ) ; 00501 fsal_status = FSAL_read(&file_descriptor->fsal_file, 00502 seek_descriptor, buffer_size, buffer, read_amount, end_of_file); 00503 gettimeofday( &stop, 0 ) ; 00504 delta = mfsl_timer_diff( &stop, &start ) ; 00505 LogFullDebug( COMPONENT_MFSL, "%s: duration=%ld.%06ld", __FUNCTION__, delta.tv_sec, delta.tv_usec ) ; 00506 return fsal_status ; 00507 } /* MFSL_read */ 00508 00509 fsal_status_t MFSL_write(mfsl_file_t * file_descriptor, /* IN */ 00510 fsal_seek_t * seek_descriptor, /* IN */ 00511 fsal_size_t buffer_size, /* IN */ 00512 caddr_t buffer, /* IN */ 00513 fsal_size_t * write_amount, /* OUT */ 00514 mfsl_context_t * p_mfsl_context, /* IN */ 00515 void * pextra 00516 ) 00517 { 00518 struct timeval start, stop, delta ; 00519 fsal_status_t fsal_status = { ERR_FSAL_NO_ERROR, 0 } ; 00520 00521 gettimeofday( &start, 0 ) ; 00522 fsal_status = FSAL_write(&file_descriptor->fsal_file, seek_descriptor, buffer_size, buffer, write_amount); 00523 gettimeofday( &stop, 0 ) ; 00524 delta = mfsl_timer_diff( &stop, &start ) ; 00525 LogFullDebug( COMPONENT_MFSL, "%s: duration=%ld.%06ld", __FUNCTION__, delta.tv_sec, delta.tv_usec ) ; 00526 return fsal_status ; 00527 } /* MFSL_write */ 00528 00529 fsal_status_t MFSL_close(mfsl_file_t * file_descriptor, /* IN */ 00530 mfsl_context_t * p_mfsl_context, /* IN */ 00531 void * pextra 00532 ) 00533 { 00534 struct timeval start, stop, delta ; 00535 fsal_status_t fsal_status = { ERR_FSAL_NO_ERROR, 0 } ; 00536 00537 gettimeofday( &start, 0 ) ; 00538 fsal_status = FSAL_close(&file_descriptor->fsal_file); 00539 gettimeofday( &stop, 0 ) ; 00540 delta = mfsl_timer_diff( &stop, &start ) ; 00541 LogFullDebug( COMPONENT_MFSL, "%s: duration=%ld.%06ld", __FUNCTION__, delta.tv_sec, delta.tv_usec ) ; 00542 return fsal_status ; 00543 } /* MFSL_close */ 00544 00545 fsal_status_t MFSL_commit( mfsl_file_t * file_descriptor /* IN */, 00546 fsal_off_t offset, 00547 fsal_size_t length, 00548 void * pextra) 00549 { 00550 struct timeval start, stop, delta ; 00551 fsal_status_t fsal_status = { ERR_FSAL_NO_ERROR, 0 } ; 00552 00553 gettimeofday( &start, 0 ) ; 00554 fsal_status = FSAL_commit( &file_descriptor->fsal_file, offset, length ) ; 00555 gettimeofday( &stop, 0 ) ; 00556 delta = mfsl_timer_diff( &stop, &start ) ; 00557 LogFullDebug( COMPONENT_MFSL, "%s: duration=%ld.%06ld", __FUNCTION__, delta.tv_sec, delta.tv_usec ) ; 00558 return fsal_status ; 00559 } 00560 00561 fsal_status_t MFSL_close_by_fileid(mfsl_file_t * file_descriptor /* IN */ , 00562 fsal_u64_t fileid, 00563 mfsl_context_t * p_mfsl_context, /* IN */ 00564 void * pextra ) 00565 { 00566 struct timeval start, stop, delta ; 00567 fsal_status_t fsal_status = { ERR_FSAL_NO_ERROR, 0 } ; 00568 00569 gettimeofday( &start, 0 ) ; 00570 fsal_status = FSAL_close_by_fileid(&file_descriptor->fsal_file, fileid); 00571 gettimeofday( &stop, 0 ) ; 00572 delta = mfsl_timer_diff( &stop, &start ) ; 00573 LogFullDebug( COMPONENT_MFSL, "%s: duration=%ld.%06ld", __FUNCTION__, delta.tv_sec, delta.tv_usec ) ; 00574 return fsal_status ; 00575 } /* MFSL_close_by_fileid */ 00576 00577 fsal_status_t MFSL_readlink(mfsl_object_t * linkhandle, /* IN */ 00578 fsal_op_context_t * p_context, /* IN */ 00579 mfsl_context_t * p_mfsl_context, /* IN */ 00580 fsal_path_t * p_link_content, /* OUT */ 00581 fsal_attrib_list_t * link_attributes, /* [ IN/OUT ] */ 00582 void * pextra 00583 ) 00584 { 00585 struct timeval start, stop, delta ; 00586 fsal_status_t fsal_status = { ERR_FSAL_NO_ERROR, 0 } ; 00587 00588 gettimeofday( &start, 0 ) ; 00589 fsal_status = FSAL_readlink(&linkhandle->handle, p_context, p_link_content, link_attributes); 00590 gettimeofday( &stop, 0 ) ; 00591 delta = mfsl_timer_diff( &stop, &start ) ; 00592 LogFullDebug( COMPONENT_MFSL, "%s: duration=%ld.%06ld", __FUNCTION__, delta.tv_sec, delta.tv_usec ) ; 00593 return fsal_status ; 00594 } /* MFSL_readlink */ 00595 00596 fsal_status_t MFSL_symlink(mfsl_object_t * parent_directory_handle, /* IN */ 00597 fsal_name_t * p_linkname, /* IN */ 00598 fsal_path_t * p_linkcontent, /* IN */ 00599 fsal_op_context_t * p_context, /* IN */ 00600 mfsl_context_t * p_mfsl_context, /* IN */ 00601 fsal_accessmode_t accessmode, /* IN (ignored); */ 00602 mfsl_object_t * link_handle, /* OUT */ 00603 fsal_attrib_list_t * link_attributes, /* [ IN/OUT ] */ 00604 void * pextra 00605 ) 00606 { 00607 struct timeval start, stop, delta ; 00608 fsal_status_t fsal_status = { ERR_FSAL_NO_ERROR, 0 } ; 00609 00610 gettimeofday( &start, 0 ) ; 00611 fsal_status = FSAL_symlink(&parent_directory_handle->handle, 00612 p_linkname, 00613 p_linkcontent, 00614 p_context, accessmode, &link_handle->handle, link_attributes); 00615 gettimeofday( &stop, 0 ) ; 00616 delta = mfsl_timer_diff( &stop, &start ) ; 00617 LogFullDebug( COMPONENT_MFSL, "%s: duration=%ld.%06ld", __FUNCTION__, delta.tv_sec, delta.tv_usec ) ; 00618 return fsal_status ; 00619 } /* MFSL_symlink */ 00620 00621 fsal_status_t MFSL_rename(mfsl_object_t * old_parentdir_handle, /* IN */ 00622 fsal_name_t * p_old_name, /* IN */ 00623 mfsl_object_t * new_parentdir_handle, /* IN */ 00624 fsal_name_t * p_new_name, /* IN */ 00625 fsal_op_context_t * p_context, /* IN */ 00626 mfsl_context_t * p_mfsl_context, /* IN */ 00627 fsal_attrib_list_t * src_dir_attributes, /* [ IN/OUT ] */ 00628 fsal_attrib_list_t * tgt_dir_attributes, /* [ IN/OUT ] */ 00629 void * pextra 00630 ) 00631 { 00632 struct timeval start, stop, delta ; 00633 fsal_status_t fsal_status = { ERR_FSAL_NO_ERROR, 0 } ; 00634 00635 gettimeofday( &start, 0 ) ; 00636 fsal_status = FSAL_rename(&old_parentdir_handle->handle, 00637 p_old_name, 00638 &new_parentdir_handle->handle, 00639 p_new_name, p_context, src_dir_attributes, tgt_dir_attributes); 00640 gettimeofday( &stop, 0 ) ; 00641 delta = mfsl_timer_diff( &stop, &start ) ; 00642 LogFullDebug( COMPONENT_MFSL, "%s: duration=%ld.%06ld", __FUNCTION__, delta.tv_sec, delta.tv_usec ) ; 00643 return fsal_status ; 00644 } /* MFSL_rename */ 00645 00646 fsal_status_t MFSL_unlink(mfsl_object_t * parentdir_handle, /* INOUT */ 00647 fsal_name_t * p_object_name, /* IN */ 00648 mfsl_object_t * object_handle, /* INOUT */ 00649 fsal_op_context_t * p_context, /* IN */ 00650 mfsl_context_t * p_mfsl_context, /* IN */ 00651 fsal_attrib_list_t * parentdir_attributes, /* [IN/OUT ] */ 00652 void * pextra 00653 ) 00654 { 00655 struct timeval start, stop, delta ; 00656 fsal_status_t fsal_status = { ERR_FSAL_NO_ERROR, 0 } ; 00657 00658 gettimeofday( &start, 0 ) ; 00659 fsal_status = FSAL_unlink(&parentdir_handle->handle, 00660 p_object_name, p_context, parentdir_attributes); 00661 gettimeofday( &stop, 0 ) ; 00662 delta = mfsl_timer_diff( &stop, &start ) ; 00663 LogFullDebug( COMPONENT_MFSL, "%s: duration=%ld.%06ld", __FUNCTION__, delta.tv_sec, delta.tv_usec ) ; 00664 return fsal_status ; 00665 } /* MFSL_unlink */ 00666 00667 fsal_status_t MFSL_mknode(mfsl_object_t * parentdir_handle, /* IN */ 00668 fsal_name_t * p_node_name, /* IN */ 00669 fsal_op_context_t * p_context, /* IN */ 00670 mfsl_context_t * p_mfsl_context, /* IN */ 00671 fsal_accessmode_t accessmode, /* IN */ 00672 fsal_nodetype_t nodetype, /* IN */ 00673 fsal_dev_t * dev, /* IN */ 00674 mfsl_object_t * p_object_handle, /* OUT */ 00675 fsal_attrib_list_t * node_attributes, /* [ IN/OUT ] */ 00676 void * pextra 00677 ) 00678 { 00679 struct timeval start, stop, delta ; 00680 fsal_status_t fsal_status = { ERR_FSAL_NO_ERROR, 0 } ; 00681 00682 gettimeofday( &start, 0 ) ; 00683 fsal_status = FSAL_mknode(&parentdir_handle->handle, 00684 p_node_name, 00685 p_context, 00686 accessmode, 00687 nodetype, dev, &p_object_handle->handle, node_attributes); 00688 gettimeofday( &stop, 0 ) ; 00689 delta = mfsl_timer_diff( &stop, &start ) ; 00690 LogFullDebug( COMPONENT_MFSL, "%s: duration=%ld.%06ld", __FUNCTION__, delta.tv_sec, delta.tv_usec ) ; 00691 return fsal_status ; 00692 } /* MFSL_mknode */ 00693 00694 fsal_status_t MFSL_rcp(mfsl_object_t * filehandle, /* IN */ 00695 fsal_op_context_t * p_context, /* IN */ 00696 mfsl_context_t * p_mfsl_context, /* IN */ 00697 fsal_path_t * p_local_path, /* IN */ 00698 fsal_rcpflag_t transfer_opt, /* IN */ 00699 void * pextra 00700 ) 00701 { 00702 struct timeval start, stop, delta ; 00703 fsal_status_t fsal_status = { ERR_FSAL_NO_ERROR, 0 } ; 00704 00705 gettimeofday( &start, 0 ) ; 00706 fsal_status = FSAL_rcp(&filehandle->handle, p_context, p_local_path, transfer_opt); 00707 gettimeofday( &stop, 0 ) ; 00708 delta = mfsl_timer_diff( &stop, &start ) ; 00709 LogFullDebug( COMPONENT_MFSL, "%s: duration=%ld.%06ld", __FUNCTION__, delta.tv_sec, delta.tv_usec ) ; 00710 return fsal_status ; 00711 } /* MFSL_rcp */ 00712 00713 /* To be called before exiting */ 00714 fsal_status_t MFSL_terminate(void) 00715 { 00716 fsal_status_t fsal_status; 00717 00718 fsal_status.major = ERR_FSAL_NO_ERROR; 00719 fsal_status.minor = 0; 00720 00721 return fsal_status; 00722 00723 } /* MFSL_terminate */