diff --git a/block/bio.c b/block/bio.c
index 91b6462..6546a6b 100644
--- a/block/bio.c
+++ b/block/bio.c
@@ -570,8 +570,8 @@
 #ifdef CONFIG_PFK
 	dst->bi_crypt_key = src->bi_crypt_key;
 	dst->bi_iter.bi_dun = src->bi_iter.bi_dun;
-#endif
 	dst->bi_dio_inode = src->bi_dio_inode;
+#endif
 }
 
 /**
@@ -598,7 +598,9 @@
 	bio->bi_opf = bio_src->bi_opf;
 	bio->bi_iter = bio_src->bi_iter;
 	bio->bi_io_vec = bio_src->bi_io_vec;
+#ifdef CONFIG_PFK
 	bio->bi_dio_inode = bio_src->bi_dio_inode;
+#endif
 	bio_clone_crypt_key(bio, bio_src);
 	bio_clone_blkcg_association(bio, bio_src);
 }
diff --git a/block/blk-core.c b/block/blk-core.c
index ff2e4fd..68ec55a 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -1529,7 +1529,9 @@
 	bio->bi_next = req->bio;
 	req->bio = bio;
 
+#ifdef CONFIG_PFK
 	WARN_ON(req->__dun || bio->bi_iter.bi_dun);
+#endif
 	req->__sector = bio->bi_iter.bi_sector;
 	req->__data_len += bio->bi_iter.bi_size;
 	req->ioprio = ioprio_best(req->ioprio, bio_prio(bio));
@@ -1645,7 +1647,9 @@
 
 	req->errors = 0;
 	req->__sector = bio->bi_iter.bi_sector;
+#ifdef CONFIG_PFK
 	req->__dun = bio->bi_iter.bi_dun;
+#endif
 	req->ioprio = bio_prio(bio);
 	blk_rq_bio_prep(req->q, req, bio);
 }
@@ -2650,8 +2654,10 @@
 	/* update sector only for requests with clear definition of sector */
 	if (req->cmd_type == REQ_TYPE_FS) {
 		req->__sector += total_bytes >> 9;
+#ifdef CONFIG_PFK
 		if (req->__dun)
 			req->__dun += total_bytes >> 12;
+#endif
 	}
 
 	/* mixed attributes always follow the first bio */
@@ -3053,7 +3059,9 @@
 			 (src->cmd_flags & REQ_CLONE_MASK) | REQ_NOMERGE);
 	dst->cmd_type = src->cmd_type;
 	dst->__sector = blk_rq_pos(src);
+#ifdef CONFIG_PFK
 	dst->__dun = blk_rq_dun(src);
+#endif
 	dst->__data_len = blk_rq_bytes(src);
 	dst->nr_phys_segments = src->nr_phys_segments;
 	dst->ioprio = src->ioprio;
diff --git a/block/blk-merge.c b/block/blk-merge.c
index c71d1cb..8e730d1 100644
--- a/block/blk-merge.c
+++ b/block/blk-merge.c
@@ -876,8 +876,10 @@
 
 int blk_try_merge(struct request *rq, struct bio *bio)
 {
+#ifdef CONFIG_PFK
 	if (blk_rq_dun(rq) || bio_dun(bio))
 		return ELEVATOR_NO_MERGE;
+#endif
 	if (blk_rq_pos(rq) + blk_rq_sectors(rq) == bio->bi_iter.bi_sector)
 		return ELEVATOR_BACK_MERGE;
 	else if (blk_rq_pos(rq) - bio_sectors(bio) == bio->bi_iter.bi_sector)
diff --git a/drivers/scsi/ufs/ufs-qcom.c b/drivers/scsi/ufs/ufs-qcom.c
index 4dfd8d3..a44c988 100644
--- a/drivers/scsi/ufs/ufs-qcom.c
+++ b/drivers/scsi/ufs/ufs-qcom.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013-2017, Linux Foundation. All rights reserved.
+ * Copyright (c) 2013-2018, Linux Foundation. All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 and
@@ -900,6 +900,7 @@
 
 	/* Use request LBA or given dun as the DUN value */
 	if (req->bio) {
+#ifdef CONFIG_PFK
 		if (bio_dun(req->bio)) {
 			/* dun @bio can be split, so we have to adjust offset */
 			*dun = bio_dun(req->bio);
@@ -907,6 +908,10 @@
 			*dun = req->bio->bi_iter.bi_sector;
 			*dun >>= UFS_QCOM_ICE_TR_DATA_UNIT_4_KB;
 		}
+#else
+		*dun = req->bio->bi_iter.bi_sector;
+		*dun >>= UFS_QCOM_ICE_TR_DATA_UNIT_4_KB;
+#endif
 	}
 
 	ret = ufs_qcom_ice_req_setup(host, lrbp->cmd, cc_index, enable);
diff --git a/fs/direct-io.c b/fs/direct-io.c
index 081e539..7f5d2e3 100644
--- a/fs/direct-io.c
+++ b/fs/direct-io.c
@@ -392,6 +392,7 @@
 	sdio->logical_offset_in_bio = sdio->cur_page_fs_offset;
 }
 
+#ifdef CONFIG_PFK
 static bool is_inode_filesystem_type(const struct inode *inode,
 					const char *fs_type)
 {
@@ -406,6 +407,7 @@
 
 	return (strcmp(inode->i_sb->s_type->name, fs_type) == 0);
 }
+#endif
 
 /*
  * In the AIO read case we speculatively dirty the pages before starting IO.
@@ -428,6 +430,7 @@
 	if (dio->is_async && dio->op == REQ_OP_READ && dio->should_dirty)
 		bio_set_pages_dirty(bio);
 
+#ifdef CONFIG_PFK
 	bio->bi_dio_inode = dio->inode;
 
 /* iv sector for security/pfe/pfk_fscrypt.c and f2fs in fs/f2fs/f2fs.h.*/
