+/**
+ * ext4_bread/ldiskfs_bread has either 5 or 4 parameters. The error
+ * return code has been removed and integrated into the pointer in the
+ * kernel 3.18.
+ */
+static inline struct buffer_head *__ldiskfs_bread(handle_t *handle,
+ struct inode *inode,
+ ldiskfs_lblk_t block,
+ int create)
+{
+#ifdef HAVE_EXT4_BREAD_4ARGS
+ return ldiskfs_bread(handle, inode, block, create);
+#else
+ struct buffer_head *bh;
+ int error = 0;
+
+ bh = ldiskfs_bread(handle, inode, block, create, &error);
+ if (bh == NULL && error != 0)
+ bh = ERR_PTR(error);
+
+ return bh;
+#endif
+}
+