X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Finclude%2Fliblustre.h;h=36d44ccfba9eb989dac1874587d0f3cd789f07bd;hp=064ac80ef3e0962d4847fb128bedcfeff18caeba;hb=63de3bfeb1a127bbc8e47c0391c98029394ff411;hpb=2383ee45c2769848ac0ce4a7f01611c21f6ff650 diff --git a/lustre/include/liblustre.h b/lustre/include/liblustre.h index 064ac80..36d44cc 100644 --- a/lustre/include/liblustre.h +++ b/lustre/include/liblustre.h @@ -24,7 +24,6 @@ #ifndef LIBLUSTRE_H__ #define LIBLUSTRE_H__ -#include #include #ifndef __CYGWIN__ #include @@ -52,7 +51,7 @@ #define PAGE_SHIFT 12 #define PAGE_SIZE (1UL << PAGE_SHIFT) #define PAGE_MASK (~(PAGE_SIZE-1)) -#define loff_t __u64 +#define loff_t long long #define ERESTART 2001 typedef unsigned short umode_t; @@ -116,9 +115,6 @@ static inline void *kmalloc(int size, int prot) #define PTR_ERR(a) ((long)(a)) #define ERR_PTR(a) ((void*)((long)(a))) -#define capable(foo) 1 -#define CAP_SYS_ADMIN 1 - typedef struct { void *cwd; }mm_segment_t; @@ -130,19 +126,12 @@ struct file; /* forward ref */ typedef int (write_proc_t)(struct file *file, const char *buffer, unsigned long count, void *data); -# define le16_to_cpu(x) __le16_to_cpu(x) -# define cpu_to_le16(x) __cpu_to_le16(x) -# define le32_to_cpu(x) __le32_to_cpu(x) -# define cpu_to_le32(x) __cpu_to_le32(x) -# define le64_to_cpu(x) __le64_to_cpu(x) -# define cpu_to_le64(x) __cpu_to_le64(x) - #define NIPQUAD(addr) \ ((unsigned char *)&addr)[0], \ ((unsigned char *)&addr)[1], \ ((unsigned char *)&addr)[2], \ ((unsigned char *)&addr)[3] - + #if defined(__LITTLE_ENDIAN) #define HIPQUAD(addr) \ ((unsigned char *)&addr)[3], \ @@ -240,8 +229,18 @@ static inline int request_module(char *name) #define __MOD_DEC_USE_COUNT(m) do {} while (0) #define MOD_INC_USE_COUNT do {} while (0) #define MOD_DEC_USE_COUNT do {} while (0) -#define try_module_get __MOD_INC_USE_COUNT -#define module_put __MOD_DEC_USE_COUNT +static inline void __module_get(struct module *module) +{ +} + +static inline int try_module_get(struct module *module) +{ + return 1; +} + +static inline void module_put(struct module *module) +{ +} /* module initialization */ extern int init_obdclass(void); @@ -255,14 +254,15 @@ extern int echo_client_init(void); /* general stuff */ -#define jiffies 0 #define EXPORT_SYMBOL(S) -typedef int spinlock_t; +typedef struct { } spinlock_t; typedef __u64 kdev_t; -#define SPIN_LOCK_UNLOCKED 0 +#define SPIN_LOCK_UNLOCKED (spinlock_t) { } +#define LASSERT_SPIN_LOCKED(lock) do {} while(0) + static inline void spin_lock(spinlock_t *l) {return;} static inline void spin_unlock(spinlock_t *l) {return;} static inline void spin_lock_init(spinlock_t *l) {return;} @@ -294,14 +294,7 @@ static inline void spin_unlock_irqrestore(spinlock_t *a, unsigned long b) {} /* random */ -static inline void get_random_bytes(void *ptr, int size) -{ - int *p = (int *)ptr; - int i, count = size/sizeof(int); - - for (i = 0; i< count; i++) - *p++ = rand(); -} +void get_random_bytes(void *ptr, int size); /* memory */ @@ -351,14 +344,9 @@ static inline int kmem_cache_destroy(kmem_cache_t *a) #define kmem_cache_alloc(cache, prio) malloc(cache->size) #define kmem_cache_free(cache, obj) free(obj) -#define PAGE_CACHE_SIZE PAGE_SIZE -#define PAGE_CACHE_SHIFT 12 -#define PAGE_CACHE_MASK PAGE_MASK - -/* XXX - * for this moment, liblusre will not rely OST for non-page-aligned write - */ -#define LIBLUSTRE_HANDLE_UNALIGNED_PAGE +#define PAGE_CACHE_SIZE PAGE_SIZE +#define PAGE_CACHE_SHIFT PAGE_SHIFT +#define PAGE_CACHE_MASK PAGE_MASK struct page { void *addr; @@ -369,11 +357,13 @@ struct page { /* internally used by liblustre file i/o */ int _offset; int _count; -#ifdef LIBLUSTRE_HANDLE_UNALIGNED_PAGE - int _managed; -#endif }; +/* 2.4 defines */ +#define PAGE_LIST_ENTRY list +#define PAGE_LIST(page) ((page)->list) + +#define page_address(page) ((page)->addr) #define kmap(page) (page)->addr #define kunmap(a) do {} while (0) @@ -469,6 +459,7 @@ struct iattr { #define IT_GETXATTR 0x0040 #define IT_EXEC 0x0080 #define IT_PIN 0x0100 +#define IT_CHDIR 0x0200 #define IT_FL_LOCKED 0x0001 #define IT_FL_FOLLOWED 0x0002 /* set by vfs_follow_link */ @@ -521,14 +512,15 @@ struct semaphore { int count; }; -#define down(a) do {} while (0) -#define up(a) do {} while (0) -#define down_read(a) do {} while (0) -#define up_read(a) do {} while (0) -#define down_write(a) do {} while (0) -#define up_write(a) do {} while (0) -#define sema_init(a,b) do {} while (0) -#define init_rwsem(a) do {} while (0) +/* use the macro's argument to avoid unused warnings */ +#define down(a) do { (void)a; } while (0) +#define up(a) do { (void)a; } while (0) +#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) @@ -562,12 +554,23 @@ struct task_struct { int pid; int fsuid; int fsgid; + int max_groups; + int ngroups; + gid_t *groups; __u32 cap_effective; + + struct fs_struct __fs; }; extern struct task_struct *current; - -#define in_group_p(a) 0 /* FIXME */ +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) @@ -576,6 +579,10 @@ extern struct task_struct *current; #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 = LIST_HEAD_INIT(HEAD.sleepers) \ + } #define init_waitqueue_head(l) INIT_LIST_HEAD(&(l)->sleepers) #define wake_up(l) do { int a; a++; } while (0) #define TASK_INTERRUPTIBLE 0 @@ -612,6 +619,20 @@ static inline int schedule_timeout(signed long t) #define SIGNAL_MASK_ASSERT() #define KERN_INFO +#include +#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 time_after(a, b) ((long)(b) - (long)(a) < 0) +#define time_before(a, b) time_after(b,a) struct timer_list { struct list_head tl_list; @@ -644,13 +665,9 @@ static inline void del_timer(struct timer_list *l) free(l); } -#define time_after(a, b) \ -({ \ - 1; \ -}) - 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) @@ -666,6 +683,35 @@ typedef struct { volatile int counter; } atomic_t; #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 21 + +cap_t cap_get_proc(void); +int cap_get_flag(cap_t, cap_value_t, cap_flag_t, cap_flag_value_t *); + + + /* log related */ static inline int llog_init_commit_master(void) { return 0; } static inline int llog_cleanup_commit_master(int force) { return 0; }