nfs-ganesha 1.4
|
00001 /* 00002 * This program is free software; you can redistribute it and/or 00003 * modify it under the terms of the GNU Lesser General Public 00004 * License as published by the Free Software Foundation; either 00005 * version 3 of the License, or (at your option) any later version. 00006 * 00007 * This program is distributed in the hope that it will be useful, 00008 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00009 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00010 * Lesser General Public License for more details. 00011 * 00012 * You should have received a copy of the GNU Lesser General Public 00013 * License along with this library; if not, write to the Free Software 00014 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00015 * 00016 *--------------------------------------- 00017 */ 00018 00024 #ifndef _FSAL_UP_H 00025 #define _FSAL_UP_H 00026 00027 #ifdef _USE_FSAL_UP 00028 00029 #include "fsal_types.h" 00030 #include "cache_inode.h" 00031 #include "nfs_exports.h" 00032 00033 /* In the "static" case, original types are used, this is safer */ 00034 #define MAX_FILTER_NAMELEN 255 00035 00036 #define FSAL_UP_EVENT_CREATE 1 00037 #define FSAL_UP_EVENT_UNLINK 2 00038 #define FSAL_UP_EVENT_RENAME 3 00039 #define FSAL_UP_EVENT_COMMIT 4 00040 #define FSAL_UP_EVENT_WRITE 5 00041 #define FSAL_UP_EVENT_LINK 6 00042 #define FSAL_UP_EVENT_LOCK_GRANT 7 00043 #define FSAL_UP_EVENT_LOCK_AVAIL 8 00044 #define FSAL_UP_EVENT_OPEN 9 00045 #define FSAL_UP_EVENT_CLOSE 10 00046 #define FSAL_UP_EVENT_SETATTR 11 00047 #define FSAL_UP_EVENT_UPDATE 12 00048 #define FSAL_UP_EVENT_INVALIDATE 13 00049 00050 /* Defines for the flags in callback_arg, keep up to date with CXIUP_xxx */ 00051 #define FSAL_UP_NLINK 0x00000001 /* update nlink */ 00052 #define FSAL_UP_MODE 0x00000002 /* update mode and ctime */ 00053 #define FSAL_UP_OWN 0x00000004 /* update mode,uid,gid and ctime */ 00054 #define FSAL_UP_SIZE 0x00000008 /* update fsize */ 00055 #define FSAL_UP_SIZE_BIG 0x00000010 /* update fsize if bigger */ 00056 #define FSAL_UP_TIMES 0x00000020 /* update all times */ 00057 #define FSAL_UP_ATIME 0x00000040 /* update atime only */ 00058 #define FSAL_UP_PERM 0x00000080 /* update fields needed for permission checking*/ 00059 #define FSAL_UP_RENAME 0x00000100 /* this is a rename op */ 00060 00061 00062 typedef struct fsal_up_filter_list_t_ 00063 { 00064 char name[MAX_FILTER_NAMELEN]; 00065 struct fsal_up_filter_list_t_ *next; 00066 } fsal_up_filter_list_t; 00067 00068 typedef struct fsal_up_event_bus_parameter_t_ 00069 { 00070 } fsal_up_event_bus_parameter_t; 00071 00072 typedef struct fsal_up_event_bus_context_t_ 00073 { 00074 fsal_export_context_t FS_export_context; 00075 pool_t *event_pool; 00076 pthread_mutex_t *event_pool_lock; 00077 } fsal_up_event_bus_context_t; 00078 00079 typedef struct fsal_up_event_data_context_t_ 00080 { 00081 cache_inode_fsal_data_t fsal_data; 00082 } fsal_up_event_data_context_t; 00083 00084 typedef struct fsal_up_arg_t_ 00085 { 00086 struct exportlist__ *export_entry; 00087 } fsal_up_arg_t; 00088 00089 typedef struct fsal_up_event_bus_filter_t_ 00090 { 00091 } fsal_up_event_bus_filter_t; 00092 00093 typedef struct fsal_up_event_data_create_t_ 00094 { 00095 } fsal_up_event_data_create_t; 00096 00097 typedef struct fsal_up_event_data_unlink_t_ 00098 { 00099 } fsal_up_event_data_unlink_t; 00100 00101 typedef struct fsal_up_event_data_rename_t_ 00102 { 00103 } fsal_up_event_data_rename_t; 00104 00105 typedef struct fsal_up_event_data_commit_t_ 00106 { 00107 } fsal_up_event_data_commit_t; 00108 00109 typedef struct fsal_up_event_data_write_t_ 00110 { 00111 } fsal_up_event_data_write_t; 00112 00113 typedef struct fsal_up_event_data_link_t_ 00114 { 00115 } fsal_up_event_data_link_t; 00116 00117 typedef struct fsal_up_event_data_lock_grant_t_ 00118 { 00119 void * lock_owner; 00120 fsal_lock_param_t lock_param; 00121 } fsal_up_event_data_lock_grant_t; 00122 00123 typedef struct fsal_up_event_data_open_t_ 00124 { 00125 } fsal_up_event_data_open_t; 00126 00127 typedef struct fsal_up_event_data_close_t_ 00128 { 00129 } fsal_up_event_data_close_t; 00130 00131 typedef struct fsal_up_event_data_setattr_ 00132 { 00133 } fsal_up_event_data_setattr_t; 00134 00135 typedef struct fsal_up_event_data_invalidate_ 00136 { 00137 } fsal_up_event_data_invalidate_t; 00138 00139 typedef struct fsal_up_event_data_update_ 00140 { 00141 struct stat upu_stat_buf; 00142 int upu_flags; 00143 } fsal_up_event_data_update_t; 00144 00145 typedef struct fsal_up_event_data__ 00146 { 00147 union { 00148 fsal_up_event_data_create_t create; 00149 fsal_up_event_data_unlink_t unlink; 00150 fsal_up_event_data_rename_t rename; 00151 fsal_up_event_data_commit_t commit; 00152 fsal_up_event_data_write_t write; 00153 fsal_up_event_data_link_t link; 00154 fsal_up_event_data_lock_grant_t lock_grant; 00155 fsal_up_event_data_open_t open; 00156 fsal_up_event_data_close_t close; 00157 fsal_up_event_data_setattr_t setattr; 00158 fsal_up_event_data_update_t update; 00159 fsal_up_event_data_invalidate_t invalidate; 00160 } type; 00161 /* Common data most functions will need. */ 00162 fsal_up_event_data_context_t event_context; 00163 } fsal_up_event_data_t; 00164 00165 typedef fsal_status_t (fsal_up_event_process_func_t) (fsal_up_event_data_t * arg); 00166 00167 typedef struct fsal_up_event_t_ 00168 { 00169 struct glist_head event_list; 00170 fsal_up_event_process_func_t * event_process_func; 00171 unsigned int event_type; 00172 fsal_up_event_data_t event_data; 00173 } fsal_up_event_t; 00174 00175 typedef struct fsal_up_event_functions__ 00176 { 00177 fsal_status_t (*fsal_up_create) (fsal_up_event_data_t * pevdata ); 00178 fsal_status_t (*fsal_up_unlink) (fsal_up_event_data_t * pevdata ); 00179 fsal_status_t (*fsal_up_rename) (fsal_up_event_data_t * pevdata ); 00180 fsal_status_t (*fsal_up_commit) (fsal_up_event_data_t * pevdata ); 00181 fsal_status_t (*fsal_up_write) (fsal_up_event_data_t * pevdata ); 00182 fsal_status_t (*fsal_up_link) (fsal_up_event_data_t * pevdata ); 00183 fsal_status_t (*fsal_up_lock_grant) (fsal_up_event_data_t * pevdata ); 00184 fsal_status_t (*fsal_up_lock_avail) (fsal_up_event_data_t * pevdata ); 00185 fsal_status_t (*fsal_up_open) (fsal_up_event_data_t * pevdata ); 00186 fsal_status_t (*fsal_up_close) (fsal_up_event_data_t * pevdata ); 00187 fsal_status_t (*fsal_up_setattr) (fsal_up_event_data_t * pevdata ); 00188 fsal_status_t (*fsal_up_update) (fsal_up_event_data_t * pevdata ); 00189 fsal_status_t (*fsal_up_invalidate) (fsal_up_event_data_t * pevdata ); 00190 } fsal_up_event_functions_t; 00191 00192 #define FSAL_UP_DUMB_TYPE "DUMB" 00193 fsal_up_event_functions_t *get_fsal_up_dumb_functions(); 00194 00195 #endif /* _USE_FSAL_UP */ 00196 #endif /* _FSAL_UP_H */