From: David Howells <dhowells@redhat.com>
To: Zizhi Wo <wozizhi@huawei.com>
Cc: dhowells@redhat.com, netfs@lists.linux.dev, jlayton@kernel.org,
hsiangkao@linux.alibaba.com, jefflexu@linux.alibaba.com,
zhujia.zj@bytedance.com, linux-erofs@lists.ozlabs.org,
linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
libaokun1@huawei.com, yangerkun@huawei.com, houtao1@huawei.com,
yukuai3@huawei.com
Subject: Re: [PATCH 4/8] cachefiles: Clear invalid cache data in advance
Date: Thu, 10 Oct 2024 12:16:42 +0100 [thread overview]
Message-ID: <303670.1728559002@warthog.procyon.org.uk> (raw)
In-Reply-To: <20240821024301.1058918-5-wozizhi@huawei.com>
Zizhi Wo <wozizhi@huawei.com> wrote:
> In the current on-demand loading scenario, when umount is called, the
> cachefiles_commit_tmpfile() is invoked. When checking the inode
> corresponding to object->file is inconsistent with the dentry,
> cachefiles_unlink() is called to perform cleanup to prevent invalid data
> from occupying space.
>
> The above operation does not apply to the first mount, because the cache
> dentry generated by the first mount must be negative. Moreover, there is no
> need to clear it during the first umount because this part of the data may
> be reusable in the future. But the problem is that, the clean operation can
> currently only be called through cachefiles_withdraw_cookie(), in other
> words the redundant data does not cleaned until the second umount. This
> means that during the second mount, the old cache data generated from the
> first mount still occupies space. So if the user does not manually clean up
> the previous cache before the next mount, it may return insufficient space
> during the second mount phase.
>
> This patch adds an additional cleanup process in the cachefiles_open_file()
> function. When the auxdata check fails, the remaining old cache data is no
> longer needed, the file and dentry corresponding to the object are also
> put. As there is no need to clear it until umount, we can directly clear it
> during the mount process.
>
> Signed-off-by: Zizhi Wo <wozizhi@huawei.com>
Okay, I think this is reasonable as it's done from a worker thread. I wonder
if instead, though, cachefiles_create_file() should be called and then linked
over the top:
https://lore.kernel.org/all/cover.1580251857.git.osandov@fb.com/
though AT_LINK_REPLACE seemed to get stuck.
Note that we can't just truncate the file to nothing instead because I/O might
be in progress on it.
David
next prev parent reply other threads:[~2024-10-10 11:16 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-21 2:42 [PATCH 0/8] netfs/cachefiles: Some bugfixes Zizhi Wo
2024-08-21 2:42 ` [PATCH 1/8] cachefiles: Fix incorrect block calculations in __cachefiles_prepare_write() Zizhi Wo
2024-10-10 10:34 ` David Howells
2024-10-10 11:11 ` Zizhi Wo
2024-10-10 11:36 ` David Howells
2024-10-10 12:17 ` Zizhi Wo
2024-10-10 13:15 ` Zizhi Wo
2024-08-21 2:42 ` [PATCH 2/8] cachefiles: Fix incorrect length return value in cachefiles_ondemand_fd_write_iter() Zizhi Wo
2024-08-21 2:42 ` [PATCH 3/8] cachefiles: Fix missing pos updates " Zizhi Wo
2024-10-10 11:26 ` David Howells
2024-08-21 2:42 ` [PATCH 4/8] cachefiles: Clear invalid cache data in advance Zizhi Wo
2024-10-10 11:16 ` David Howells [this message]
2024-08-21 2:42 ` [PATCH 5/8] cachefiles: Clean up in cachefiles_commit_tmpfile() Zizhi Wo
2024-10-10 11:23 ` David Howells
2024-08-21 2:42 ` [PATCH 6/8] cachefiles: Modify inappropriate error return value in cachefiles_daemon_secctx() Zizhi Wo
2024-10-10 11:31 ` David Howells
2024-10-10 11:47 ` Zizhi Wo
2024-08-21 2:43 ` [PATCH 7/8] cachefiles: Fix NULL pointer dereference in object->file Zizhi Wo
2024-10-10 11:26 ` David Howells
2024-10-10 12:04 ` Zizhi Wo
2024-10-10 14:52 ` David Howells
2024-10-11 1:31 ` Zizhi Wo
2024-08-21 2:43 ` [PATCH 8/8] netfs/fscache: Add a memory barrier for FSCACHE_VOLUME_CREATING Zizhi Wo
2024-10-10 11:24 ` David Howells
2024-10-10 3:08 ` [PATCH 0/8] netfs/cachefiles: Some bugfixes Zizhi Wo
2024-10-10 3:31 ` Gao Xiang
2024-10-10 4:08 ` Zizhi Wo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=303670.1728559002@warthog.procyon.org.uk \
--to=dhowells@redhat.com \
--cc=houtao1@huawei.com \
--cc=hsiangkao@linux.alibaba.com \
--cc=jefflexu@linux.alibaba.com \
--cc=jlayton@kernel.org \
--cc=libaokun1@huawei.com \
--cc=linux-erofs@lists.ozlabs.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netfs@lists.linux.dev \
--cc=wozizhi@huawei.com \
--cc=yangerkun@huawei.com \
--cc=yukuai3@huawei.com \
--cc=zhujia.zj@bytedance.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox