mbox series

[0/8] netfs/cachefiles: Some bugfixes

Message ID 20240821024301.1058918-1-wozizhi@huawei.com (mailing list archive)
Headers show
Series netfs/cachefiles: Some bugfixes | expand

Message

Zizhi Wo Aug. 21, 2024, 2:42 a.m. UTC
Hi!

We recently discovered some bugs through self-discovery and testing in
erofs ondemand loading mode, and this patchset is mainly used to fix
them. These patches are relatively simple changes, and I would be excited
to discuss them together with everyone. Below is a brief introduction to
each patch:

Patch 1: Fix for wrong block_number calculated in ondemand write.

Patch 2: Fix for wrong length return value in ondemand write.

Patch 3: Fix missing position update in ondemand write, for scenarios
involving read-ahead, invoking the write syscall.

Patch 4: Previously, the last redundant data was cleared during the umount
phase. This patch remove unnecessary data in advance.

Patch 5: Code clean up for cachefiles_commit_tmpfile().

Patch 6: Modify error return value in cachefiles_daemon_secctx().

Patch 7: Fix object->file Null-pointer-dereference problem.

Patch 8: Fix for memory out of order in fscache_create_volume().


Zizhi Wo (8):
  cachefiles: Fix incorrect block calculations in
    __cachefiles_prepare_write()
  cachefiles: Fix incorrect length return value in
    cachefiles_ondemand_fd_write_iter()
  cachefiles: Fix missing pos updates in
    cachefiles_ondemand_fd_write_iter()
  cachefiles: Clear invalid cache data in advance
  cachefiles: Clean up in cachefiles_commit_tmpfile()
  cachefiles: Modify inappropriate error return value in
    cachefiles_daemon_secctx()
  cachefiles: Fix NULL pointer dereference in object->file
  netfs/fscache: Add a memory barrier for FSCACHE_VOLUME_CREATING

 fs/cachefiles/daemon.c    |  2 +-
 fs/cachefiles/interface.c |  3 +++
 fs/cachefiles/io.c        | 10 +++++-----
 fs/cachefiles/namei.c     | 23 +++++++++++++----------
 fs/cachefiles/ondemand.c  | 38 +++++++++++++++++++++++++++++---------
 fs/netfs/fscache_volume.c |  3 +--
 6 files changed, 52 insertions(+), 27 deletions(-)

Comments

Zizhi Wo Oct. 10, 2024, 3:08 a.m. UTC | #1
Hi!

This patchset involves some general cachefiles workflows and the on-
demand loading process. For example, the eighth patch fixes a memory
ordering issue in cachefiles, and the fifth patch includes some cleanup.
These all related to changes in the general cachefiles workflow, and I
think these deserve some attention.

Additionally, although the current EROFS on-demand loading mode based on
cachefiles interaction might be considered for switching to the fanotify
mode in the future, I believe the code based on the current cachefiles
on-demand loading mode still requires maintenance. The first few patches
here are bugfixes specifically for that.

Therefore, I would greatly appreciate it if anyone could take some time
to review these patches. So friendly ping.

Thanks,
Zizhi Wo


