-/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
- * vim:expandtab:shiftwidth=8:tabstop=8:
- *
+/*
* GPL HEADER START
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#define LOCK_INODE_MUTEX_PARENT(inode) LOCK_INODE_MUTEX(inode)
#endif /* HAVE_INODE_I_MUTEX */
-#ifdef HAVE_SEQ_LOCK
-#define LL_SEQ_LOCK(seq) cfs_mutex_lock(&(seq)->lock)
-#define LL_SEQ_UNLOCK(seq) cfs_mutex_unlock(&(seq)->lock)
-#else
-#define LL_SEQ_LOCK(seq) cfs_down(&(seq)->sem)
-#define LL_SEQ_UNLOCK(seq) cfs_up(&(seq)->sem)
-#endif
-
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,15)
#define d_child d_u.d_child
#define d_rcu d_u.d_rcu
#define set_page_private(page, v) ((page)->private = (v))
#endif
-#define lock_dentry(___dentry) cfs_spin_lock(&(___dentry)->d_lock)
-#define unlock_dentry(___dentry) cfs_spin_unlock(&(___dentry)->d_lock)
-
#define ll_kernel_locked() kernel_locked()
/*
#include <linux/proc_fs.h>
-#if !defined(HAVE_D_REHASH_COND) && defined(HAVE___D_REHASH)
-#define d_rehash_cond(dentry, lock) __d_rehash(dentry, lock)
-extern void __d_rehash(struct dentry *dentry, int lock);
-#endif
-
-#ifdef HAVE_CAN_SLEEP_ARG
-#define ll_flock_lock_file_wait(file, lock, can_sleep) \
- flock_lock_file_wait(file, lock, can_sleep)
-#else
-#define ll_flock_lock_file_wait(file, lock, can_sleep) \
- flock_lock_file_wait(file, lock)
-#endif
-
#define CheckWriteback(page, cmd) \
((!PageWriteback(page) && (cmd & OBD_BRW_READ)) || \
(PageWriteback(page) && (cmd & OBD_BRW_WRITE)))
vfs_symlink(dir, dentry, path)
#endif
-#define ll_set_dflags(dentry, flags) do { \
- cfs_spin_lock(&dentry->d_lock); \
- dentry->d_flags |= flags; \
- cfs_spin_unlock(&dentry->d_lock); \
- } while(0)
#endif
#ifndef container_of
#define LASSERT_I_ALLOC_SEM_READ_LOCKED(i) LASSERT(down_write_trylock(&(i)->i_alloc_sem) == 0)
#include <linux/mpage.h> /* for generic_writepages */
-#ifndef HAVE_FILEMAP_FDATAWRITE_RANGE
-#include <linux/backing-dev.h> /* for mapping->backing_dev_info */
-static inline int filemap_fdatawrite_range(struct address_space *mapping,
- loff_t start, loff_t end)
-{
- int rc;
- struct writeback_control wbc = {
- .sync_mode = WB_SYNC_ALL,
- .nr_to_write = (end - start + PAGE_SIZE - 1) >> PAGE_SHIFT,
- };
-
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18)
- wbc.range_start = start;
- wbc.range_end = end;
-#else
- wbc.start = start;
- wbc.end = end;
-#endif
-
-#ifdef HAVE_MAPPING_CAP_WRITEBACK_DIRTY
- if (!mapping_cap_writeback_dirty(mapping))
- rc = 0;
-#else
- if (mapping->backing_dev_info->memory_backed)
- rc = 0;
-#endif
- /* do_writepages() */
- else if (mapping->a_ops->writepages)
- rc = mapping->a_ops->writepages(mapping, &wbc);
- else
- rc = generic_writepages(mapping, &wbc);
- return rc;
-}
-#else
-int filemap_fdatawrite_range(struct address_space *mapping,
- loff_t start, loff_t end);
-#endif /* HAVE_FILEMAP_FDATAWRITE_RANGE */
#ifndef HAVE_ATOMIC_MNT_COUNT
static inline unsigned int mnt_get_count(struct vfsmount *mnt)
#define ll_do_statfs(sb, sfs) (sb)->s_op->statfs((sb), (sfs))
#endif
-#ifndef HAVE_SB_TIME_GRAN
-#ifndef HAVE_S_TIME_GRAN
-#error Need s_time_gran patch!
-#endif
-static inline u32 get_sb_time_gran(struct super_block *sb)
-{
- return sb->s_time_gran;
-}
-#endif
-
#ifdef HAVE_RW_TREE_LOCK
#define TREE_READ_LOCK_IRQ(mapping) read_lock_irq(&(mapping)->tree_lock)
#define TREE_READ_UNLOCK_IRQ(mapping) read_unlock_irq(&(mapping)->tree_lock)
#define ll_crypto_hash_init(desc) crypto_hash_init(desc)
#define ll_crypto_hash_update(desc, sl, bytes) crypto_hash_update(desc, sl, bytes)
#define ll_crypto_hash_final(desc, out) crypto_hash_final(desc, out)
-#define ll_crypto_alloc_blkcipher(name, type, mask) \
- crypto_alloc_blkcipher(name ,type, mask)
#define ll_crypto_blkcipher_setkey(tfm, key, keylen) \
crypto_blkcipher_setkey(tfm, key, keylen)
#define ll_crypto_blkcipher_set_iv(tfm, src, len) \
#define ll_crypto_blkcipher_decrypt_iv(desc, dst, src, bytes) \
crypto_blkcipher_decrypt_iv(desc, dst, src, bytes)
+static inline
+struct ll_crypto_cipher *ll_crypto_alloc_blkcipher(const char *name,
+ u32 type, u32 mask)
+{
+ struct ll_crypto_cipher *rtn = crypto_alloc_blkcipher(name, type, mask);
+
+ return (rtn == NULL ? ERR_PTR(-ENOMEM) : rtn);
+}
+
static inline int ll_crypto_hmac(struct ll_crypto_hash *tfm,
u8 *key, unsigned int *keylen,
struct scatterlist *sg,
struct ll_crypto_cipher *ll_crypto_alloc_blkcipher(const char * algname,
u32 type, u32 mask)
{
- char buf[CRYPTO_MAX_ALG_NAME + 1];
- const char *pan = algname;
- u32 flag = 0;
-
- if (strncmp("cbc(", algname, 4) == 0)
- flag |= CRYPTO_TFM_MODE_CBC;
- else if (strncmp("ecb(", algname, 4) == 0)
- flag |= CRYPTO_TFM_MODE_ECB;
- if (flag) {
- char *vp = strnchr(algname, CRYPTO_MAX_ALG_NAME, ')');
- if (vp) {
- memcpy(buf, algname + 4, vp - algname - 4);
- buf[vp - algname - 4] = '\0';
- pan = buf;
- } else {
- flag = 0;
- }
- }
- return crypto_alloc_tfm(pan, flag);
+ struct ll_crypto_cipher *rtn;
+ char buf[CRYPTO_MAX_ALG_NAME + 1];
+ const char *pan = algname;
+ u32 flag = 0;
+
+ if (strncmp("cbc(", algname, 4) == 0)
+ flag |= CRYPTO_TFM_MODE_CBC;
+ else if (strncmp("ecb(", algname, 4) == 0)
+ flag |= CRYPTO_TFM_MODE_ECB;
+ if (flag) {
+ char *vp = strnchr(algname, CRYPTO_MAX_ALG_NAME, ')');
+ if (vp) {
+ memcpy(buf, algname + 4, vp - algname - 4);
+ buf[vp - algname - 4] = '\0';
+ pan = buf;
+ } else {
+ flag = 0;
+ }
+ }
+ rtn = crypto_alloc_tfm(pan, flag);
+ return (rtn == NULL ? ERR_PTR(-ENOMEM) : rtn);
}
static inline
#define ll_add_to_page_cache_lru(pg, mapping, off, gfp) \
add_to_page_cache(pg, mapping, off, gfp)
#define ll_pagevec_init(pv, cold) pagevec_init(&lru_pvec, cold);
-#define ll_pagevec_add(pv, pg) pagevec_add(pv, pg)
+#define ll_pagevec_add(pv, pg) \
+({ \
+ int __ret; \
+ \
+ page_cache_get(pg); \
+ __ret = pagevec_add(pv, pg); \
+})
#define ll_pagevec_lru_add_file(pv) pagevec_lru_add_file(pv)
#endif
# define TIMES_SET_FLAGS (ATTR_MTIME_SET | ATTR_ATIME_SET)
#endif
+#ifndef HAVE_SELINUX_IS_ENABLED
+static inline bool selinux_is_enabled(void)
+{
+ return 0;
+}
+#endif
+
#endif /* __KERNEL__ */
#endif /* _COMPAT25_H */