#include <linux/fs_struct.h>
#include <linux/namei.h>
+#include <linux/bio.h>
#include <lustre_patchless_compat.h>
#ifdef HAVE_BVEC_ITER
#define bio_idx(bio) (bio->bi_iter.bi_idx)
#define bio_set_sector(bio, sector) (bio->bi_iter.bi_sector = sector)
+#define bvl_to_page(bvl) (bvl.bv_page)
#else
#define bio_idx(bio) (bio->bi_idx)
#define bio_set_sector(bio, sector) (bio->bi_sector = sector)
#ifndef HAVE_BIO_END_SECTOR
#define bio_end_sector(bio) (bio->bi_sector + bio_sectors(bio))
#endif
-#define bvec_iter_page(bvec, iter) (*bvec->bv_page)
+#define bvl_to_page(bvl) (bvl->bv_page)
#endif
#ifndef HAVE_BLK_QUEUE_MAX_SEGMENTS
return flag;
}
-#ifdef HAVE_VOID_MAKE_REQUEST_FN
-# define ll_mrf_ret void
-# define LL_MRF_RETURN(rc)
+#ifdef HAVE_QC_MAKE_REQUEST_FN
+# define ll_mrf_ret blk_qc_t
+# define LL_MRF_RETURN(rc) RETURN(BLK_QC_T_NONE)
#else
-# define ll_mrf_ret int
-# define LL_MRF_RETURN(rc) RETURN(rc)
+# ifdef HAVE_VOID_MAKE_REQUEST_FN
+# define ll_mrf_ret void
+# define LL_MRF_RETURN(rc)
+# else
+# define ll_mrf_ret int
+# define LL_MRF_RETURN(rc) RETURN(rc)
+# endif
#endif
#include <linux/fs.h>
#define SIZE_MAX (~(size_t)0)
#endif
+#ifdef HAVE_SECURITY_IINITSEC_CALLBACK
+# define ll_security_inode_init_security(inode, dir, name, value, len, \
+ initxattrs, dentry) \
+ security_inode_init_security(inode, dir, &((dentry)->d_name), \
+ initxattrs, dentry)
+#elif defined HAVE_SECURITY_IINITSEC_QSTR
+# define ll_security_inode_init_security(inode, dir, name, value, len, \
+ initxattrs, dentry) \
+ security_inode_init_security(inode, dir, &((dentry)->d_name), \
+ name, value, len)
+#else /* !HAVE_SECURITY_IINITSEC_CALLBACK && !HAVE_SECURITY_IINITSEC_QSTR */
+# define ll_security_inode_init_security(inode, dir, name, value, len, \
+ initxattrs, dentry) \
+ security_inode_init_security(inode, dir, name, value, len)
+#endif
+
+#ifndef bio_for_each_segment_all /* since kernel version 3.9 */
+#define bio_for_each_segment_all(bv, bio, it) bio_for_each_segment(bv, bio, it)
+#endif
+
#endif /* _LUSTRE_COMPAT_H */