[OpenWrt-Devel] [PATCH] exfat-nofuse: fix kernel 5.4 compilation issue

Paul Blazejowski paulb at blazebox.homeip.net
Sat Mar 7 16:30:24 EST 2020



On 3/6/20 7:15 PM, Rosen Penev wrote:
> On Fri, Mar 6, 2020 at 11:38 AM Paul Blazejowski
> <paulb at blazebox.homeip.net> wrote:
>>
>> Hi Rosen,
>>
>> Would this patch be more suitable while keeping older kernel compatibility?
>>
>> What's the best way to submit patches for packages without having
>> github.com account?
> Post here. I'll merge.

New patch will follow in next email.

>>
>> Thanks!

Thank you

>>
>> diff --git a/kernel/exfat-nofuse/Makefile b/kernel/exfat-nofuse/Makefile
>> index 8354f5621..3931dbc34 100644
>> --- a/kernel/exfat-nofuse/Makefile
>> +++ b/kernel/exfat-nofuse/Makefile
>> @@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
>>  include $(INCLUDE_DIR)/kernel.mk
>>
>>  PKG_NAME:=exfat-nofuse
>> -PKG_RELEASE:=2
>> +PKG_RELEASE:=3
>>
>>  PKG_SOURCE_URL:=https://github.com/dorimanx/exfat-nofuse.git
>>  PKG_SOURCE_PROTO:=git
>> @@ -29,7 +29,7 @@ define KernelPackage/fs-exfat
>>     TITLE:=ExFAT Kernel driver
>>     FILES:=$(PKG_BUILD_DIR)/exfat.ko
>>     AUTOLOAD:=$(call AutoLoad,30,exfat,1)
>> -   DEPENDS:=+kmod-nls-base
>> +   DEPENDS:=+kmod-nls-base @(LINUX_4_14||LINUX_4_19)
> I prefer @!LINUX_5_4

Based on the discussion we are going to keep compatibility with 4.x
kernels just for this package.

> 
> I also want an exfat package for 5.4. As it stands even though it is
> in the staging directory, I don't think a package is available.

Your wish has been answered ;-) we will have native module from staging
for 5.x kernels.

Thanks to all involved!

