nfs-ganesha 1.4
|
00001 /* 00002 * vim:expandtab:shiftwidth=8:tabstop=8: 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 00035 #include "fsal.h" 00036 #include <sys/stat.h> 00037 #include "fsal_up.h" 00038 #include "FSAL/common_functions.h" 00039 00040 /* defined the set of attributes supported with POSIX */ 00041 #define GPFS_SUPPORTED_ATTRIBUTES ( \ 00042 FSAL_ATTR_SUPPATTR | FSAL_ATTR_TYPE | FSAL_ATTR_SIZE | \ 00043 FSAL_ATTR_FSID | FSAL_ATTR_FILEID | \ 00044 FSAL_ATTR_MODE | FSAL_ATTR_NUMLINKS | FSAL_ATTR_OWNER | \ 00045 FSAL_ATTR_GROUP | FSAL_ATTR_ATIME | FSAL_ATTR_RAWDEV | \ 00046 FSAL_ATTR_CTIME | FSAL_ATTR_MTIME | FSAL_ATTR_SPACEUSED | \ 00047 FSAL_ATTR_CHGTIME | FSAL_ATTR_ACL ) 00048 00049 /* the following variables must not be defined in fsal_internal.c */ 00050 #ifndef FSAL_INTERNAL_C 00051 00052 /* static filesystem info. 00053 * read access only. 00054 */ 00055 extern fsal_staticfsinfo_t global_fs_info; 00056 00057 /* export_context_t is not given to every function, but 00058 * most functions need to use the open-by-handle funcionality. 00059 */ 00060 00061 #endif 00062 00066 fsal_status_t fsal_internal_init_global(fsal_init_info_t * fsal_info, 00067 fs_common_initinfo_t * fs_common_info, 00068 fs_specific_initinfo_t * fs_specific_info); 00069 00073 void fsal_increment_nbcall(int function_index, fsal_status_t status); 00074 00078 void fsal_internal_getstats(fsal_statistics_t * output_stats); 00079 00083 void TakeTokenFSCall(); 00084 void ReleaseTokenFSCall(); 00085 00089 fsal_status_t fsal_internal_handle2fd(fsal_op_context_t * p_context, 00090 fsal_handle_t * phandle, int *pfd, int oflags); 00091 00092 fsal_status_t fsal_internal_handle2fd_at(int dirfd, 00093 fsal_handle_t * phandle, int *pfd, int oflags); 00094 00095 fsal_status_t fsal_internal_get_handle_at(int dfd, fsal_name_t * p_fsalname, /* IN */ 00096 fsal_handle_t * p_handle /* OUT */ ); 00097 00101 fsal_status_t fsal_internal_get_fh(fsal_op_context_t * p_context, /* IN */ 00102 fsal_handle_t * p_dir_handle, /* IN */ 00103 fsal_name_t * p_fsalname, /* IN */ 00104 fsal_handle_t * p_handle); /* OUT */ 00108 fsal_status_t fsal_readlink_by_handle(fsal_op_context_t * p_context, 00109 fsal_handle_t * p_handle, char *__buf, int maxlen); 00110 00114 fsal_status_t fsal_internal_get_handle(fsal_op_context_t * p_context, /* IN */ 00115 fsal_path_t * p_fsalpath, /* IN */ 00116 fsal_handle_t * p_handle /* OUT */ ); 00117 00118 fsal_status_t fsal_internal_get_handle_at(int dfd, fsal_name_t * p_fsalname, /* IN */ 00119 fsal_handle_t * p_handle /* OUT */ ); 00120 00121 fsal_status_t fsal_internal_fd2handle(int fd, /* IN */ 00122 fsal_handle_t * p_handle /* OUT */ 00123 ); 00124 00125 fsal_status_t fsal_internal_link_at(int srcfd, int dfd, char *name); 00126 00127 fsal_status_t fsal_internal_link_fh(fsal_op_context_t * p_context, 00128 fsal_handle_t * p_target_handle, 00129 fsal_handle_t * p_dir_handle, 00130 fsal_name_t * p_link_name); 00131 00132 fsal_status_t fsal_internal_stat_name(fsal_op_context_t * p_context, 00133 fsal_handle_t * p_dir_handle, 00134 fsal_name_t * p_stat_name, 00135 struct stat *buf); 00136 00137 fsal_status_t fsal_internal_unlink(fsal_op_context_t * p_context, 00138 fsal_handle_t * p_dir_handle, 00139 fsal_name_t * p_stat_name, 00140 struct stat *buf); 00141 00142 fsal_status_t fsal_internal_create(fsal_op_context_t * p_context, 00143 fsal_handle_t * p_dir_handle, 00144 fsal_name_t * p_stat_name, 00145 mode_t mode, dev_t dev, 00146 fsal_handle_t * p_new_handle, 00147 struct stat *buf); 00148 00149 fsal_status_t fsal_internal_rename_fh(fsal_op_context_t * p_context, 00150 fsal_handle_t * p_old_handle, 00151 fsal_handle_t * p_new_handle, 00152 fsal_name_t * p_old_name, 00153 fsal_name_t * p_new_name); 00154 00159 fsal_status_t fsal_internal_testAccess(fsal_op_context_t * p_context, /* IN */ 00160 fsal_accessflags_t access_type, /* IN */ 00161 struct stat *p_buffstat, /* IN, optional */ 00162 fsal_attrib_list_t * 00163 p_object_attributes /* IN, optional */ ); 00164 00165 fsal_status_t fsal_internal_access(fsal_op_context_t * p_context, /* IN */ 00166 fsal_handle_t * p_handle, /* IN */ 00167 fsal_accessflags_t access_type, /* IN */ 00168 fsal_attrib_list_t *p_object_attributes /* IN */ ); 00169 00170 fsal_status_t fsal_stat_by_handle(fsal_op_context_t * p_context, 00171 fsal_handle_t * p_handle, struct stat *buf); 00172 00173 fsal_status_t fsal_get_xstat_by_handle(fsal_op_context_t * p_context, 00174 fsal_handle_t * p_handle, gpfsfsal_xstat_t *p_buffxstat); 00175 00176 fsal_status_t fsal_set_xstat_by_handle(fsal_op_context_t * p_context, 00177 fsal_handle_t * p_handle, int attr_valid, 00178 int attr_changed, gpfsfsal_xstat_t *p_buffxstat); 00179 00180 fsal_status_t fsal_check_access_by_mode(fsal_op_context_t * p_context, /* IN */ 00181 fsal_accessflags_t access_type, /* IN */ 00182 struct stat *p_buffstat /* IN */); 00183 00184 fsal_status_t fsal_trucate_by_handle(fsal_op_context_t * p_context, 00185 fsal_handle_t * p_handle, 00186 u_int64_t size); 00187 00188 /* All the call to FSAL to be wrapped */ 00189 fsal_status_t GPFSFSAL_access(fsal_handle_t * p_object_handle, /* IN */ 00190 fsal_op_context_t * p_context, /* IN */ 00191 fsal_accessflags_t access_type, /* IN */ 00192 fsal_attrib_list_t * p_object_attributes /* [ IN/OUT ] */ ); 00193 00194 fsal_status_t GPFSFSAL_getattrs(fsal_handle_t * p_filehandle, /* IN */ 00195 fsal_op_context_t * p_context, /* IN */ 00196 fsal_attrib_list_t * p_object_attributes /* IN/OUT */ ); 00197 00198 fsal_status_t GPFSFSAL_getattrs_descriptor(fsal_file_t * p_file_descriptor, /* IN */ 00199 fsal_handle_t * p_filehandle, /* IN */ 00200 fsal_op_context_t * p_context, /* IN */ 00201 fsal_attrib_list_t * p_object_attributes /* IN/OUT */ ); 00202 00203 fsal_status_t GPFSFSAL_setattrs(fsal_handle_t * p_filehandle, /* IN */ 00204 fsal_op_context_t * p_context, /* IN */ 00205 fsal_attrib_list_t * p_attrib_set, /* IN */ 00206 fsal_attrib_list_t * 00207 p_object_attributes /* [ IN/OUT ] */ ); 00208 00209 fsal_status_t GPFSFSAL_BuildExportContext(fsal_export_context_t * p_export_context, /* OUT */ 00210 fsal_path_t * p_export_path, /* IN */ 00211 char *fs_specific_options /* IN */ ); 00212 00213 fsal_status_t GPFSFSAL_CleanUpExportContext(fsal_export_context_t * p_export_context); 00214 00215 fsal_status_t GPFSFSAL_create(fsal_handle_t * p_parent_directory_handle, /* IN */ 00216 fsal_name_t * p_filename, /* IN */ 00217 fsal_op_context_t * p_context, /* IN */ 00218 fsal_accessmode_t accessmode, /* IN */ 00219 fsal_handle_t * p_object_handle, /* OUT */ 00220 fsal_attrib_list_t * p_object_attributes /* [ IN/OUT ] */ ); 00221 00222 fsal_status_t GPFSFSAL_mkdir(fsal_handle_t * p_parent_directory_handle, /* IN */ 00223 fsal_name_t * p_dirname, /* IN */ 00224 fsal_op_context_t * p_context, /* IN */ 00225 fsal_accessmode_t accessmode, /* IN */ 00226 fsal_handle_t * p_object_handle, /* OUT */ 00227 fsal_attrib_list_t * p_object_attributes /* [ IN/OUT ] */ ); 00228 00229 fsal_status_t GPFSFSAL_link(fsal_handle_t * p_target_handle, /* IN */ 00230 fsal_handle_t * p_dir_handle, /* IN */ 00231 fsal_name_t * p_link_name, /* IN */ 00232 fsal_op_context_t * p_context, /* IN */ 00233 fsal_attrib_list_t * p_attributes /* [ IN/OUT ] */ ); 00234 00235 fsal_status_t GPFSFSAL_mknode(fsal_handle_t * parentdir_handle, /* IN */ 00236 fsal_name_t * p_node_name, /* IN */ 00237 fsal_op_context_t * p_context, /* IN */ 00238 fsal_accessmode_t accessmode, /* IN */ 00239 fsal_nodetype_t nodetype, /* IN */ 00240 fsal_dev_t * dev, /* IN */ 00241 fsal_handle_t * p_object_handle, /* OUT (handle to the created node) */ 00242 fsal_attrib_list_t * node_attributes /* [ IN/OUT ] */ ); 00243 00244 fsal_status_t GPFSFSAL_opendir(fsal_handle_t * p_dir_handle, /* IN */ 00245 fsal_op_context_t * p_context, /* IN */ 00246 fsal_dir_t * p_dir_descriptor, /* OUT */ 00247 fsal_attrib_list_t * p_dir_attributes /* [ IN/OUT ] */ ); 00248 00249 fsal_status_t GPFSFSAL_readdir(fsal_dir_t * p_dir_descriptor, /* IN */ 00250 fsal_cookie_t start_position, /* IN */ 00251 fsal_attrib_mask_t get_attr_mask, /* IN */ 00252 fsal_mdsize_t buffersize, /* IN */ 00253 fsal_dirent_t * p_pdirent, /* OUT */ 00254 fsal_cookie_t * p_end_position, /* OUT */ 00255 fsal_count_t * p_nb_entries, /* OUT */ 00256 fsal_boolean_t * p_end_of_dir /* OUT */ ); 00257 00258 fsal_status_t GPFSFSAL_closedir(fsal_dir_t * p_dir_descriptor /* IN */ ); 00259 00260 fsal_status_t GPFSFSAL_open_by_name(fsal_handle_t * dirhandle, /* IN */ 00261 fsal_name_t * filename, /* IN */ 00262 fsal_op_context_t * p_context, /* IN */ 00263 fsal_openflags_t openflags, /* IN */ 00264 fsal_file_t * file_descriptor, /* OUT */ 00265 fsal_attrib_list_t * 00266 file_attributes /* [ IN/OUT ] */ ); 00267 00268 fsal_status_t GPFSFSAL_open(fsal_handle_t * p_filehandle, /* IN */ 00269 fsal_op_context_t * p_context, /* IN */ 00270 fsal_openflags_t openflags, /* IN */ 00271 fsal_file_t * p_file_descriptor, /* OUT */ 00272 fsal_attrib_list_t * p_file_attributes /* [ IN/OUT ] */ ); 00273 00274 fsal_status_t GPFSFSAL_read(fsal_file_t * p_file_descriptor, /* IN */ 00275 fsal_seek_t * p_seek_descriptor, /* [IN] */ 00276 fsal_size_t buffer_size, /* IN */ 00277 caddr_t buffer, /* OUT */ 00278 fsal_size_t * p_read_amount, /* OUT */ 00279 fsal_boolean_t * p_end_of_file /* OUT */ ); 00280 00281 fsal_status_t GPFSFSAL_write(fsal_file_t * p_file_descriptor, /* IN */ 00282 fsal_op_context_t * p_context, /* IN */ 00283 fsal_seek_t * p_seek_descriptor, /* IN */ 00284 fsal_size_t buffer_size, /* IN */ 00285 caddr_t buffer, /* IN */ 00286 fsal_size_t * p_write_amount /* OUT */ ); 00287 00288 fsal_status_t GPFSFSAL_close(fsal_file_t * p_file_descriptor /* IN */ ); 00289 00290 fsal_status_t GPFSFSAL_dynamic_fsinfo(fsal_handle_t * p_filehandle, /* IN */ 00291 fsal_op_context_t * p_context, /* IN */ 00292 fsal_dynamicfsinfo_t * p_dynamicinfo /* OUT */ ); 00293 00294 fsal_status_t GPFSFSAL_Init(fsal_parameter_t * init_info /* IN */ ); 00295 00296 fsal_status_t GPFSFSAL_test_access(fsal_op_context_t * p_context, /* IN */ 00297 fsal_accessflags_t access_type, /* IN */ 00298 fsal_attrib_list_t * p_object_attributes /* IN */ ); 00299 00300 fsal_status_t GPFSFSAL_lookup(fsal_handle_t * p_parent_directory_handle, /* IN */ 00301 fsal_name_t * p_filename, /* IN */ 00302 fsal_op_context_t * p_context, /* IN */ 00303 fsal_handle_t * p_object_handle, /* OUT */ 00304 fsal_attrib_list_t * p_object_attributes /* [ IN/OUT ] */ ); 00305 00306 fsal_status_t GPFSFSAL_lookupPath(fsal_path_t * p_path, /* IN */ 00307 fsal_op_context_t * p_context, /* IN */ 00308 fsal_handle_t * object_handle, /* OUT */ 00309 fsal_attrib_list_t * 00310 p_object_attributes /* [ IN/OUT ] */ ); 00311 00312 fsal_status_t GPFSFSAL_lookupJunction(fsal_handle_t * p_junction_handle, /* IN */ 00313 fsal_op_context_t * p_context, /* IN */ 00314 fsal_handle_t * p_fsoot_handle, /* OUT */ 00315 fsal_attrib_list_t * 00316 p_fsroot_attributes /* [ IN/OUT ] */ ); 00317 00318 fsal_status_t GPFSFSAL_lock_op( fsal_file_t * p_file_descriptor, /* IN */ 00319 fsal_handle_t * p_filehandle, /* IN */ 00320 fsal_op_context_t * p_context, /* IN */ 00321 void * p_owner, /* IN */ 00322 fsal_lock_op_t lock_op, /* IN */ 00323 fsal_lock_param_t request_lock, /* IN */ 00324 fsal_lock_param_t * conflicting_lock /* OUT */ ); 00325 00326 fsal_status_t GPFSFSAL_share_op( fsal_file_t * p_file_descriptor, /* IN */ 00327 fsal_handle_t * p_filehandle, /* IN */ 00328 fsal_op_context_t * p_context, /* IN */ 00329 void * p_owner, /* IN */ 00330 fsal_share_param_t request_share /* IN */ ); 00331 00332 fsal_status_t GPFSFSAL_rcp(fsal_handle_t * filehandle, /* IN */ 00333 fsal_op_context_t * p_context, /* IN */ 00334 fsal_path_t * p_local_path, /* IN */ 00335 fsal_rcpflag_t transfer_opt /* IN */ ); 00336 00337 fsal_status_t GPFSFSAL_rename(fsal_handle_t * p_old_parentdir_handle, /* IN */ 00338 fsal_name_t * p_old_name, /* IN */ 00339 fsal_handle_t * p_new_parentdir_handle, /* IN */ 00340 fsal_name_t * p_new_name, /* IN */ 00341 fsal_op_context_t * p_context, /* IN */ 00342 fsal_attrib_list_t * p_src_dir_attributes, /* [ IN/OUT ] */ 00343 fsal_attrib_list_t * p_tgt_dir_attributes /* [ IN/OUT ] */ ); 00344 00345 void GPFSFSAL_get_stats(fsal_statistics_t * stats, /* OUT */ 00346 fsal_boolean_t reset /* IN */ ); 00347 00348 fsal_status_t GPFSFSAL_readlink(fsal_handle_t * p_linkhandle, /* IN */ 00349 fsal_op_context_t * p_context, /* IN */ 00350 fsal_path_t * p_link_content, /* OUT */ 00351 fsal_attrib_list_t * p_link_attributes /* [ IN/OUT ] */ ); 00352 00353 fsal_status_t GPFSFSAL_symlink(fsal_handle_t * p_parent_directory_handle, /* IN */ 00354 fsal_name_t * p_linkname, /* IN */ 00355 fsal_path_t * p_linkcontent, /* IN */ 00356 fsal_op_context_t * p_context, /* IN */ 00357 fsal_accessmode_t accessmode, /* IN (ignored) */ 00358 fsal_handle_t * p_link_handle, /* OUT */ 00359 fsal_attrib_list_t * p_link_attributes /* [ IN/OUT ] */ ); 00360 00361 int GPFSFSAL_handlecmp(fsal_handle_t * handle1, fsal_handle_t * handle2, 00362 fsal_status_t * status); 00363 00364 unsigned int GPFSFSAL_Handle_to_HashIndex(fsal_handle_t * p_handle, 00365 unsigned int cookie, 00366 unsigned int alphabet_len, 00367 unsigned int index_size); 00368 00369 unsigned int GPFSFSAL_Handle_to_RBTIndex(fsal_handle_t * p_handle, unsigned int cookie); 00370 00371 fsal_status_t GPFSFSAL_DigestHandle(fsal_export_context_t * p_expcontext, /* IN */ 00372 fsal_digesttype_t output_type, /* IN */ 00373 fsal_handle_t * p_in_fsal_handle, /* IN */ 00374 struct fsal_handle_desc *fh_desc /* OUT */ ); 00375 00376 fsal_status_t GPFSFSAL_ExpandHandle(fsal_export_context_t * p_expcontext, /*IN*/ 00377 fsal_digesttype_t in_type, /* IN */ 00378 struct fsal_handle_desc *fh_desc /*IN OUT*/); 00379 00380 fsal_status_t GPFSFSAL_SetDefault_FS_specific_parameter(fsal_parameter_t * out_parameter); 00381 00382 fsal_status_t GPFSFSAL_load_FS_specific_parameter_from_conf(config_file_t in_config, 00383 fsal_parameter_t * 00384 out_parameter); 00385 00386 fsal_status_t GPFSFSAL_truncate(fsal_handle_t * p_filehandle, /* IN */ 00387 fsal_op_context_t * p_context, /* IN */ 00388 fsal_size_t length, /* IN */ 00389 fsal_file_t * file_descriptor, /* Unused in this FSAL */ 00390 fsal_attrib_list_t * 00391 p_object_attributes /* [ IN/OUT ] */ ); 00392 00393 fsal_status_t GPFSFSAL_unlink(fsal_handle_t * p_parent_directory_handle, /* IN */ 00394 fsal_name_t * p_object_name, /* IN */ 00395 fsal_op_context_t * p_context, /* IN */ 00396 fsal_attrib_list_t * 00397 p_parent_directory_attributes /* [IN/OUT ] */ ); 00398 00399 char *GPFSFSAL_GetFSName(); 00400 00401 fsal_status_t GPFSFSAL_GetXAttrAttrs(fsal_handle_t * p_objecthandle, /* IN */ 00402 fsal_op_context_t * p_context, /* IN */ 00403 unsigned int xattr_id, /* IN */ 00404 fsal_attrib_list_t * p_attrs); 00405 00406 fsal_status_t GPFSFSAL_ListXAttrs(fsal_handle_t * p_objecthandle, /* IN */ 00407 unsigned int cookie, /* IN */ 00408 fsal_op_context_t * p_context, /* IN */ 00409 fsal_xattrent_t * xattrs_tab, /* IN/OUT */ 00410 unsigned int xattrs_tabsize, /* IN */ 00411 unsigned int *p_nb_returned, /* OUT */ 00412 int *end_of_list /* OUT */ ); 00413 00414 fsal_status_t GPFSFSAL_GetXAttrValueById(fsal_handle_t * p_objecthandle, /* IN */ 00415 unsigned int xattr_id, /* IN */ 00416 fsal_op_context_t * p_context, /* IN */ 00417 caddr_t buffer_addr, /* IN/OUT */ 00418 size_t buffer_size, /* IN */ 00419 size_t * p_output_size /* OUT */ ); 00420 00421 fsal_status_t GPFSFSAL_GetXAttrIdByName(fsal_handle_t * p_objecthandle, /* IN */ 00422 const fsal_name_t * xattr_name, /* IN */ 00423 fsal_op_context_t * p_context, /* IN */ 00424 unsigned int *pxattr_id /* OUT */ ); 00425 00426 fsal_status_t GPFSFSAL_GetXAttrValueByName(fsal_handle_t * p_objecthandle, /* IN */ 00427 const fsal_name_t * xattr_name, /* IN */ 00428 fsal_op_context_t * p_context, /* IN */ 00429 caddr_t buffer_addr, /* IN/OUT */ 00430 size_t buffer_size, /* IN */ 00431 size_t * p_output_size /* OUT */ ); 00432 00433 fsal_status_t GPFSFSAL_SetXAttrValue(fsal_handle_t * p_objecthandle, /* IN */ 00434 const fsal_name_t * xattr_name, /* IN */ 00435 fsal_op_context_t * p_context, /* IN */ 00436 caddr_t buffer_addr, /* IN */ 00437 size_t buffer_size, /* IN */ 00438 int create /* IN */ ); 00439 00440 fsal_status_t GPFSFSAL_SetXAttrValueById(fsal_handle_t * p_objecthandle, /* IN */ 00441 unsigned int xattr_id, /* IN */ 00442 fsal_op_context_t * p_context, /* IN */ 00443 caddr_t buffer_addr, /* IN */ 00444 size_t buffer_size /* IN */ ); 00445 00446 fsal_status_t GPFSFSAL_RemoveXAttrById(fsal_handle_t * p_objecthandle, /* IN */ 00447 fsal_op_context_t * p_context, /* IN */ 00448 unsigned int xattr_id) /* IN */ ; 00449 00450 fsal_status_t GPFSFSAL_RemoveXAttrByName(fsal_handle_t * p_objecthandle, /* IN */ 00451 fsal_op_context_t * p_context, /* IN */ 00452 const fsal_name_t * xattr_name) /* IN */ ; 00453 00454 int GPFSFSAL_GetXattrOffsetSetable( void ) ; 00455 00456 unsigned int GPFSFSAL_GetFileno(fsal_file_t * pfile); 00457 00458 fsal_status_t GPFSFSAL_commit( fsal_file_t * p_file_descriptor, 00459 fsal_off_t offset, 00460 fsal_size_t size ) ; 00461 00462 00463 #ifdef _USE_FSAL_UP 00464 fsal_status_t GPFSFSAL_UP_Init( fsal_up_event_bus_parameter_t * pebparam, /* IN */ 00465 fsal_up_event_bus_context_t * pupebcontext /* OUT */); 00466 fsal_status_t GPFSFSAL_UP_AddFilter( fsal_up_event_bus_filter_t * pupebfilter, /* IN */ 00467 fsal_up_event_bus_context_t * pupebcontext /* INOUT */ ); 00468 fsal_status_t GPFSFSAL_UP_GetEvents( struct glist_head * pevent_head, 00469 fsal_count_t * event_nb, /* IN */ 00470 fsal_time_t timeout, /* IN */ 00471 fsal_count_t * peventfound, /* OUT */ 00472 fsal_up_event_bus_context_t * pupebcontext /* IN */ ); 00473 #endif /* _USE_FSAL_UP */