On Fri, 2025-02-14 at 20:35 +0000, David Howells wrote: > Viacheslav Dubeyko <Slava.Dubeyko@xxxxxxx> wrote: > > > > There's still the issue of encrypted filenames occasionally showing through > > > which generic/397 is showing up - but I don't think your patches here fix > > > that, right? > > > > > > > This patchset doesn't fix the generic/397 issue. I sent another patch ([PATCH > > v2] ceph: Fix kernel crash in generic/397 test) [1] before this one with the > > fix. > > That doesn't fix the problem either. That seems to be fixing a crash, not: > > generic/397 - output mismatch (see /root/xfstests-dev/results//generic/397.out.bad) > --- tests/generic/397.out 2024-09-12 12:36:14.167441927 +0100 > +++ /root/xfstests-dev/results//generic/397.out.bad 2025-02-14 20:34:10.365900035 +0000 > @@ -1,13 +1,27 @@ > QA output created by 397 > +Only in /xfstest.scratch/ref_dir: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy > +Only in /xfstest.scratch/edir: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy����Sd�S�e��[�@���7,�� > [�g�� > +Only in /xfstest.scratch/edir: 70h6RnwpEg1PMtJp9yQ,2g > +Only in /xfstest.scratch/edir: HHBOImQ7cdmsZKNhc5yPCX+XKu0+dn4VViEQzd0q3Ig > +Only in /xfstest.scratch/edir: HXYO3UK3FrxqwSZaNnQ5zQ > +Only in /xfstest.scratch/edir: PecH6opy8KkkB8ir8Oz0pw > ... > (Run 'diff -u /root/xfstests-dev/tests/generic/397.out /root/xfstests-dev/results//generic/397.out.bad' to see the entire diff) > > > Do you mean that you applied this modification? --- fs/ceph/addr.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c index 85936f6d2bf7..5e6ba92219f3 100644 --- a/fs/ceph/addr.c +++ b/fs/ceph/addr.c @@ -396,6 +396,15 @@ static void ceph_netfs_issue_read(struct netfs_io_subrequest *subreq) struct page **pages; size_t page_off; + /* + * The io_iter.count needs to be corrected to aligned length. + * Otherwise, iov_iter_get_pages_alloc2() operates with + * the initial unaligned length value. As a result, + * ceph_msg_data_cursor_init() triggers BUG_ON() in the case + * if msg->sparse_read_total > msg->data_length. + */ + subreq->io_iter.count = len; + err = iov_iter_get_pages_alloc2(&subreq->io_iter, &pages, len, &page_off); if (err < 0) { doutc(cl, "%llx.%llx failed to allocate pages, %d\n", @@ -405,6 +414,7 @@ static void ceph_netfs_issue_read(struct netfs_io_subrequest *subreq) /* should always give us a page-aligned read */ WARN_ON_ONCE(page_off); + len = err; err = 0; -- 2.47.1