From: Petr Chmelar <petr.chmelar@innovatrics.com>
To: David Howells <dhowells@redhat.com>
Cc: Christian Brauner <christian@brauner.io>,
Paulo Alcantara <pc@manguebit.org>,
Matthew Wilcox <willy@infradead.org>,
Namjae Jeon <linkinjeon@kernel.org>,
Marc Dionne <marc.dionne@auristor.com>,
Stefan Metzmacher <metze@samba.org>,
Eric Van Hensbergen <ericvh@kernel.org>,
Dominique Martinet <asmadeus@codewreck.org>,
Ilya Dryomov <idryomov@gmail.com>,
netfs@lists.linux.dev, linux-afs@lists.infradead.org,
linux-cifs@vger.kernel.org, linux-nfs@vger.kernel.org,
ceph-devel@vger.kernel.org, v9fs@lists.linux.dev,
linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v12 4/5] cachefiles: Don't rely on backing fs storage map for most use cases
Date: Tue, 13 Oct 2026 09:56:37 +0000 [thread overview]
Message-ID: <20261013.cachefiles-partial-zeros-trace.pchmelar@innovatrics.com> (raw)
In-Reply-To: <1655268.1791878098@warthog.procyon.org.uk>
David Howells <dhowells@redhat.com> wrote:
> Unfortunately, I can't reproduce this. Can you get me some tracing?
Thanks for looking. The trace shows reads served from the cache over
ranges that were never written to it; details below.
I think the reason you don't see it is how the file gets into the cache,
which I should have said in the report. In your run, fio lays the file
out through the mount, so the client fills its cache sequentially and the
object ends up CONTENT_ALL. In ours, the client never writes the file:
it is written on the server side beforehand, and the client's cache fills
only as the client reads it, at random offsets, so the object stays
BACKFS_MAP. That is how our training nodes use the cache: they read data
sets that they didn't write, mostly at random offsets.
I reran it on 9f8b64f66 over 9p with your tracepoints enabled, with the
same result: 936 of 4096 64 KiB blocks wrong, 825 of them zeros, first
wrong blocks 10, 13, 15, 24, 26 and 27. I'm sending you the trace
off-list; it is 790 KB as bzip2.
What the trace shows:
- After the random reads the object is set to BACKFS_MAP:
cachefiles_coherency: o=00000001 SET ok B=c4 oz=10000000 c=3
After dropping the page cache it is looked up again (o=00000002 OK,
c=3) and set to c=4.
- Before the full read, WRIT TERM subrequests cover 2048 of the 4096
64 KiB blocks, as expected for half the file.
- During the full read, READ subrequests from the cache cover 2143
blocks, and 936 of those never had a WRIT: the same count as the wrong
blocks, starting with the same blocks, 10, 13, 15, 24, 26 and 27.
For example this one read:
R=0000285a[1] READ TERM f=110 s=7c000 7c000/7c000 s=7 e=0
covers 0xa0000-0xb0000, 0xd0000-0xe0000 and 0xf0000-0xf8000, and no
write ever reached those ranges. The writes around it were:
R=00002291[3] WRIT TERM f=100 s=70000 20000/20000 s=6 e=0
R=000024dc[1] WRIT TERM f=100 s=90000 10000/10000 s=16 e=0
R=00002291[4] WRIT TERM f=100 s=b0000 20000/20000 s=9 e=0
R=000024dc[2] WRIT TERM f=100 s=e0000 10000/10000 s=3 e=0
So for the BACKFS_MAP object, the occupancy the read is based on treats
the holes between those writes as data.
> One further question occurs to me: does the entire 256M file fit in the
> test VM's memory?
Yes. The VM has 7946 MiB of memory with 7498 MiB available, and the page
cache is dropped before the full read.
The setup, for reference:
- 9f8b64f66 with netfs, fscache, cachefiles, 9p and 9p fscache built in;
QEMU without KVM, 4 vCPUs, 8 GiB RAM
- 9p: QEMU virtfs local, security_model=none, the host directory on XFS;
mounted with trans=virtio,version=9p2000.L,cache=fscache,msize=1048576
- part.bin: 256 MiB from /dev/urandom, written on the host before the
mount
- cache: XFS on a loop device in the guest, cachefilesd 0.10.10
The trace analysis was done with LLM assistance.
Thanks,
Petr
next prev parent reply other threads:[~2026-10-13 9:56 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-10 22:02 [PATCH v12 0/5] netfs, cachefiles: Changes for next, primarily occupancy tracking-related David Howells
2026-09-10 22:02 ` [PATCH v12 1/5] cachefiles: Clean up cachefiles_do_prepare_read() David Howells
2026-09-11 20:19 ` Paulo Alcantara
2026-09-10 22:02 ` [PATCH v12 2/5] netfs, cachefiles: Add a couple of traces for write failure David Howells
2026-09-11 20:19 ` Paulo Alcantara
2026-09-10 22:02 ` [PATCH v12 3/5] cachefiles: Add a tracepoint to log insufficient space errors David Howells
2026-09-11 20:19 ` Paulo Alcantara
2026-09-10 22:02 ` [PATCH v12 4/5] cachefiles: Don't rely on backing fs storage map for most use cases David Howells
2026-10-11 5:29 ` Petr Chmelar
2026-10-13 7:54 ` David Howells
2026-10-13 9:56 ` Petr Chmelar [this message]
2026-09-10 22:02 ` [PATCH v12 5/5] cachefiles: Preset the state xattr when creating a new file David Howells
2026-09-11 20:21 ` Paulo Alcantara
2026-09-25 14:15 ` [PATCH v12 0/5] netfs, cachefiles: Changes for next, primarily occupancy tracking-related Christian Brauner
2026-10-11 5:29 ` Petr Chmelar
2026-10-13 8:14 ` David Howells
2026-10-13 10:43 ` Daire Byrne
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=20261013.cachefiles-partial-zeros-trace.pchmelar@innovatrics.com \
--to=petr.chmelar@innovatrics.com \
--cc=asmadeus@codewreck.org \
--cc=ceph-devel@vger.kernel.org \
--cc=christian@brauner.io \
--cc=dhowells@redhat.com \
--cc=ericvh@kernel.org \
--cc=idryomov@gmail.com \
--cc=linkinjeon@kernel.org \
--cc=linux-afs@lists.infradead.org \
--cc=linux-cifs@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=marc.dionne@auristor.com \
--cc=metze@samba.org \
--cc=netfs@lists.linux.dev \
--cc=pc@manguebit.org \
--cc=v9fs@lists.linux.dev \
--cc=willy@infradead.org \
/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