liblustre.h

来自「lustre 1.6.5 source code」· C头文件 代码 · 共 907 行 · 第 1/2 页

H
907
字号
        unsigned int    ia_valid;        umode_t         ia_mode;        uid_t           ia_uid;        gid_t           ia_gid;        loff_t          ia_size;        time_t          ia_atime;        time_t          ia_mtime;        time_t          ia_ctime;        unsigned int    ia_attr_flags;};#define ll_iattr_struct iattr#define IT_OPEN     0x0001#define IT_CREAT    0x0002#define IT_READDIR  0x0004#define IT_GETATTR  0x0008#define IT_LOOKUP   0x0010#define IT_UNLINK   0x0020#define IT_GETXATTR 0x0040#define IT_EXEC     0x0080#define IT_PIN      0x0100#define IT_FL_LOCKED   0x0001#define IT_FL_FOLLOWED 0x0002 /* set by vfs_follow_link */#define INTENT_MAGIC 0x19620323struct lustre_intent_data {        int       it_disposition;        int       it_status;        __u64     it_lock_handle;        void     *it_data;        int       it_lock_mode;        int it_int_flags;};struct lookup_intent {        int     it_magic;        void    (*it_op_release)(struct lookup_intent *);        int     it_op;        int     it_flags;        int     it_create_mode;        union {                struct lustre_intent_data lustre;        } d;};static inline void intent_init(struct lookup_intent *it, int op, int flags){        memset(it, 0, sizeof(*it));        it->it_magic = INTENT_MAGIC;        it->it_op = op;        it->it_flags = flags;}struct dentry {        int d_count;};struct vfsmount {        void *pwd;};/* semaphores */struct rw_semaphore {        int count;};/* semaphores */struct semaphore {        int count;};/* use the macro's argument to avoid unused warnings */#define down(a) do { (void)a; } while (0)#define mutex_down(a)   down(a)#define up(a) do { (void)a; } while (0)#define mutex_up(a)     up(a)#define down_read(a) do { (void)a; } while (0)#define up_read(a) do { (void)a; } while (0)#define down_write(a) do { (void)a; } while (0)#define up_write(a) do { (void)a; } while (0)#define sema_init(a,b) do { (void)a; } while (0)#define init_rwsem(a) do { (void)a; } while (0)#define DECLARE_MUTEX(name)     \        struct semaphore name = { 1 }static inline void init_MUTEX (struct semaphore *sem){        sema_init(sem, 1);}static inline void init_MUTEX_LOCKED (struct semaphore *sem){        sema_init(sem, 0);}#define init_mutex(s)   init_MUTEX(s)typedef struct  {        struct list_head sleepers;} wait_queue_head_t;typedef struct  {        struct list_head sleeping;        void *process;} wait_queue_t;struct signal {        int signal;};struct task_struct {        int state;        struct signal pending;        char comm[32];        int pid;        int fsuid;        int fsgid;        int max_groups;        int ngroups;        gid_t *groups;        __u32 cap_effective;};typedef struct task_struct cfs_task_t;#define cfs_current()           current#define cfs_curproc_pid()       (current->pid)#define cfs_curproc_comm()      (current->comm)extern struct task_struct *current;int in_group_p(gid_t gid);static inline int capable(int cap){        if (current->cap_effective & (1 << cap))                return 1;        else                return 0;}#define set_current_state(foo) do { current->state = foo; } while (0)#define init_waitqueue_entry(q,p) do { (q)->process = p; } while (0)#define add_wait_queue(q,p) do {  list_add(&(q)->sleepers, &(p)->sleeping); } while (0)#define del_wait_queue(p) do { list_del(&(p)->sleeping); } while (0)#define remove_wait_queue(q,p) do { list_del(&(p)->sleeping); } while (0)#define DECLARE_WAIT_QUEUE_HEAD(HEAD)                           \        wait_queue_head_t HEAD = {                              \                .sleepers = CFS_LIST_HEAD_INIT(HEAD.sleepers)       \        }#define init_waitqueue_head(l) CFS_INIT_LIST_HEAD(&(l)->sleepers)#define wake_up(l) do { int a = 0; a++; } while (0)#define TASK_INTERRUPTIBLE 0#define TASK_UNINTERRUPTIBLE 1#define TASK_RUNNING 2#define wait_event_interruptible(wq, condition)                         \({                                                                      \        struct l_wait_info lwi;                                         \        int timeout = 100000000;/* for ever */                          \        int ret;                                                        \                                                                        \        lwi = LWI_TIMEOUT(timeout, NULL, NULL);                         \        ret = l_wait_event(NULL, condition, &lwi);                      \                                                                        \        ret;                                                            \})#define in_interrupt() (0)#define schedule() do {} while (0)static inline int schedule_timeout(signed long t){        return 0;}#define lock_kernel() do {} while (0)#define unlock_kernel() do {} while (0)#define daemonize(l) do {} while (0)#define sigfillset(l) do {} while (0)#define recalc_sigpending(l) do {} while (0)#define kernel_thread(l,m,n) LBUG()#define USERMODEHELPER(path, argv, envp) (0)#define SIGNAL_MASK_ASSERT()#define KERN_INFO#include <sys/time.h>#if HZ != 1#error "liblustre's jiffies currently expects HZ to be 1"#endif#define jiffies                                 \({                                              \        unsigned long _ret = 0;                 \        struct timeval tv;                      \        if (gettimeofday(&tv, NULL) == 0)       \                _ret = tv.tv_sec;               \        _ret;                                   \})#define get_jiffies_64()  (__u64)jiffies#define time_after(a, b) ((long)(b) - (long)(a) < 0)#define time_before(a, b) time_after(b,a)#define time_after_eq(a,b)      ((long)(a) - (long)(b) >= 0)struct timer_list {        struct list_head tl_list;        void (*function)(unsigned long unused);        unsigned long data;        long expires;};static inline int timer_pending(struct timer_list *l){        if (time_after(l->expires, jiffies))                return 1;        else                return 0;}static inline int init_timer(struct timer_list *l){        CFS_INIT_LIST_HEAD(&l->tl_list);        return 0;}static inline void mod_timer(struct timer_list *l, int thetime){        l->expires = thetime;}static inline void del_timer(struct timer_list *l){        free(l);}typedef struct { volatile int counter; } atomic_t;#define ATOMIC_INIT(i) { i }#define atomic_read(a) ((a)->counter)#define atomic_set(a,b) do {(a)->counter = b; } while (0)#define atomic_dec_and_test(a) ((--((a)->counter)) == 0)#define atomic_dec_and_lock(a,b) ((--((a)->counter)) == 0)#define atomic_inc(a)  (((a)->counter)++)#define atomic_dec(a)  do { (a)->counter--; } while (0)#define atomic_add(b,a)  do {(a)->counter += b;} while (0)#define atomic_add_return(n,a) ((a)->counter += n)#define atomic_inc_return(a) atomic_add_return(1,a)#define atomic_sub(b,a)  do {(a)->counter -= b;} while (0)#define atomic_sub_return(n,a) ((a)->counter -= n)#define atomic_dec_return(a)  atomic_sub_return(1,a)#ifndef likely#define likely(exp) (exp)#endif#ifndef unlikely#define unlikely(exp) (exp)#endif/* FIXME sys/capability will finally included linux/fs.h thus * cause numerous trouble on x86-64. as temporary solution for * build broken at cary, we copy definition we need from capability.h * FIXME */struct _cap_struct;typedef struct _cap_struct *cap_t;typedef int cap_value_t;typedef enum {    CAP_EFFECTIVE=0,    CAP_PERMITTED=1,    CAP_INHERITABLE=2} cap_flag_t;typedef enum {    CAP_CLEAR=0,    CAP_SET=1} cap_flag_value_t;#define CAP_DAC_OVERRIDE        1#define CAP_DAC_READ_SEARCH     2#define CAP_FOWNER              3#define CAP_FSETID              4#define CAP_SYS_ADMIN          21cap_t   cap_get_proc(void);int     cap_get_flag(cap_t, cap_value_t, cap_flag_t, cap_flag_value_t *);static inline void libcfs_run_lbug_upcall(char *file, const char *fn,                                           const int l){}/* completion */struct completion {        unsigned int done;        cfs_waitq_t wait;};#define COMPLETION_INITIALIZER(work) \        { 0, __WAIT_QUEUE_HEAD_INITIALIZER((work).wait) }#define DECLARE_COMPLETION(work) \        struct completion work = COMPLETION_INITIALIZER(work)#define INIT_COMPLETION(x)      ((x).done = 0)static inline void init_completion(struct completion *x){        x->done = 0;        init_waitqueue_head(&x->wait);}struct liblustre_wait_callback {        struct list_head    llwc_list;        const char         *llwc_name;        int               (*llwc_fn)(void *arg);        void               *llwc_arg;};void *liblustre_register_wait_callback(const char *name,                                       int (*fn)(void *arg), void *arg);void liblustre_deregister_wait_callback(void *notifier);int liblustre_wait_event(int timeout);void *liblustre_register_idle_callback(const char *name,                                       int (*fn)(void *arg), void *arg);void liblustre_deregister_idle_callback(void *notifier);void liblustre_wait_idle(void);/* flock related */struct nfs_lock_info {        __u32             state;        __u32             flags;        void            *host;};typedef struct file_lock {        struct file_lock *fl_next;      /* singly linked list for this inode  */        struct list_head fl_link;       /* doubly linked list of all locks */        struct list_head fl_block;      /* circular list of blocked processes */        void *fl_owner;        unsigned int fl_pid;        cfs_waitq_t fl_wait;        struct file *fl_file;        unsigned char fl_flags;        unsigned char fl_type;        loff_t fl_start;        loff_t fl_end;        void (*fl_notify)(struct file_lock *);  /* unblock callback */        void (*fl_insert)(struct file_lock *);  /* lock insertion callback */        void (*fl_remove)(struct file_lock *);  /* lock removal callback */        void *fl_fasync; /* for lease break notifications */        unsigned long fl_break_time;    /* for nonblocking lease breaks */        union {                struct nfs_lock_info    nfs_fl;        } fl_u;} cfs_flock_t;#define cfs_flock_type(fl)                  ((fl)->fl_type)#define cfs_flock_set_type(fl, type)        do { (fl)->fl_type = (type); } while(0)#define cfs_flock_pid(fl)                   ((fl)->fl_pid)#define cfs_flock_set_pid(fl, pid)          do { (fl)->fl_pid = (pid); } while(0)#define cfs_flock_start(fl)                 ((fl)->fl_start)#define cfs_flock_set_start(fl, start)      do { (fl)->fl_start = (start); } while(0)#define cfs_flock_end(fl)                   ((fl)->fl_end)#define cfs_flock_set_end(fl, end)          do { (fl)->fl_end = (end); } while(0)#ifndef OFFSET_MAX#define INT_LIMIT(x)    (~((x)1 << (sizeof(x)*8 - 1)))#define OFFSET_MAX      INT_LIMIT(loff_t)#endif/* XXX: defined in kernel */#define FL_POSIX        1#define FL_SLEEP        128/* quota */#define QUOTA_OK 0#define NO_QUOTA 1/* ACL */struct posix_acl_entry {        short                   e_tag;        unsigned short          e_perm;        unsigned int            e_id;};struct posix_acl {        atomic_t                a_refcount;        unsigned int            a_count;        struct posix_acl_entry  a_entries[0];};typedef struct {        __u16           e_tag;        __u16           e_perm;        __u32           e_id;} xattr_acl_entry;typedef struct {        __u32           a_version;        xattr_acl_entry a_entries[0];} xattr_acl_header;static inline size_t xattr_acl_size(int count){        return sizeof(xattr_acl_header) + count * sizeof(xattr_acl_entry);}static inlinestruct posix_acl * posix_acl_from_xattr(const void *value, size_t size){        return NULL;}static inlineint posix_acl_valid(const struct posix_acl *acl){        return 0;}static inlinevoid posix_acl_release(struct posix_acl *acl){}#ifdef LIBLUSTRE_POSIX_ACL #ifndef posix_acl_xattr_entry   #define posix_acl_xattr_entry xattr_acl_entry #endif #ifndef posix_acl_xattr_header   #define posix_acl_xattr_header xattr_acl_header #endif #ifndef posix_acl_xattr_size  #define posix_acl_xattr_size(entry) xattr_acl_size(entry) #endif #ifndef CONFIG_FS_POSIX_ACL  #define CONFIG_FS_POSIX_ACL 1 #endif#endif#ifndef ENOTSUPP#define ENOTSUPP ENOTSUP#endif#include <obd_support.h>#include <lustre/lustre_idl.h>#include <lustre_lib.h>#include <lustre_import.h>#include <lustre_export.h>#include <lustre_net.h>#endif

⌨️ 快捷键说明

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