diff --git a/.SRCINFO b/.SRCINFO index 047620b..b61ba2a 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,5 +1,5 @@ -# Generated by makepkg 5.1.2 -# Sun Mar 10 02:13:46 UTC 2019 +# Generated by makepkg 5.1.3 +# Wed Mar 13 01:49:29 UTC 2019 pkgbase = sdfat-dkms-git pkgdesc = FAT12/16/32(VFAT)/64(exFAT) filesytems kernel module - use with DKMS pkgver = 26.4f65bdd @@ -20,12 +20,14 @@ pkgbase = sdfat-dkms-git source = dkms.conf source = mount.exfat source = fix-blkdev.patch + source = fix-kernel_5.patch source = fix-makefile.patch source = fix-module_alias.patch sha512sums = SKIP sha512sums = d61b198adef98554767c596e9708b64a6ed8cd2ffd382c8cb38938fc467d27e8849969ea94d803683d44397b4f5f0c512c01ed05d0f35fb03611f56401e19a31 sha512sums = 85c54950e69e342221343b8b542fda47f80b9a7104e1097a7f1c9a09f69758ef8881c238d2740f3a21aa2b5cdcb3b9b8224c731ec2e39fa4632f56c2df85bc84 sha512sums = a84005de882a14a29252956f009d9785435a1dff7e578537eb5d0f222e2d89925aa95f883cd7817becac384ebaa4cc44ef636a41ea8e063b306cfa33add54a69 + sha512sums = c0e4d47b070373da4a3a201289fc56b734f6b31659d27b9772b48a2ea440247b0c619cf71a99dd02041d67ab9fbf9865ff443c70a456389dcc3b3ac985b229d1 sha512sums = f55b3ed728ce8716aee0924cd7f27534e25a9e3984bec14e17839e91f1ad290b7e2c9ed85e4f93678f8a0c200c7ed087ec659fb57d84d55e35d4098e3296504e sha512sums = 5859133537c76b333eaeaa12f5144528891479d21062bbd90560e7f100f074c4f4b5f846b7ad4d720f2ea4595ace88c3bd3f9b67e5c76ff4b9e4d52989dacf96 diff --git a/PKGBUILD b/PKGBUILD index 132001d..022574a 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -18,12 +18,14 @@ source=("${_gitname}::git+${url}.git" dkms.conf mount.exfat fix-blkdev.patch + fix-kernel_5.patch fix-makefile.patch fix-module_alias.patch) sha512sums=('SKIP' 'd61b198adef98554767c596e9708b64a6ed8cd2ffd382c8cb38938fc467d27e8849969ea94d803683d44397b4f5f0c512c01ed05d0f35fb03611f56401e19a31' '85c54950e69e342221343b8b542fda47f80b9a7104e1097a7f1c9a09f69758ef8881c238d2740f3a21aa2b5cdcb3b9b8224c731ec2e39fa4632f56c2df85bc84' 'a84005de882a14a29252956f009d9785435a1dff7e578537eb5d0f222e2d89925aa95f883cd7817becac384ebaa4cc44ef636a41ea8e063b306cfa33add54a69' + 'c0e4d47b070373da4a3a201289fc56b734f6b31659d27b9772b48a2ea440247b0c619cf71a99dd02041d67ab9fbf9865ff443c70a456389dcc3b3ac985b229d1' 'f55b3ed728ce8716aee0924cd7f27534e25a9e3984bec14e17839e91f1ad290b7e2c9ed85e4f93678f8a0c200c7ed087ec659fb57d84d55e35d4098e3296504e' '5859133537c76b333eaeaa12f5144528891479d21062bbd90560e7f100f074c4f4b5f846b7ad4d720f2ea4595ace88c3bd3f9b67e5c76ff4b9e4d52989dacf96') @@ -40,6 +42,7 @@ prepare() { patch -p1 < "${srcdir}/fix-blkdev.patch" patch -p1 < "${srcdir}/fix-makefile.patch" patch -p1 < "${srcdir}/fix-module_alias.patch" + patch -p1 < "${srcdir}/fix-kernel_5.patch" } package() { diff --git a/fix-kernel_5.patch b/fix-kernel_5.patch new file mode 100644 index 0000000..4b2af3a --- /dev/null +++ b/fix-kernel_5.patch @@ -0,0 +1,187 @@ +--- a/misc.c ++++ b/misc.c +@@ -262,8 +262,14 @@ + + TIMESTAMP_T *tm_now(struct sdfat_sb_info *sbi, TIMESTAMP_T *tp) + { +- struct timespec_compat ts = CURRENT_TIME_SEC; ++ struct timespec_compat ts; + DATE_TIME_T dt; ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 18, 0) ++ ts = CURRENT_TIME_SEC; ++#else ++ ktime_get_coarse_real_ts64(&ts); ++#endif ++ + + sdfat_time_unix2fat(sbi, &ts, &dt); + +--- a/sdfat.h ++++ b/sdfat.h +@@ -53,9 +53,9 @@ + #define timespec_compat timespec + #endif + +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 18, 0) ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 0, 0) + #define CURRENT_TIME_SEC timespec64_trunc(current_kernel_time64(), NSEC_PER_SEC) +-#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) ++#elif LINUX_VERSION_CODE < KERNEL_VERSION(4, 18, 0) + #define CURRENT_TIME_SEC timespec_trunc(current_kernel_time(), NSEC_PER_SEC) + #endif + +--- a/sdfat.c ++++ b/sdfat.c +@@ -2372,7 +2372,11 @@ + + TMSG("%s entered\n", __func__); + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 18, 0) + ts = CURRENT_TIME_SEC; ++#else ++ ktime_get_coarse_real_ts64(&ts); ++#endif + + err = fsapi_create(dir, (u8 *) dentry->d_name.name, FM_REGULAR, &fid); + if (err) +@@ -2535,7 +2539,11 @@ + + TMSG("%s entered\n", __func__); + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 18, 0) + ts = CURRENT_TIME_SEC; ++#else ++ ktime_get_coarse_real_ts64(&ts); ++#endif + + SDFAT_I(inode)->fid.size = i_size_read(inode); + +@@ -2584,7 +2592,11 @@ + + TMSG("%s entered\n", __func__); + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 18, 0) + ts = CURRENT_TIME_SEC; ++#else ++ ktime_get_coarse_real_ts64(&ts); ++#endif + + err = fsapi_create(dir, (u8 *) dentry->d_name.name, FM_SYMLINK, &fid); + if (err) +@@ -2645,7 +2657,11 @@ + + TMSG("%s entered\n", __func__); + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 18, 0) + ts = CURRENT_TIME_SEC; ++#else ++ ktime_get_coarse_real_ts64(&ts); ++#endif + + err = fsapi_mkdir(dir, (u8 *) dentry->d_name.name, &fid); + if (err) +@@ -2694,7 +2710,11 @@ + + TMSG("%s entered\n", __func__); + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 18, 0) + ts = CURRENT_TIME_SEC; ++#else ++ ktime_get_coarse_real_ts64(&ts); ++#endif + + SDFAT_I(inode)->fid.size = i_size_read(inode); + +@@ -2739,7 +2759,11 @@ + old_inode = old_dentry->d_inode; + new_inode = new_dentry->d_inode; + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 18, 0) + ts = CURRENT_TIME_SEC; ++#else ++ ktime_get_coarse_real_ts64(&ts); ++#endif + + SDFAT_I(old_inode)->fid.size = i_size_read(old_inode); + +@@ -2811,13 +2835,20 @@ + { + struct address_space *mapping = inode->i_mapping; + loff_t start = i_size_read(inode), count = size - i_size_read(inode); ++ struct timespec_compat ts; + int err, err2; + + err = generic_cont_expand_simple(inode, size); + if (err) + return err; + +- inode->i_ctime = inode->i_mtime = CURRENT_TIME_SEC; ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 18, 0) ++ ts = CURRENT_TIME_SEC; ++#else ++ ktime_get_coarse_real_ts64(&ts); ++#endif ++ ++ inode->i_ctime = inode->i_mtime = ts; + mark_inode_dirty(inode); + + if (!IS_SYNC(inode)) +@@ -3036,6 +3067,7 @@ + { + struct super_block *sb = inode->i_sb; + struct sdfat_sb_info *sbi = SDFAT_SB(sb); ++ struct timespec_compat ts; + FS_INFO_T *fsi = &(sbi->fsi); + unsigned int blocksize = 1 << inode->i_blkbits; + loff_t aligned_size; +@@ -3059,7 +3091,13 @@ + if (err) + goto out; + +- inode->i_ctime = inode->i_mtime = CURRENT_TIME_SEC; ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 18, 0) ++ ts = CURRENT_TIME_SEC; ++#else ++ ktime_get_coarse_real_ts64(&ts); ++#endif ++ ++ inode->i_ctime = inode->i_mtime = ts; + if (IS_DIRSYNC(inode)) + (void) sdfat_sync_inode(inode); + else +@@ -3769,6 +3807,7 @@ + struct page *pagep, void *fsdata) + { + struct inode *inode = mapping->host; ++ struct timespec_compat ts; + FILE_ID_T *fid = &(SDFAT_I(inode)->fid); + int err; + +@@ -3785,8 +3824,14 @@ + if (err < len) + sdfat_write_failed(mapping, pos+len); + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 18, 0) ++ ts = CURRENT_TIME_SEC; ++#else ++ ktime_get_coarse_real_ts64(&ts); ++#endif ++ + if (!(err < 0) && !(fid->attr & ATTR_ARCHIVE)) { +- inode->i_mtime = inode->i_ctime = CURRENT_TIME_SEC; ++ inode->i_mtime = inode->i_ctime = ts; + fid->attr |= ATTR_ARCHIVE; + mark_inode_dirty(inode); + } +@@ -4805,7 +4850,11 @@ + FS_INFO_T *fsi = &(sbi->fsi); + DIR_ENTRY_T info; + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 18, 0) + ts = CURRENT_TIME_SEC; ++#else ++ ktime_get_coarse_real_ts64(&ts); ++#endif + + SDFAT_I(inode)->fid.dir.dir = fsi->root_dir; + SDFAT_I(inode)->fid.dir.flags = 0x01;