static inline void binject_mark_bio_write(struct bio *bio)
{
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35)
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 35)
bio->bi_rw |= REQ_WRITE;
#else
bio->bi_rw |= (1 << BIO_RW);
}
#endif
-static inline struct kmem_cache *binject_create_slab(const char *name,
- size_t obj_size)
-{
+static inline struct kmem_cache *
+binject_create_slab(const char *name, size_t obj_size, unsigned long flags,
#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 26)
- return kmem_cache_create(name, obj_size, 0, 0, NULL);
+ void (*init_once)(void *))
+{
+ return kmem_cache_create(name, obj_size, 0, flags, NULL);
#else
- return kmem_cache_create(name, obj_size, 0, 0, NULL, NULL);
+#define KCOMPAT_OLD_SLAB
+ void (*init_once)(void *, kmem_cache_t *, unsigned long))
+{
+ return kmem_cache_create(name, obj_size, 0, flags, init_once, NULL);
#endif
}
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35)
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 35)
#define B_REQ_WRITE REQ_WRITE
#define B_REQ_SYNC REQ_SYNC
#define B_REQ_UNPLUG REQ_UNPLUG
#define B_REQ_FAILFAST_DRIVER REQ_FAILFAST_DRIVER
#define B_REQ_DISCARD REQ_DISCARD
#define B_REQ_FLUSH REQ_FLUSH
+#elif LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 34)
+#define B_REQ_WRITE (1 << BIO_RW)
+#define B_REQ_SYNC (1 << BIO_RW_SYNCIO)
+#define B_REQ_UNPLUG (1 << BIO_RW_UNPLUG)
+#define B_REQ_NOIDLE (1 << BIO_RW_NOIDLE)
+#define B_REQ_HARDBARRIER (1 << BIO_RW_BARRIER)
+#define B_REQ_META (1 << BIO_RW_META)
+#define B_REQ_RAHEAD (1 << BIO_RW_AHEAD)
+#define B_REQ_FAILFAST_DEV (1 << BIO_RW_FAILFAST_DEV)
+#define B_REQ_FAILFAST_TRANSPORT (1 << BIO_RW_FAILFAST_TRANSPORT)
+#define B_REQ_FAILFAST_DRIVER (1 << BIO_RW_FAILFAST_DRIVER)
+#define B_REQ_DISCARD (1 << BIO_RW_DISCARD)
+#define B_REQ_FLUSH 0
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 18)
#define B_REQ_WRITE (1 << BIO_RW)
#define B_REQ_SYNC (1 << BIO_RW_SYNC)