From: David Howells <dhowells@redhat.com>
To: Hannes Reinecke <hare@suse.de>
Cc: dhowells@redhat.com,
"Pankaj Raghav (Samsung)" <kernel@pankajraghav.com>,
brauner@kernel.org, akpm@linux-foundation.org,
chandan.babu@oracle.com, linux-fsdevel@vger.kernel.org,
djwong@kernel.org, gost.dev@samsung.com,
linux-xfs@vger.kernel.org, hch@lst.de, david@fromorbit.com,
Zi Yan <ziy@nvidia.com>,
yang@os.amperecomputing.com, linux-kernel@vger.kernel.org,
linux-mm@kvack.org, willy@infradead.org, john.g.garry@oracle.com,
cl@os.amperecomputing.com, p.raghav@samsung.com,
mcgrof@kernel.org, ryan.roberts@arm.com
Subject: Re: [PATCH v12 00/10] enable bs > ps in XFS
Date: Mon, 19 Aug 2024 13:25:05 +0100 [thread overview]
Message-ID: <3407981.1724070305@warthog.procyon.org.uk> (raw)
In-Reply-To: <df26beed-97c7-44e4-b380-2260b8331ea9@suse.de>
Hannes Reinecke <hare@suse.de> wrote:
> IE you essentially nail AFS to use PAGE_SIZE.
> Not sure how you would tell AFS to use a different block size;
> maybe a mount option?
As far as I know:
sb->s_blocksize = PAGE_SIZE;
sb->s_blocksize_bits = PAGE_SHIFT;
isn't used by the VM.
> Hmm. I'd rather fix the obvious places in afs first; just do a quick
> grep for 'PAGE_', that'll give you a good impression of places to look at.
Sure:
fs/afs/dir.c: nr_pages = (i_size + PAGE_SIZE - 1) / PAGE_SIZE;
fs/afs/dir.c: req->len = nr_pages * PAGE_SIZE; /* We can ask for more than there is */
fs/afs/dir.c: task_io_account_read(PAGE_SIZE * req->nr_pages);
fs/afs/dir.c: folio = __filemap_get_folio(dir->i_mapping, ctx->pos / PAGE_SIZE,
fs/afs/xdr_fs.h:#define AFS_DIR_BLOCKS_PER_PAGE (PAGE_SIZE / AFS_DIR_BLOCK_SIZE)
Those only affect directories.
fs/afs/mntpt.c: if (size < 2 || size > PAGE_SIZE - 1)
That only affects mountpoint symlinks.
fs/afs/super.c: sb->s_blocksize = PAGE_SIZE;
This is the only thing (and sb->s_blocksize_bits) that might affect files. I
checked, and doubling this and adding 1 to bits does not alter the outcome.
Now, the VM wrangling is offloaded to netfslib, and most of that is to do with
converting between indices and file positions. Going through the usages of
PAGE_SIZE there:
fs/netfs/buffered_read.c: size += PAGE_SIZE << order;
That was recording the size of a folio readahead allocated.
fs/netfs/buffered_read.c: size_t nr_bvec = flen / PAGE_SIZE + 2;
fs/netfs/buffered_read.c: part = min_t(size_t, to - off, PAGE_SIZE);
Those two are used to fill in the gaps around a partial page - but that didn't
appear in the logs.
fs/netfs/buffered_write.c: pgoff_t index = pos / PAGE_SIZE;
fs/netfs/buffered_write.c: fgp_flags |= fgf_set_order(pos % PAGE_SIZE + part);
Those two are used when asking __filemap_get_folio() to allocate a folio to
write into. I got a folio of the right size and index, so that's not the
problem.
fs/netfs/fscache_io.c: pgoff_t first = start / PAGE_SIZE;
fs/netfs/fscache_io.c: pgoff_t last = (start + len - 1) / PAGE_SIZE;
Caching is not enabled at the moment, so these don't happen.
fs/netfs/iterator.c: cur_npages = DIV_ROUND_UP(ret, PAGE_SIZE);
fs/netfs/iterator.c: len = ret > PAGE_SIZE ? PAGE_SIZE : ret;
I'm not doing DIO, so these aren't used.
fs/netfs/iterator.c: pgoff_t index = pos / PAGE_SIZE;
I'm not using an ITER_XARRAY iterator, so this doesn't happen.
fs/netfs/misc.c: rreq->io_iter.count += PAGE_SIZE << order;
This is just multiplying up the folio size to add to the byte count.
fs/netfs/read_collect.c: fsize = PAGE_SIZE << subreq->curr_folio_order;
fs/netfs/read_collect.c: WARN_ON_ONCE(folioq_folio(folioq, slot)->index != fpos / PAGE_SIZE)) {
These two are converting between a file pos and an index - but only during
read, and I can see from wireshark that we're writing the wrong data to the
server before we get this far.
And that's all the PAGE_SIZE usages in afs and netfslib.
David
next prev parent reply other threads:[~2024-08-19 12:25 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-15 9:08 Pankaj Raghav (Samsung)
2024-08-15 9:08 ` [PATCH v12 01/10] fs: Allow fine-grained control of folio sizes Pankaj Raghav (Samsung)
2024-08-15 9:08 ` [PATCH v12 02/10] filemap: allocate mapping_min_order folios in the page cache Pankaj Raghav (Samsung)
2024-08-15 9:08 ` [PATCH v12 03/10] readahead: allocate folios with mapping_min_order in readahead Pankaj Raghav (Samsung)
2024-08-15 9:08 ` [PATCH v12 04/10] mm: split a folio in minimum folio order chunks Pankaj Raghav (Samsung)
2024-08-15 9:08 ` [PATCH v12 05/10] filemap: cap PTE range to be created to allowed zero fill in folio_map_range() Pankaj Raghav (Samsung)
2024-08-15 9:08 ` [PATCH v12 06/10] iomap: fix iomap_dio_zero() for fs bs > system page size Pankaj Raghav (Samsung)
2024-08-15 9:08 ` [PATCH v12 07/10] xfs: use kvmalloc for xattr buffers Pankaj Raghav (Samsung)
2024-08-15 9:08 ` [PATCH v12 08/10] xfs: expose block size in stat Pankaj Raghav (Samsung)
2024-08-15 9:08 ` [PATCH v12 09/10] xfs: make the calculation generic in xfs_sb_validate_fsb_count() Pankaj Raghav (Samsung)
2024-08-15 9:08 ` [PATCH v12 10/10] xfs: enable block size larger than page size support Pankaj Raghav (Samsung)
2024-08-16 19:31 ` [PATCH v12 00/10] enable bs > ps in XFS David Howells
2024-08-18 16:51 ` Pankaj Raghav (Samsung)
2024-08-18 20:16 ` David Howells
2024-08-19 7:24 ` Hannes Reinecke
2024-08-19 7:37 ` Pankaj Raghav (Samsung)
2024-08-19 12:25 ` David Howells [this message]
2024-08-19 11:46 ` David Howells
2024-08-19 12:48 ` Hannes Reinecke
2024-08-19 14:08 ` David Howells
2024-08-19 16:39 ` Pankaj Raghav (Samsung)
2024-08-19 18:40 ` David Howells
2024-08-20 9:17 ` Pankaj Raghav (Samsung)
2024-08-19 11:59 ` David Howells
2024-08-20 23:24 ` David Howells
2024-08-21 7:16 ` Pankaj Raghav (Samsung)
2024-08-19 15:17 ` David Howells
2024-08-19 16:51 ` David Howells
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=3407981.1724070305@warthog.procyon.org.uk \
--to=dhowells@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=brauner@kernel.org \
--cc=chandan.babu@oracle.com \
--cc=cl@os.amperecomputing.com \
--cc=david@fromorbit.com \
--cc=djwong@kernel.org \
--cc=gost.dev@samsung.com \
--cc=hare@suse.de \
--cc=hch@lst.de \
--cc=john.g.garry@oracle.com \
--cc=kernel@pankajraghav.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-xfs@vger.kernel.org \
--cc=mcgrof@kernel.org \
--cc=p.raghav@samsung.com \
--cc=ryan.roberts@arm.com \
--cc=willy@infradead.org \
--cc=yang@os.amperecomputing.com \
--cc=ziy@nvidia.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