在 2024/8/21 10:42, Zizhi Wo 写道:
> Hi!
> 
> We recently discovered some bugs through self-discovery and testing in
> erofs ondemand loading mode, and this patchset is mainly used to fix
> them. These patches are relatively simple changes, and I would be excited
> to discuss them together with everyone. Below is a brief introduction to
> each patch:
> 
> Patch 1: Fix for wrong block_number calculated in ondemand write.
> 
> Patch 2: Fix for wrong length return value in ondemand write.
> 
> Patch 3: Fix missing position update in ondemand write, for scenarios
> involving read-ahead, invoking the write syscall.
> 
> Patch 4: Previously, the last redundant data was cleared during the umount
> phase. This patch remove unnecessary data in advance.
> 
> Patch 5: Code clean up for cachefiles_commit_tmpfile().
> 
> Patch 6: Modify error return value in cachefiles_daemon_secctx().
> 
> Patch 7: Fix object->file Null-pointer-dereference problem.
> 
> Patch 8: Fix for memory out of order in fscache_create_volume().
> 
> 
> Zizhi Wo (8):
>    cachefiles: Fix incorrect block calculations in
>      __cachefiles_prepare_write()
>    cachefiles: Fix incorrect length return value in
>      cachefiles_ondemand_fd_write_iter()
>    cachefiles: Fix missing pos updates in
>      cachefiles_ondemand_fd_write_iter()
>    cachefiles: Clear invalid cache data in advance
>    cachefiles: Clean up in cachefiles_commit_tmpfile()
>    cachefiles: Modify inappropriate error return value in
>      cachefiles_daemon_secctx()
>    cachefiles: Fix NULL pointer dereference in object->file
>    netfs/fscache: Add a memory barrier for FSCACHE_VOLUME_CREATING
> 
>   fs/cachefiles/daemon.c    |  2 +-
>   fs/cachefiles/interface.c |  3 +++
>   fs/cachefiles/io.c        | 10 +++++-----
>   fs/cachefiles/namei.c     | 23 +++++++++++++----------
>   fs/cachefiles/ondemand.c  | 38 +++++++++++++++++++++++++++++---------
>   fs/netfs/fscache_volume.c |  3 +--
>   6 files changed, 52 insertions(+), 27 deletions(-)
>
Gao Xiang Oct. 10, 2024, 3:31 a.m. UTC | #2
Hi Zizhi,

On 2024/10/10 11:08, Zizhi Wo wrote:
> Hi!
> 
> This patchset involves some general cachefiles workflows and the on-
> demand loading process. For example, the eighth patch fixes a memory
> ordering issue in cachefiles, and the fifth patch includes some cleanup.
> These all related to changes in the general cachefiles workflow, and I
> think these deserve some attention.
> 
> Additionally, although the current EROFS on-demand loading mode based on
> cachefiles interaction might be considered for switching to the fanotify
> mode in the future, I believe the code based on the current cachefiles
> on-demand loading mode still requires maintenance. The first few patches
> here are bugfixes specifically for that.

Yes, I also agree with you.  I pinged David weeks ago, because many
bugfixes are not only impacted to cachefiles on-demand feature but
also generic cachefiles, hopefully they could be addressed upstream.

Thanks,
Gao Xiang

> 
> Therefore, I would greatly appreciate it if anyone could take some time
> to review these patches. So friendly ping.
> 
> Thanks,
> Zizhi Wo
> 
> 
> 在 2024/8/21 10:42, Zizhi Wo 写道:
>> Hi!
>>
>> We recently discovered some bugs through self-discovery and testing in
>> erofs ondemand loading mode, and this patchset is mainly used to fix
>> them. These patches are relatively simple changes, and I would be excited
>> to discuss them together with everyone. Below is a brief introduction to
>> each patch:
>>
>> Patch 1: Fix for wrong block_number calculated in ondemand write.
>>
>> Patch 2: Fix for wrong length return value in ondemand write.
>>
>> Patch 3: Fix missing position update in ondemand write, for scenarios
>> involving read-ahead, invoking the write syscall.
>>
>> Patch 4: Previously, the last redundant data was cleared during the umount
>> phase. This patch remove unnecessary data in advance.
>>
>> Patch 5: Code clean up for cachefiles_commit_tmpfile().
>>
>> Patch 6: Modify error return value in cachefiles_daemon_secctx().
>>
>> Patch 7: Fix object->file Null-pointer-dereference problem.
>>
>> Patch 8: Fix for memory out of order in fscache_create_volume().
>>
>>
>> Zizhi Wo (8):
>>    cachefiles: Fix incorrect block calculations in
>>      __cachefiles_prepare_write()
>>    cachefiles: Fix incorrect length return value in
>>      cachefiles_ondemand_fd_write_iter()
>>    cachefiles: Fix missing pos updates in
>>      cachefiles_ondemand_fd_write_iter()
>>    cachefiles: Clear invalid cache data in advance
>>    cachefiles: Clean up in cachefiles_commit_tmpfile()
>>    cachefiles: Modify inappropriate error return value in
>>      cachefiles_daemon_secctx()
>>    cachefiles: Fix NULL pointer dereference in object->file
>>    netfs/fscache: Add a memory barrier for FSCACHE_VOLUME_CREATING
>>
>>   fs/cachefiles/daemon.c    |  2 +-
>>   fs/cachefiles/interface.c |  3 +++
>>   fs/cachefiles/io.c        | 10 +++++-----
>>   fs/cachefiles/namei.c     | 23 +++++++++++++----------
>>   fs/cachefiles/ondemand.c  | 38 +++++++++++++++++++++++++++++---------
>>   fs/netfs/fscache_volume.c |  3 +--
>>   6 files changed, 52 insertions(+), 27 deletions(-)
>>
Zizhi Wo Oct. 10, 2024, 4:08 a.m. UTC | #3
在 2024/10/10 11:31, Gao Xiang 写道:
> Hi Zizhi,
> 
> On 2024/10/10 11:08, Zizhi Wo wrote:
>> Hi!
>>
>> This patchset involves some general cachefiles workflows and the on-
>> demand loading process. For example, the eighth patch fixes a memory
>> ordering issue in cachefiles, and the fifth patch includes some cleanup.
>> These all related to changes in the general cachefiles workflow, and I
>> think these deserve some attention.
>>
>> Additionally, although the current EROFS on-demand loading mode based on
>> cachefiles interaction might be considered for switching to the fanotify
>> mode in the future, I believe the code based on the current cachefiles
>> on-demand loading mode still requires maintenance. The first few patches
>> here are bugfixes specifically for that.
> 
> Yes, I also agree with you.  I pinged David weeks ago, because many
> bugfixes are not only impacted to cachefiles on-demand feature but
> also generic cachefiles, hopefully they could be addressed upstream.
> 

