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 + -
显示快捷键?