@@ -437,6 +440,7 @@
 	if (is_inode_filesystem_type(dio->inode, "f2fs"))
 		fscrypt_set_ice_dun(dio->inode, bio, PG_DUN_NEW(dio->inode,
 			(sdio->logical_offset_in_bio >> PAGE_SHIFT)));
+#endif
 	dio->bio_bdev = bio->bi_bdev;
 
 	if (sdio->submit_io) {
@@ -457,7 +461,9 @@
 	if (bio == NULL)
 		return NULL;
 
+#ifdef CONFIG_PFK
 	inode = bio->bi_dio_inode;
+#endif
 
 	return inode;
 }
diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h
index 5a3712c..42ad6b5 100644
--- a/include/linux/blk_types.h
+++ b/include/linux/blk_types.h
@@ -66,9 +66,17 @@
 		struct bio_integrity_payload *bi_integrity; /* data integrity */
 #endif
 	};
+
 #ifdef CONFIG_PFK
 	/* Encryption key to use (NULL if none) */
 	const struct blk_encryption_key	*bi_crypt_key;
+
+	/*
+	* When using dircet-io (O_DIRECT), we can't get the inode from a bio
+	* by walking bio->bi_io_vec->bv_page->mapping->host
+	* since the page is anon.
+	*/
+	struct inode            *bi_dio_inode;
 #endif
 
 	unsigned short		bi_vcnt;	/* how many bio_vec's */
@@ -86,12 +94,6 @@
 	struct bio_set		*bi_pool;
 
 	/*
-	 * When using dircet-io (O_DIRECT), we can't get the inode from a bio
-	 * by walking bio->bi_io_vec->bv_page->mapping->host
-	 * since the page is anon.
-	 */
-	struct inode		*bi_dio_inode;
-	/*
 	 * We can inline a number of vecs at the end of the bio, to avoid
 	 * double allocations for a small number of bio_vecs. This member
 	 * MUST obviously be kept at the very end of the bio.
diff --git a/include/linux/bvec.h b/include/linux/bvec.h
index dbf1f2c..2425374 100644
--- a/include/linux/bvec.h
+++ b/include/linux/bvec.h
@@ -41,7 +41,9 @@
 
 	unsigned int            bi_bvec_done;	/* number of bytes completed in
 						   current bvec */
+#ifdef CONFIG_PFK
 	u64			bi_dun;		/* DUN setting for bio */
+#endif
 };
 
 /*
diff --git a/include/linux/fscrypt.h b/include/linux/fscrypt.h
index 7a7fce9..1e03614 100644
--- a/include/linux/fscrypt.h
+++ b/include/linux/fscrypt.h
@@ -252,4 +252,29 @@
 	return 0;
 }
 
+/* fscrypt_ice.c */
+#ifdef CONFIG_PFK
+extern int fscrypt_using_hardware_encryption(const struct inode *inode);
+extern void fscrypt_set_ice_dun(const struct inode *inode,
+	struct bio *bio, u64 dun);
+extern bool fscrypt_mergeable_bio(struct bio *bio, u64 dun, bool bio_encrypted);
+#else
+static inline int fscrypt_using_hardware_encryption(const struct inode *inode)
+{
+	return 0;
+}
+
+static inline void fscrypt_set_ice_dun(const struct inode *inode,
+	struct bio *bio, u64 dun)
+{
+	return;
+}
+
+static inline bool fscrypt_mergeable_bio(struct bio *bio,
+	u64 dun, bool bio_encrypted)
+{
+	return true;
+}
+#endif
+
 #endif	/* _LINUX_FSCRYPT_H */
diff --git a/include/linux/fscrypt_notsupp.h b/include/linux/fscrypt_notsupp.h
index ce4df7a..172d418 100644
--- a/include/linux/fscrypt_notsupp.h
+++ b/include/linux/fscrypt_notsupp.h
@@ -183,23 +183,7 @@
 	return -EOPNOTSUPP;
 }
 
-/* fscrypt_ice.c */
-static inline int fscrypt_using_hardware_encryption(const struct inode *inode)
-{
-	return 0;
-}
-
-static inline void fscrypt_set_ice_dun(const struct inode *inode,
-		struct bio *bio, u64 dun){}
-
-static inline bool fscrypt_mergeable_bio(struct bio *bio,
-		sector_t iv_block, bool bio_encrypted)
-{
-	return true;
-}
-
 /* hooks.c */
-
 static inline int fscrypt_file_open(struct inode *inode, struct file *filp)
 {
 	if (IS_ENCRYPTED(inode))
diff --git a/include/linux/fscrypt_supp.h b/include/linux/fscrypt_supp.h
index 2f62d5b..1ed79ee 100644
--- a/include/linux/fscrypt_supp.h
+++ b/include/linux/fscrypt_supp.h
@@ -195,13 +195,6 @@
 extern int fscrypt_zeroout_range(const struct inode *, pgoff_t, sector_t,
 				 unsigned int);
 
-/* fscrypt_ice.c */
-extern int fscrypt_using_hardware_encryption(const struct inode *inode);
-extern void fscrypt_set_ice_dun(const struct inode *inode,
-		struct bio *bio, u64 dun);
-extern bool fscrypt_mergeable_bio(struct bio *bio, u64 dun, bool bio_encrypted);
-
-
 /* hooks.c */
 extern int fscrypt_file_open(struct inode *inode, struct file *filp);
 extern int __fscrypt_prepare_link(struct inode *inode, struct inode *dir);
