summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorHajo Möller <[email protected]>2016-10-26 19:30:43 +0200
committerBrian Behlendorf <[email protected]>2016-10-26 10:30:43 -0700
commite02aaf17f15ad274fa1f24c9c826f1477911ea3f (patch)
tree3190cb161bb2665f1e4e647d72b0ca98c7d56130 /include
parent76a87a902ef031432a855fb341cf35291e2be2b6 (diff)
Fix lookup_bdev() on Ubuntu
Ubuntu added support for checking inode permissions to lookup_bdev() in kernel commit 193fb6a2c94fab8eb8ce70a5da4d21c7d4023bee (merged in 4.4.0-6.21). Upstream bug: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1636517 This patch adds a test for Ubuntu's variant of lookup_bdev() to configure and calls the function in the correct way. Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Hajo Möller <[email protected]> Closes #5336
Diffstat (limited to 'include')
-rw-r--r--include/linux/blkdev_compat.h17
1 files changed, 13 insertions, 4 deletions
diff --git a/include/linux/blkdev_compat.h b/include/linux/blkdev_compat.h
index bff93ff54..1f90b9825 100644
--- a/include/linux/blkdev_compat.h
+++ b/include/linux/blkdev_compat.h
@@ -263,12 +263,21 @@ bio_set_flags_failfast(struct block_device *bdev, int *flags)
/*
* 2.6.27 API change
- * The function was exported for use, prior to this it existed by the
+ * The function was exported for use, prior to this it existed but the
* symbol was not exported.
+ *
+ * 4.4.0-6.21 API change for Ubuntu
+ * lookup_bdev() gained a second argument, FMODE_*, to check inode permissions.
*/
-#ifndef HAVE_LOOKUP_BDEV
-#define lookup_bdev(path) ERR_PTR(-ENOTSUP)
-#endif
+#ifdef HAVE_1ARG_LOOKUP_BDEV
+#define vdev_lookup_bdev(path) lookup_bdev(path)
+#else
+#ifdef HAVE_2ARGS_LOOKUP_BDEV
+#define vdev_lookup_bdev(path) lookup_bdev(path, 0)
+#else
+#define vdev_lookup_bdev(path) ERR_PTR(-ENOTSUP)
+#endif /* HAVE_2ARGS_LOOKUP_BDEV */
+#endif /* HAVE_1ARG_LOOKUP_BDEV */
/*
* 2.6.30 API change