filter_internal.h

来自「lustre 1.6.5 source code」· C头文件 代码 · 共 198 行

H
198
字号
/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- * vim:expandtab:shiftwidth=8:tabstop=8: */#ifndef _FILTER_INTERNAL_H#define _FILTER_INTERNAL_H#ifdef __KERNEL__# include <linux/spinlock.h>#endif#include <lustre_disk.h>#include <lustre_handles.h>#include <lustre_debug.h>#include <obd.h>#include <lprocfs_status.h>#define FILTER_LAYOUT_VERSION "2"#define FILTER_INIT_OBJID 0#define FILTER_SUBDIR_COUNT      32            /* set to zero for no subdirs */#define FILTER_GROUPS 3 /* must be at least 3; not dynamic yet */#define FILTER_ROCOMPAT_SUPP (0)#define FILTER_INCOMPAT_SUPP (OBD_INCOMPAT_GROUPS | OBD_INCOMPAT_OST | \                              OBD_INCOMPAT_COMMON_LR)#define FILTER_GRANT_CHUNK (2ULL * PTLRPC_MAX_BRW_SIZE)#define GRANT_FOR_LLOG(obd) 16extern struct file_operations filter_per_export_stats_fops;extern struct file_operations filter_per_nid_stats_fops;/* Data stored per client in the last_rcvd file.  In le32 order. */struct filter_client_data {        __u8  fcd_uuid[40];        /* client UUID */        __u64 fcd_last_rcvd;       /* last completed transaction ID */        __u64 fcd_last_xid;        /* client RPC xid for the last transaction */        __u8  fcd_padding[LR_CLIENT_SIZE - 56];};/* Limit the returned fields marked valid to those that we actually might set */#define FILTER_VALID_FLAGS (OBD_MD_FLTYPE | OBD_MD_FLMODE | OBD_MD_FLGENER  |\                            OBD_MD_FLSIZE | OBD_MD_FLBLOCKS | OBD_MD_FLBLKSZ|\                            OBD_MD_FLATIME | OBD_MD_FLMTIME | OBD_MD_FLCTIME)struct filter_fid {        struct ll_fid   ff_fid;         /* ff_fid.f_type == file stripe number */        __u64           ff_objid;        __u64           ff_group;};/* per-client-per-object persistent state (LRU) */struct filter_mod_data {        struct list_head fmd_list;      /* linked to fed_mod_list */        __u64            fmd_id;        /* object being written to */        __u64            fmd_gr;        /* group being written to */        __u64            fmd_mactime_xid;/* xid highest {m,a,c}time setattr */        unsigned long    fmd_expire;    /* jiffies when it should expire */        int              fmd_refcount;  /* reference counter - list holds 1 */};#ifdef BGL_SUPPORT#define FILTER_FMD_MAX_NUM_DEFAULT 128 /* many active files per client on BGL */#else#define FILTER_FMD_MAX_NUM_DEFAULT  32#endif/* Client cache seconds */#define FILTER_FMD_MAX_AGE_DEFAULT ((obd_timeout + 10) * HZ)struct filter_mod_data *filter_fmd_find(struct obd_export *exp,                                        obd_id objid, obd_gr group);struct filter_mod_data *filter_fmd_get(struct obd_export *exp,                                       obd_id objid, obd_gr group);void filter_fmd_put(struct obd_export *exp, struct filter_mod_data *fmd);void filter_fmd_expire(struct obd_export *exp);enum {        LPROC_FILTER_READ_BYTES = 0,        LPROC_FILTER_WRITE_BYTES = 1,        LPROC_FILTER_LAST,};//#define FILTER_MAX_CACHE_SIZE (32 * 1024 * 1024) /* was OBD_OBJECT_EOF */#define FILTER_MAX_CACHE_SIZE OBD_OBJECT_EOF/* We have to pass a 'created' array to fsfilt_map_inode_pages() which we * then ignore.  So we pre-allocate one that everyone can use... */#define OBDFILTER_CREATED_SCRATCHPAD_ENTRIES 1024extern int *obdfilter_created_scratchpad;/* filter.c */void f_dput(struct dentry *);struct dentry *filter_fid2dentry(struct obd_device *, struct dentry *dir,                                 obd_gr group, obd_id id);struct dentry *__filter_oa2dentry(struct obd_device *obd, struct obdo *oa,                                  const char *what, int quiet);#define filter_oa2dentry(obd, oa) __filter_oa2dentry(obd, oa, __FUNCTION__, 0)int filter_finish_transno(struct obd_export *, struct obd_trans_info *, int rc,                          int force_sync);__u64 filter_next_id(struct filter_obd *, struct obdo *);__u64 filter_last_id(struct filter_obd *, obd_gr group);int filter_update_fidea(struct obd_export *exp, struct inode *inode,                        void *handle, struct obdo *oa);int filter_update_server_data(struct obd_device *, struct file *,                              struct lr_server_data *, int force_sync);int filter_update_last_objid(struct obd_device *, obd_gr, int force_sync);int filter_common_setup(struct obd_device *, obd_count len, void *buf,                        void *option);int filter_destroy(struct obd_export *exp, struct obdo *oa,                   struct lov_stripe_md *md, struct obd_trans_info *,                   struct obd_export *);int filter_setattr_internal(struct obd_export *exp, struct dentry *dentry,                            struct obdo *oa, struct obd_trans_info *oti);int filter_setattr(struct obd_export *exp, struct obd_info *oinfo,                   struct obd_trans_info *oti);int filter_recreate(struct obd_device *obd, struct obdo *oa);struct dentry *filter_create_object(struct obd_device *obd, struct obdo *oa);/* filter_lvb.c */extern struct ldlm_valblock_ops filter_lvbo;/* filter_io.c */int filter_preprw(int cmd, struct obd_export *, struct obdo *, int objcount,                  struct obd_ioobj *, int niocount, struct niobuf_remote *,                  struct niobuf_local *, struct obd_trans_info *);int filter_commitrw(int cmd, struct obd_export *, struct obdo *, int objcount,                    struct obd_ioobj *, int niocount, struct niobuf_local *,                    struct obd_trans_info *, int rc);int filter_brw(int cmd, struct obd_export *, struct obd_info *oinfo,               obd_count oa_bufs, struct brw_page *pga, struct obd_trans_info *);void flip_into_page_cache(struct inode *inode, struct page *new_page);/* filter_io_*.c */struct filter_iobuf;int filter_commitrw_write(struct obd_export *exp, struct obdo *oa, int objcount,                          struct obd_ioobj *obj, int niocount,                          struct niobuf_local *res, struct obd_trans_info *oti,                          int rc);obd_size filter_grant_space_left(struct obd_export *exp);long filter_grant(struct obd_export *exp, obd_size current_grant,                  obd_size want, obd_size fs_space_left);void filter_grant_commit(struct obd_export *exp, int niocount,                         struct niobuf_local *res);struct filter_iobuf *filter_alloc_iobuf(struct filter_obd *, int rw,                                        int num_pages);void filter_free_iobuf(struct filter_iobuf *iobuf);int filter_iobuf_add_page(struct obd_device *obd, struct filter_iobuf *iobuf,                          struct inode *inode, struct page *page);void *filter_iobuf_get(struct filter_obd *filter, struct obd_trans_info *oti);void filter_iobuf_put(struct filter_obd *filter, struct filter_iobuf *iobuf,                      struct obd_trans_info *oti);int filter_direct_io(int rw, struct dentry *dchild, struct filter_iobuf *iobuf,                     struct obd_export *exp, struct iattr *attr,                     struct obd_trans_info *oti, void **wait_handle);int filter_clear_truncated_page(struct inode *inode);/* filter_log.c */struct ost_filterdata {        __u32  ofd_epoch;};int filter_log_sz_change(struct llog_handle *cathandle,                         struct ll_fid *mds_fid,                         __u32 io_epoch,                         struct llog_cookie *logcookie,                         struct inode *inode);//int filter_get_catalog(struct obd_device *);void filter_cancel_cookies_cb(struct obd_device *obd, __u64 transno,                              void *cb_data, int error);int filter_recov_log_mds_ost_cb(struct llog_handle *llh,                               struct llog_rec_hdr *rec, void *data);#ifdef LPROCFSvoid filter_tally(struct obd_export *exp, struct page **pages, int nr_pages,                  unsigned long *blocks, int blocks_per_page, int wr);int lproc_filter_attach_seqstat(struct obd_device *dev);void lprocfs_filter_init_vars(struct lprocfs_static_vars *lvars);#elsestatic inline void filter_tally(struct obd_export *exp, struct page **pages,                                int nr_pages, unsigned long *blocks,                                int blocks_per_page, int wr) {}static inline int lproc_filter_attach_seqstat(struct obd_device *dev) {}static void lprocfs_filter_init_vars(struct lprocfs_static_vars *lvars){        memset(lvars, 0, sizeof(*lvars));}#endif/* Quota stuff */extern quota_interface_t *filter_quota_interface_ref;#endif /* _FILTER_INTERNAL_H */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?