>>  endef
>>
>>  define KernelPackage/fs-exfat/description
>>
>>
>> On 3/6/20 1:10 AM, Rosen Penev wrote:
>>> On Thu, Mar 5, 2020 at 1:17 PM Paul Blazejowski
>>> <paulb at blazebox.homeip.net> wrote:
>>>>
>>>> Patch taken from
>>>> https://github.com/barrybingo/exfat-nofuse/commit/8b59e1f338fdd87f1d5a9db2a119a3745bb467d5
>>>>
>>>> Signed-off-by: Paul Blazejowski <paulb at blazebox.homeip.net>
>>> This is the wrong place to submit.
>>>
>>> Nevertheless, I'd rather restrict this driver to 4.19 and below.
>>>
>>> kernel 5.4 has an exfat driver available in the staging directory.
>>>> ---
>>>>  kernel/exfat-nofuse/Makefile               |  2 +-
>>>>  kernel/exfat-nofuse/patches/0003-5.0.patch | 88 ++++++++++++++++++++++
>>>>  2 files changed, 89 insertions(+), 1 deletion(-)
>>>>  create mode 100644 kernel/exfat-nofuse/patches/0003-5.0.patch
>>>>
>>>> diff --git a/kernel/exfat-nofuse/Makefile b/kernel/exfat-nofuse/Makefile
>>>> index 8354f5621..ebc101144 100644
>>>> --- a/kernel/exfat-nofuse/Makefile
>>>> +++ b/kernel/exfat-nofuse/Makefile
>>>> @@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
>>>>  include $(INCLUDE_DIR)/kernel.mk
>>>>
>>>>  PKG_NAME:=exfat-nofuse
>>>> -PKG_RELEASE:=2
>>>> +PKG_RELEASE:=3
>>>>
>>>>  PKG_SOURCE_URL:=https://github.com/dorimanx/exfat-nofuse.git
>>>>  PKG_SOURCE_PROTO:=git
>>>> diff --git a/kernel/exfat-nofuse/patches/0003-5.0.patch b/kernel/exfat-nofuse/patches/0003-5.0.patch
>>>> new file mode 100644
>>>> index 000000000..da28fc03c
>>>> --- /dev/null
>>>> +++ b/kernel/exfat-nofuse/patches/0003-5.0.patch
>>>> @@ -0,0 +1,88 @@
>>>> +From 8b59e1f338fdd87f1d5a9db2a119a3745bb467d5 Mon Sep 17 00:00:00 2001
>>>> +From: Junde Yhi <lmy441900 at aosc.xyz>
>>>> +Date: Thu, 10 Jan 2019 21:19:49 +0800
>>>> +Subject: [PATCH] exfat_{core,super}.c: fix build on 5.0-rc1, MS_* -> SB_*
>>>> +
>>>> +In torvalds/linux at e462ec50cb a new set of superblock flags was added
>>>> +to replace the original MS_* ones, and in torvalds/linux at e262e32d6b
>>>> +the MS_* flags are suppressed unless uapi/linux/mount.h is included.
>>>> +As is suggested, we should use the new API now.
>>>> +---
>>>> + exfat_core.c  |  6 +++++-
>>>> + exfat_core.h  |  6 ++++++
>>>> + exfat_super.c | 11 ++++++++++-
>>>> + 3 files changed, 21 insertions(+), 2 deletions(-)
>>>> +
>>>> +diff --git a/exfat_core.c b/exfat_core.c
>>>> +index 143b721..397afd6 100644
>>>> +--- a/exfat_core.c
>>>> ++++ b/exfat_core.c
>>>> +@@ -1757,8 +1757,12 @@ void fs_error(struct super_block *sb)
>>>> +
>>>> +       if (opts->errors == EXFAT_ERRORS_PANIC)
>>>> +               panic("[EXFAT] Filesystem panic from previous error\n");
>>>> +-      else if ((opts->errors == EXFAT_ERRORS_RO) && !(sb->s_flags & MS_RDONLY)) {
>>>> ++      else if ((opts->errors == EXFAT_ERRORS_RO) && !EXFAT_IS_SB_RDONLY(sb)) {
>>>> ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
>>>> +               sb->s_flags |= MS_RDONLY;
>>>> ++#else
>>>> ++              sb->s_flags |= SB_RDONLY;
>>>> ++#endif
>>>> +               printk(KERN_ERR "[EXFAT] Filesystem has been set read-only\n");
>>>> +       }
>>>> + }
>>>> +diff --git a/exfat_core.h b/exfat_core.h
>>>> +index 52d05c7..3d023b7 100644
>>>> +--- a/exfat_core.h
>>>> ++++ b/exfat_core.h
>>>> +@@ -45,6 +45,12 @@
>>>> + #include "exfat_api.h"
>>>> + #include "exfat_cache.h"
>>>> +
>>>> ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
>>>> ++#define EXFAT_IS_SB_RDONLY(sb) ((sb)->s_flags & MS_RDONLY)
>>>> ++#else
>>>> ++#define EXFAT_IS_SB_RDONLY(sb) ((sb)->s_flags & SB_RDONLY)
>>>> ++#endif
>>>> ++
>>>> + #ifdef CONFIG_EXFAT_KERNEL_DEBUG
>>>> +   /* For Debugging Purpose */
>>>> +       /* IOCTL code 'f' used by
>>>> +diff --git a/exfat_super.c b/exfat_super.c
>>>> +index 79ff5f9..6452b54 100644
>>>> +--- a/exfat_super.c
>>>> ++++ b/exfat_super.c
>>>> +@@ -2086,7 +2086,7 @@ static void exfat_write_super(struct super_block *sb)
>>>> +
>>>> +       __set_sb_clean(sb);
>>>> +
>>>> +-      if (!(sb->s_flags & MS_RDONLY))
>>>> ++      if (!EXFAT_IS_SB_RDONLY(sb))
>>>> +               FsSyncVol(sb, 1);
>>>> +
>>>> +       __unlock_super(sb);
>>>> +@@ -2142,7 +2142,12 @@ static int exfat_statfs(struct dentry *dentry, struct kstatfs *buf)
>>>> +
>>>> + static int exfat_remount(struct super_block *sb, int *flags, char *data)
>>>> + {
>>>> ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
>>>> +       *flags |= MS_NODIRATIME;
>>>> ++#else
>>>> ++      *flags |= SB_NODIRATIME;
>>>> ++#endif
>>>> ++
>>>> +       return 0;
>>>> + }
>>>> +
>>>> +@@ -2495,7 +2500,11 @@ static int exfat_fill_super(struct super_block *sb, void *data, int silent)
>>>> +       mutex_init(&sbi->s_lock);
>>>> + #endif
>>>> +       sb->s_fs_info = sbi;
>>>> ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
>>>> +       sb->s_flags |= MS_NODIRATIME;
>>>> ++#else
>>>> ++      sb->s_flags |= SB_NODIRATIME;
>>>> ++#endif
>>>> +       sb->s_magic = EXFAT_SUPER_MAGIC;
>>>> +       sb->s_op = &exfat_sops;
>>>> +       sb->s_export_op = &exfat_export_ops;
>>>> --
>>>> 2.25.1
>>>>
>>>>
>>>> _______________________________________________
>>>> openwrt-devel mailing list
>>>> openwrt-devel at lists.openwrt.org
>>>> https://lists.openwrt.org/mailman/listinfo/openwrt-devel

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list