X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Finclude%2Fliblustre.h;h=dc339a419835b6494e467438f1b8759bb622d305;hb=a8209f8c79f3b037c6dc47ccb9eb5f0fcf4ffe78;hp=c99e6a5e5e528270d2ebdaf96a0e9d3108dadd0a;hpb=89f9a5bced24ecb7c84040a1ed88dcef4384f7c6;p=fs%2Flustre-release.git diff --git a/lustre/include/liblustre.h b/lustre/include/liblustre.h index c99e6a5..dc339a4 100644 --- a/lustre/include/liblustre.h +++ b/lustre/include/liblustre.h @@ -25,13 +25,18 @@ #define LIBLUSTRE_H__ #include -#ifndef __CYGWIN__ -#include -#include -#else -#include -#include "ioctl.h" +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_ASM_PAGE_H +# include #endif +#ifdef HAVE_SYS_USER_H +# include +#endif + +#include "ioctl.h" + #include #include #include @@ -65,6 +70,62 @@ typedef unsigned short umode_t; #define smp_processor_id() 0 #endif +#ifndef smp_mb +#define smp_mb() do {} while (0) +#endif + +#ifndef might_sleep_if +#define might_sleep_if(cond) do {} while (0) +#endif + +#ifndef might_sleep +#define might_sleep() do {} while (0) +#endif + +#ifndef signal_pending +#define signal_pending(proc) 0 +#endif + +#ifndef MAY_EXEC +#define MAY_EXEC 1 +#endif + +#ifndef MAY_WRITE +#define MAY_WRITE 2 +#endif + +#ifndef MAY_READ +#define MAY_READ 4 +#endif + +#ifndef MAY_APPEND +#define MAY_APPEND 8 +#endif + +#ifndef FMODE_READ +#define FMODE_READ 1 +#endif + +#ifndef FMODE_WRITE +#define FMODE_WRITE 2 +#endif + +#ifndef FMODE_EXEC +#define FMODE_EXEC 4 +#endif + +#define S_IRWXUGO (S_IRWXU|S_IRWXG|S_IRWXO) +#define S_IALLUGO (S_ISUID|S_ISGID|S_ISVTX|S_IRWXUGO) +#define S_IRUGO (S_IRUSR|S_IRGRP|S_IROTH) +#define S_IWUGO (S_IWUSR|S_IWGRP|S_IWOTH) +#define S_IXUGO (S_IXUSR|S_IXGRP|S_IXOTH) + +#define LBUG() \ + do { \ + printf("!!!LBUG at %s:%d\n", __FILE__, __LINE__); \ + sleep(1000000); \ + } while (0) + /* always adopt 2.5 definitions */ #define KERNEL_VERSION(a,b,c) ((a)*100+(b)*10+c) #define LINUX_VERSION_CODE (2*200+5*10+0) @@ -117,7 +178,7 @@ static inline void *kmalloc(int size, int prot) typedef struct { void *cwd; -}mm_segment_t; +} mm_segment_t; typedef int (read_proc_t)(char *page, char **start, off_t off, int count, int *eof, void *data); @@ -176,6 +237,16 @@ static __inline__ int test_bit(int nr, long * addr) return ((mask & *addr) != 0); } +static __inline__ int test_and_set_bit(int nr, long * addr) +{ + int res; + + res = test_bit(nr, addr); + set_bit(nr, addr); + + return res; +} + static __inline__ int ext2_set_bit(int nr, void *addr) { return set_bit(nr, (long*)addr); @@ -494,6 +565,8 @@ struct lustre_intent_data { void *it_data; int it_lock_mode; int it_int_flags; + void *it_key; + int it_key_size; }; #define LUSTRE_IT(it) ((struct lustre_intent_data *)((it)->d.fs_data)) @@ -525,6 +598,78 @@ struct semaphore { int count; }; +struct crypto_tfm; + +struct scatterlist { + struct page *page; + unsigned int offset; + __u32 dma_address; + unsigned int length; +}; + +struct cipher_tfm { + void *cit_iv; + unsigned int cit_ivsize; + __u32 cit_mode; + int (*cit_setkey)(struct crypto_tfm *tfm, + const __u8 *key, unsigned int keylen); + int (*cit_encrypt)(struct crypto_tfm *tfm, + struct scatterlist *dst, + struct scatterlist *src, + unsigned int nbytes); + int (*cit_encrypt_iv)(struct crypto_tfm *tfm, + struct scatterlist *dst, + struct scatterlist *src, + unsigned int nbytes, __u8 *iv); + int (*cit_decrypt)(struct crypto_tfm *tfm, + struct scatterlist *dst, + struct scatterlist *src, + unsigned int nbytes); + int (*cit_decrypt_iv)(struct crypto_tfm *tfm, + struct scatterlist *dst, + struct scatterlist *src, + unsigned int nbytes, __u8 *iv); + void (*cit_xor_block)(__u8 *dst, const __u8 *src); +}; + +struct digest_tfm { + void (*dit_init)(struct crypto_tfm *tfm); + void (*dit_update)(struct crypto_tfm *tfm, + struct scatterlist *sg, unsigned int nsg); + void (*dit_update_kernel)(struct crypto_tfm *tfm, + const void *data, size_t count); + void (*dit_final)(struct crypto_tfm *tfm, __u8 *out); + void (*dit_digest)(struct crypto_tfm *tfm, struct scatterlist *sg, + unsigned int nsg, __u8 *out); + int (*dit_setkey)(struct crypto_tfm *tfm, + const __u8 *key, unsigned int keylen); +#ifdef CONFIG_CRYPTO_HMAC + void *dit_hmac_block; +#endif +}; + +struct compress_tfm { + int (*cot_compress)(struct crypto_tfm *tfm, + const __u8 *src, unsigned int slen, + __u8 *dst, unsigned int *dlen); + int (*cot_decompress)(struct crypto_tfm *tfm, + const __u8 *src, unsigned int slen, + __u8 *dst, unsigned int *dlen); +}; + +struct crypto_tfm { + + __u32 crt_flags; + + union { + struct cipher_tfm cipher; + struct digest_tfm digest; + struct compress_tfm compress; + } crt_u; + + struct crypto_alg *__crt_alg; +}; + /* 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) @@ -534,16 +679,25 @@ struct semaphore { #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); } +struct rpc_pipe_msg { + struct list_head list; + void *data; + size_t len; + size_t copied; + int error; +}; typedef struct { - struct list_head sleepers; + struct list_head task_list; } wait_queue_head_t; typedef struct { @@ -573,6 +727,7 @@ struct task_struct { int ngroups; gid_t *groups; __u32 cap_effective; + __u32 pag; struct fs_struct __fs; }; @@ -590,15 +745,15 @@ static inline int capable(int cap) #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 add_wait_queue(q,p) do { list_add(&(q)->task_list, &(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 = LIST_HEAD_INIT(HEAD.sleepers) \ + .task_list = LIST_HEAD_INIT(HEAD.task_list) \ } -#define init_waitqueue_head(l) INIT_LIST_HEAD(&(l)->sleepers) +#define init_waitqueue_head(l) INIT_LIST_HEAD(&(l)->task_list) #define wake_up(l) do { int a; a++; } while (0) #define TASK_INTERRUPTIBLE 0 #define TASK_UNINTERRUPTIBLE 1 @@ -625,6 +780,7 @@ static inline int schedule_timeout(signed long t) } #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) @@ -694,6 +850,7 @@ typedef struct { volatile int counter; } atomic_t; #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, l) atomic_dec_and_test(a) #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) @@ -741,14 +898,6 @@ static inline int llog_cleanup_commit_master(int force) { return 0; } static inline void portals_run_lbug_upcall(char *file, const char *fn, const int l){} -#define LBUG() \ - do { \ - printf("!!!LBUG at %s:%d\n", __FILE__, __LINE__); \ - sleep(1000000); \ - } while (0) - - - /* completion */ struct completion { unsigned int done; @@ -786,5 +935,4 @@ int liblustre_wait_event(int timeout); #include #include - #endif