the kernel])]) # i386
])
+# 2.6.22 lost second parameter for invalidate_bdev
+AC_DEFUN([LC_INVALIDATE_BDEV_2ARG],
+[AC_MSG_CHECKING([if invalidate_bdev has second argument])
+LB_LINUX_TRY_COMPILE([
+ #include <linux/buffer_head.h>
+],[
+ invalidate_bdev(NULL,0);
+],[
+ AC_MSG_RESULT([yes])
+ AC_DEFINE(HAVE_INVALIDATE_BDEV_2ARG, 1,
+ [invalidate_bdev has second argument])
+],[
+ AC_MSG_RESULT([no])
+])
+])
+
+# 2.6.23 have return type 'void' for unregister_blkdev
+AC_DEFUN([LC_UNREGISTER_BLKDEV_RETURN_INT],
+[AC_MSG_CHECKING([if unregister_blkdev return int])
+LB_LINUX_TRY_COMPILE([
+ #include <linux/fs.h>
+],[
+ int i = unregister_blkdev(0,NULL);
+],[
+ AC_MSG_RESULT([yes])
+ AC_DEFINE(HAVE_UNREGISTER_BLKDEV_RETURN_INT, 1,
+ [unregister_blkdev return int])
+],[
+ AC_MSG_RESULT([no])
+])
+])
+
+# 2.6.23 change .sendfile to .splice_read
+AC_DEFUN([LC_KERNEL_SPLICE_READ],
+[AC_MSG_CHECKING([if kernel has .splice_read])
+LB_LINUX_TRY_COMPILE([
+ #include <linux/fs.h>
+],[
+ struct file_operations file;
+
+ file.splice_read = NULL;
+], [
+ AC_MSG_RESULT([yes])
+ AC_DEFINE(HAVE_KERNEL_SPLICE_READ, 1,
+ [kernel has .slice_read])
+],[
+ AC_MSG_RESULT([no])
+])
+])
+
+# 2.6.23 extract nfs export related data into exportfs.h
+AC_DEFUN([LC_HAVE_EXPORTFS_H],
+[
+tmpfl="$CFLAGS"
+CFLAGS="$CFLAGS -I$LINUX_OBJ/include"
+AC_CHECK_HEADERS([linux/exportfs.h])
+CFLAGS="$tmpfl"
+])
+
#
# LC_VFS_INTENT_PATCHES
#
LC_CANCEL_DIRTY_PAGE
# raid5-zerocopy patch
- LC_PAGE_CONSTANT])
+ LC_PAGE_CONSTANT
+
+ # 2.6.22
+ LC_INVALIDATE_BDEV_2ARG
+ # 2.6.23
+ LC_UNREGISTER_BLKDEV_RETURN_INT
+ LC_KERNEL_SPLICE_READ
+ LC_HAVE_EXPORTFS_H
+])
#
# LC_CONFIG_CLIENT_SERVER
#define TREE_READ_UNLOCK_IRQ(mapping) spin_unlock_irq(&(mapping)->tree_lock)
#endif
+#ifdef HAVE_UNREGISTER_BLKDEV_RETURN_INT
+#define ll_unregister_blkdev(a,b) unregister_blkdev((a),(b))
+#else
+static inline
+int ll_unregister_blkdev(unsigned int dev, const char *name)
+{
+ unregister_blkdev(dev, name);
+ return 0;
+}
+#endif
+
+#ifdef HAVE_INVALIDATE_BDEV_2ARG
+#define ll_invalidate_bdev(a,b) invalidate_bdev((a),(b))
+#else
+#define ll_invalidate_bdev(a,b) invalidate_bdev((a))
+#endif
+
#endif /* __KERNEL__ */
#endif /* _COMPAT25_H */
*
*/
+#ifndef AUTOCONF_INCLUDED
#include <linux/config.h>
+#endif
#include <linux/module.h>
#include <linux/sched.h>
lo->lo_offset = 0;
lo->lo_sizelimit = 0;
lo->lo_flags = 0;
- invalidate_bdev(bdev, 0);
+ ll_invalidate_bdev(bdev, 0);
set_capacity(disks[lo->lo_number], 0);
bd_set_size(bdev, 0);
mapping_set_gfp_mask(filp->f_mapping, gfp);
blk_put_queue(loop_dev[i].lo_queue);
put_disk(disks[i]);
}
- if (unregister_blkdev(lloop_major, "lloop"))
+ if (ll_unregister_blkdev(lloop_major, "lloop"))
CWARN("lloop: cannot unregister blkdev\n");
kfree(disks);