2023-11-01 08:39:16

by Zizhi Wo

[permalink] [raw]
Subject: [PATCH -next,V2] fscache: support to disable assert macro

In fs/fscache/internal.h, ASSERT macro is enabled by default and can not
be disabled, then assert failure will crash the kernel as the BUG() is
included in the ASSERT macro. Therefore, add FSCACHE_ASSERT to control it.

Signed-off-by: WoZ1zh1 <[email protected]>
---
fs/fscache/Kconfig | 10 ++++++++++
fs/fscache/internal.h | 2 +-
2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/fs/fscache/Kconfig b/fs/fscache/Kconfig
index b313a978ae0a..7ff844038bc3 100644
--- a/fs/fscache/Kconfig
+++ b/fs/fscache/Kconfig
@@ -38,3 +38,13 @@ config FSCACHE_DEBUG
enabled by setting bits in /sys/modules/fscache/parameter/debug.

See Documentation/filesystems/caching/fscache.rst for more information.
+
+config FSCACHE_ASSERT
+ bool "FSCACHE asserts"
+ default n
+ depends on FSCACHE
+ help
+ Support the ASSERT mode for failure behavior.
+ Say N here to disable the ASSERT by default.
+ Say Y to add assertion checks in some places. But the assertion
+ failure will result in fatal errors that BUG() the kernel.
diff --git a/fs/fscache/internal.h b/fs/fscache/internal.h
index 1336f517e9b1..951166ed772f 100644
--- a/fs/fscache/internal.h
+++ b/fs/fscache/internal.h
@@ -225,7 +225,7 @@ do { \
/*
* assertions
*/
-#if 1 /* defined(__KDEBUGALL) */
+#ifdef CONFIG_FSCACHE_ASSERT

#define ASSERT(X) \
do { \
--
2.39.2


2023-11-30 02:50:37

by Zizhi Wo

[permalink] [raw]
Subject: Re: [PATCH -next,V2] fscache: support to disable assert macro

friendly ping

在 2023/11/8 10:25, Zizhi Wo 写道:
>
>
> 在 2023/11/7 20:39, Gao Xiang 写道:
>>
>>
>> On 2023/11/7 18:16, Zizhi Wo wrote:
>>> friendly ping
>>>
>>> 在 2023/11/2 0:34, WoZ1zh1 写道:
>>>> In fs/fscache/internal.h, ASSERT macro is enabled by default and can
>>>> not
>>>> be disabled, then assert failure will crash the kernel as the BUG() is
>>>> included in the ASSERT macro. Therefore, add FSCACHE_ASSERT to
>>>> control it.
>>
>> Personally it looks good to me, yet we could also turn
>> them into WARN_ON_ONCE case by case? Anyway, it depends
>> on how David thinks...
>>
> Thank you for your recognition!
>
> Thanks,
> Zizhi Wo
>
>> Thanks,
>> Gao Xiang
>>
>>>>
>>>> Signed-off-by: WoZ1zh1 <[email protected]>
>>>> ---
>>>>   fs/fscache/Kconfig    | 10 ++++++++++
>>>>   fs/fscache/internal.h |  2 +-
>>>>   2 files changed, 11 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/fs/fscache/Kconfig b/fs/fscache/Kconfig
>>>> index b313a978ae0a..7ff844038bc3 100644
>>>> --- a/fs/fscache/Kconfig
>>>> +++ b/fs/fscache/Kconfig
>>>> @@ -38,3 +38,13 @@ config FSCACHE_DEBUG
>>>>         enabled by setting bits in
>>>> /sys/modules/fscache/parameter/debug.
>>>>         See Documentation/filesystems/caching/fscache.rst for more
>>>> information.
>>>> +
>>>> +config FSCACHE_ASSERT
>>>> +    bool "FSCACHE asserts"
>>>> +    default n
>>>> +    depends on FSCACHE
>>>> +    help
>>>> +      Support the ASSERT mode for failure behavior.
>>>> +      Say N here to disable the ASSERT by default.
>>>> +      Say Y to add assertion checks in some places. But the assertion
>>>> +      failure will result in fatal errors that BUG() the kernel.
>>>> diff --git a/fs/fscache/internal.h b/fs/fscache/internal.h
>>>> index 1336f517e9b1..951166ed772f 100644
>>>> --- a/fs/fscache/internal.h
>>>> +++ b/fs/fscache/internal.h
>>>> @@ -225,7 +225,7 @@ do {                        \
>>>>   /*
>>>>    * assertions
>>>>    */
>>>> -#if 1 /* defined(__KDEBUGALL) */
>>>> +#ifdef CONFIG_FSCACHE_ASSERT
>>>>   #define ASSERT(X)                            \
>>>>   do {                                    \
>>

2024-01-26 02:51:23

by Zizhi Wo

[permalink] [raw]
Subject: Re: [PATCH -next,V2] fscache: support to disable assert macro

friendly ping

在 2023/11/30 10:50, Zizhi Wo 写道:
> friendly ping
>
> 在 2023/11/8 10:25, Zizhi Wo 写道:
>>
>>
>> 在 2023/11/7 20:39, Gao Xiang 写道:
>>>
>>>
>>> On 2023/11/7 18:16, Zizhi Wo wrote:
>>>> friendly ping
>>>>
>>>> 在 2023/11/2 0:34, WoZ1zh1 写道:
>>>>> In fs/fscache/internal.h, ASSERT macro is enabled by default and
>>>>> can not
>>>>> be disabled, then assert failure will crash the kernel as the BUG() is
>>>>> included in the ASSERT macro. Therefore, add FSCACHE_ASSERT to
>>>>> control it.
>>>
>>> Personally it looks good to me, yet we could also turn
>>> them into WARN_ON_ONCE case by case? Anyway, it depends
>>> on how David thinks...
>>>
>> Thank you for your recognition!
>>
>> Thanks,
>> Zizhi Wo
>>
>>> Thanks,
>>> Gao Xiang
>>>
>>>>>
>>>>> Signed-off-by: WoZ1zh1 <[email protected]>
>>>>> ---
>>>>>   fs/fscache/Kconfig    | 10 ++++++++++
>>>>>   fs/fscache/internal.h |  2 +-
>>>>>   2 files changed, 11 insertions(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/fs/fscache/Kconfig b/fs/fscache/Kconfig
>>>>> index b313a978ae0a..7ff844038bc3 100644
>>>>> --- a/fs/fscache/Kconfig
>>>>> +++ b/fs/fscache/Kconfig
>>>>> @@ -38,3 +38,13 @@ config FSCACHE_DEBUG
>>>>>         enabled by setting bits in
>>>>> /sys/modules/fscache/parameter/debug.
>>>>>         See Documentation/filesystems/caching/fscache.rst for more
>>>>> information.
>>>>> +
>>>>> +config FSCACHE_ASSERT
>>>>> +    bool "FSCACHE asserts"
>>>>> +    default n
>>>>> +    depends on FSCACHE
>>>>> +    help
>>>>> +      Support the ASSERT mode for failure behavior.
>>>>> +      Say N here to disable the ASSERT by default.
>>>>> +      Say Y to add assertion checks in some places. But the assertion
>>>>> +      failure will result in fatal errors that BUG() the kernel.
>>>>> diff --git a/fs/fscache/internal.h b/fs/fscache/internal.h
>>>>> index 1336f517e9b1..951166ed772f 100644
>>>>> --- a/fs/fscache/internal.h
>>>>> +++ b/fs/fscache/internal.h
>>>>> @@ -225,7 +225,7 @@ do {                        \
>>>>>   /*
>>>>>    * assertions
>>>>>    */
>>>>> -#if 1 /* defined(__KDEBUGALL) */
>>>>> +#ifdef CONFIG_FSCACHE_ASSERT
>>>>>   #define ASSERT(X)                            \
>>>>>   do {                                    \
>>>