diff --git a/kmod/src/Makefile.kernelcompat b/kmod/src/Makefile.kernelcompat index 409bdc27..b781eea4 100644 --- a/kmod/src/Makefile.kernelcompat +++ b/kmod/src/Makefile.kernelcompat @@ -139,3 +139,13 @@ endif ifneq (,$(shell grep '(*shrink)' include/linux/shrinker.h)) ccflags-y += -DKC_SHRINKER_SHRINK endif + +# +# v3.19-4777-g6bec00352861 +# +# backing_dev_info is removed from address_space. Instead we need to use +# inode_to_bdi() inline from . +# +ifneq (,$(shell grep 'struct backing_dev_info.*backing_dev_info' include/linux/fs.h)) +ccflags-y += -DKC_LINUX_BACKING_DEV_INFO=1 +endif diff --git a/kmod/src/ioctl.c b/kmod/src/ioctl.c index 964db6f4..fb8c8c46 100644 --- a/kmod/src/ioctl.c +++ b/kmod/src/ioctl.c @@ -22,6 +22,7 @@ #include #include #include +#include #include "format.h" #include "key.h" @@ -448,7 +449,6 @@ static long scoutfs_ioc_stage(struct file *file, unsigned long arg) { struct inode *inode = file_inode(file); struct super_block *sb = inode->i_sb; - struct address_space *mapping = inode->i_mapping; struct scoutfs_inode_info *si = SCOUTFS_I(inode); SCOUTFS_DECLARE_PER_TASK_ENTRY(pt_ent); struct scoutfs_ioctl_stage args; @@ -516,7 +516,7 @@ static long scoutfs_ioc_stage(struct file *file, unsigned long arg) } si->staging = true; - current->backing_dev_info = mapping->backing_dev_info; + current->backing_dev_info = inode_to_bdi(inode); pos = args.offset; written = 0;