Thank you very much for your support and reply!

Thanks,
Zizhi Wo

> Thanks,
> Gao Xiang
>
>>
>> Therefore, I would greatly appreciate it if anyone could take some time
>> to review these patches. So friendly ping.
>>
>> Thanks,
>> Zizhi Wo
>>
>>
>> 在 2024/8/21 10:42, Zizhi Wo 写道:
>>> Hi!
>>>
>>> We recently discovered some bugs through self-discovery and testing in
>>> erofs ondemand loading mode, and this patchset is mainly used to fix
>>> them. These patches are relatively simple changes, and I would be 
>>> excited
>>> to discuss them together with everyone. Below is a brief introduction to
>>> each patch:
>>>
>>> Patch 1: Fix for wrong block_number calculated in ondemand write.
>>>
>>> Patch 2: Fix for wrong length return value in ondemand write.
>>>
>>> Patch 3: Fix missing position update in ondemand write, for scenarios
>>> involving read-ahead, invoking the write syscall.
>>>
>>> Patch 4: Previously, the last redundant data was cleared during the 
>>> umount
>>> phase. This patch remove unnecessary data in advance.
>>>
>>> Patch 5: Code clean up for cachefiles_commit_tmpfile().
>>>
>>> Patch 6: Modify error return value in cachefiles_daemon_secctx().
>>>
>>> Patch 7: Fix object->file Null-pointer-dereference problem.
>>>
>>> Patch 8: Fix for memory out of order in fscache_create_volume().
>>>
>>>
>>> Zizhi Wo (8):
>>>    cachefiles: Fix incorrect block calculations in
>>>      __cachefiles_prepare_write()
>>>    cachefiles: Fix incorrect length return value in
>>>      cachefiles_ondemand_fd_write_iter()
>>>    cachefiles: Fix missing pos updates in
>>>      cachefiles_ondemand_fd_write_iter()
>>>    cachefiles: Clear invalid cache data in advance
>>>    cachefiles: Clean up in cachefiles_commit_tmpfile()
>>>    cachefiles: Modify inappropriate error return value in
>>>      cachefiles_daemon_secctx()
>>>    cachefiles: Fix NULL pointer dereference in object->file
>>>    netfs/fscache: Add a memory barrier for FSCACHE_VOLUME_CREATING
>>>
>>>   fs/cachefiles/daemon.c    |  2 +-
>>>   fs/cachefiles/interface.c |  3 +++
>>>   fs/cachefiles/io.c        | 10 +++++-----
>>>   fs/cachefiles/namei.c     | 23 +++++++++++++----------
>>>   fs/cachefiles/ondemand.c  | 38 +++++++++++++++++++++++++++++---------
>>>   fs/netfs/fscache_volume.c |  3 +--
>>>   6 files changed, 52 insertions(+), 27 deletions(-)
>>>
>