nfs-ganesha 1.4

fsal_internal.h

Go to the documentation of this file.
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