File exfat-kernel-4.4-opensuse-leap-42.3.patch of Package exfat-kmp

diff -Ndurp exfat/exfat_super.c exfat-kernel-4.4-opensuse-leap-42.3/exfat_super.c
--- exfat/exfat_super.c	2017-07-30 19:30:14.247509712 +0300
+++ exfat-kernel-4.4-opensuse-leap-42.3/exfat_super.c	2017-07-30 19:36:20.107194337 +0300
@@ -1697,7 +1697,7 @@ static ssize_t exfat_direct_IO(int rw, s
 #elif LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0)
 static ssize_t exfat_direct_IO(int rw, struct kiocb *iocb,
 					   struct iov_iter *iter, loff_t offset)
-#elif LINUX_VERSION_CODE < KERNEL_VERSION(4,7,0)
+#elif LINUX_VERSION_CODE < KERNEL_VERSION(4,7,0) && !defined(IOCB_DSYNC)
 static ssize_t exfat_direct_IO(struct kiocb *iocb,
 					   struct iov_iter *iter, loff_t offset)
 #else /* >= 4.7.x */
@@ -1723,14 +1723,14 @@ static ssize_t exfat_direct_IO(struct ki
 #else
 		if (EXFAT_I(inode)->mmu_private < (offset + iov_length(iov, nr_segs)))
 #endif
-#elif LINUX_VERSION_CODE < KERNEL_VERSION(4,7,0)
+#elif LINUX_VERSION_CODE < KERNEL_VERSION(4,7,0) && !defined(IOCB_DSYNC)
 		if (EXFAT_I(inode)->mmu_private < (offset + iov_iter_count(iter)))
 #else
 		if (EXFAT_I(inode)->mmu_private < iov_iter_count(iter))
 #endif
 			return 0;
 	}
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,7,0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,7,0) || defined(IOCB_DSYNC)
 	ret = blockdev_direct_IO(iocb, inode, iter, exfat_get_block);
 #elif LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0)
 	ret = blockdev_direct_IO(iocb, inode, iter,
@@ -1751,7 +1751,7 @@ static ssize_t exfat_direct_IO(struct ki
 					offset, nr_segs, exfat_get_block, NULL);
 #endif
 
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,7,0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,7,0) || defined(IOCB_DSYNC)
 	if ((ret < 0) && (rw & WRITE))
 		exfat_write_failed(mapping, iov_iter_count(iter));
 #elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,16,0)