mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [REGRESSION] exfat: swapon(2) fails with EINVAL after iomap conversion
@ 2026-06-03 11:02 Jan Polensky
  2026-06-03 11:10 ` Namjae Jeon
  0 siblings, 1 reply; 6+ messages in thread
From: Jan Polensky @ 2026-06-03 11:02 UTC (permalink / raw)
  To: Namjae Jeon, linux-fsdevel
  Cc: Sungjong Seo, Yuezhang Mo, Christoph Hellwig, Darrick J . Wong,
	linux-kernel, regressions, Jan Polensky

Hi,

we are seeing a regression on linux-next after commit

  614f71ca1bdfaa2f25a6f147fe22f3ad031f8e2b
  ("exfat: add iomap buffered I/O support")

With this change, swapon(2) on an exfat swapfile fails with EINVAL.

Observed fallout in LTP:
  swapoff01
  swapoff02
  swapon01
  swapon02
  swapon03

Example failure:

  tst_test.c:1980: TINFO: === Testing on exfat ===
  tst_test.c:1291: TINFO: Formatting /dev/loop0 with exfat opts='' extra opts=''
  tst_test.c:1303: TINFO: Mounting /dev/loop0 to /tmp/LTP_swaKmkGVo/mntpoint fstyp=exfat flags=0
  tse_swap.c:196: TINFO: create a swapfile size of 1 megabytes (MB)
  tst_ioctl.c:26: TINFO: FIBMAP ioctl is supported
  tse_swap.c:228: TFAIL: swapon() on exfat failed: EINVAL (22)

and from swapon02:

  swapon02.c:56: TWARN: swapon(alreadyused) failed: EINVAL (22)
  swapon02.c:73: TFAIL: swapon(2) fail with File already used expected EBUSY: EINVAL (22)

The iomap conversion changes exfat_aops to iomap based callbacks, but does not add a
.swap_activate handler. The VFS documentation says that ->swap_activate() should call
add_swap_extent(), or the helper iomap_swapfile_activate().

So this looks like an exfat swap activation regression triggered by the iomap buffered I/O conversion.

#regzbot introduced: 614f71ca1bdfaa2f25a6f147fe22f3ad031f8e2b
#regzbot monitor: https://lore.kernel.org/all/PUZPR04MB63168E8C2FB92B80F9F6476581002@PUZPR04MB6316.apcprd04.prod.outlook.com/

Thanks
Jan

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [REGRESSION] exfat: swapon(2) fails with EINVAL after iomap conversion
  2026-06-03 11:02 [REGRESSION] exfat: swapon(2) fails with EINVAL after iomap conversion Jan Polensky
@ 2026-06-03 11:10 ` Namjae Jeon
  2026-06-03 13:19   ` [PATCH] exfat: add swap_activate support Jan Polensky
  0 siblings, 1 reply; 6+ messages in thread
From: Namjae Jeon @ 2026-06-03 11:10 UTC (permalink / raw)
  To: Jan Polensky
  Cc: linux-fsdevel, Sungjong Seo, Yuezhang Mo, Christoph Hellwig,
	Darrick J . Wong, linux-kernel, regressions

On Wed, Jun 3, 2026 at 8:02 PM Jan Polensky <japo@linux.ibm.com> wrote:
>
> Hi,
>
> we are seeing a regression on linux-next after commit
>
>   614f71ca1bdfaa2f25a6f147fe22f3ad031f8e2b
>   ("exfat: add iomap buffered I/O support")
>
> With this change, swapon(2) on an exfat swapfile fails with EINVAL.
>
> Observed fallout in LTP:
>   swapoff01
>   swapoff02
>   swapon01
>   swapon02
>   swapon03
>
> Example failure:
>
>   tst_test.c:1980: TINFO: === Testing on exfat ===
>   tst_test.c:1291: TINFO: Formatting /dev/loop0 with exfat opts='' extra opts=''
>   tst_test.c:1303: TINFO: Mounting /dev/loop0 to /tmp/LTP_swaKmkGVo/mntpoint fstyp=exfat flags=0
>   tse_swap.c:196: TINFO: create a swapfile size of 1 megabytes (MB)
>   tst_ioctl.c:26: TINFO: FIBMAP ioctl is supported
>   tse_swap.c:228: TFAIL: swapon() on exfat failed: EINVAL (22)
>
> and from swapon02:
>
>   swapon02.c:56: TWARN: swapon(alreadyused) failed: EINVAL (22)
>   swapon02.c:73: TFAIL: swapon(2) fail with File already used expected EBUSY: EINVAL (22)
>
> The iomap conversion changes exfat_aops to iomap based callbacks, but does not add a
> .swap_activate handler. The VFS documentation says that ->swap_activate() should call
> add_swap_extent(), or the helper iomap_swapfile_activate().
>
> So this looks like an exfat swap activation regression triggered by the iomap buffered I/O conversion.
You have already suggested a solution. Could you please provide a
patch for this ?
Thanks for the report.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH] exfat: add swap_activate support
  2026-06-03 11:10 ` Namjae Jeon
@ 2026-06-03 13:19   ` Jan Polensky
  2026-06-03 14:34     ` Namjae Jeon
  0 siblings, 1 reply; 6+ messages in thread
From: Jan Polensky @ 2026-06-03 13:19 UTC (permalink / raw)
  To: linkinjeon
  Cc: djwong, hch, japo, linux-fsdevel, linux-kernel, regressions,
	sj1557.seo, yuezhang.mo

Commit 614f71ca1bdf ("exfat: add iomap buffered I/O support")
converted exfat buffered I/O to iomap, but did not add a
.swap_activate handler to the address_space_operations.

swapon(2) on an exfat swapfile then fails with EINVAL, which causes
LTP swap tests to fail.

Add exfat_iomap_swap_activate() and hook it into exfat_aops so exfat
uses iomap_swapfile_activate() for swapfile activation.

Fixes: 614f71ca1bdf ("exfat: add iomap buffered I/O support")
Closes: https://lore.kernel.org/all/20260603110212.3020276-1-japo@linux.ibm.com/
Signed-off-by: Jan Polensky <japo@linux.ibm.com>
---
 fs/exfat/inode.c | 1 +
 fs/exfat/iomap.c | 6 ++++++
 fs/exfat/iomap.h | 3 +++
 3 files changed, 10 insertions(+)

diff --git a/fs/exfat/inode.c b/fs/exfat/inode.c
index 96ea243c67db..3b3ac722cf07 100644
--- a/fs/exfat/inode.c
+++ b/fs/exfat/inode.c
@@ -496,6 +496,7 @@ static const struct address_space_operations exfat_aops = {
 	.release_folio		= iomap_release_folio,
 	.invalidate_folio	= iomap_invalidate_folio,
 	.direct_IO		= exfat_direct_IO,
+	.swap_activate		= exfat_iomap_swap_activate,
 };

 static inline unsigned long exfat_hash(loff_t i_pos)
diff --git a/fs/exfat/iomap.c b/fs/exfat/iomap.c
index 188df8cfac9a..54c724cea1d0 100644
--- a/fs/exfat/iomap.c
+++ b/fs/exfat/iomap.c
@@ -213,3 +213,9 @@ const struct iomap_read_ops exfat_iomap_bio_read_ops = {
 	.read_folio_range	= iomap_bio_read_folio_range,
 	.submit_read		= exfat_iomap_bio_submit_read,
 };
+
+int exfat_iomap_swap_activate(struct swap_info_struct *sis,
+			       struct file *file, sector_t *span)
+{
+	return iomap_swapfile_activate(sis, file, span, &exfat_iomap_ops);
+}
diff --git a/fs/exfat/iomap.h b/fs/exfat/iomap.h
index 7f8dcbe20a17..295e36312baf 100644
--- a/fs/exfat/iomap.h
+++ b/fs/exfat/iomap.h
@@ -11,4 +11,7 @@ extern const struct iomap_ops exfat_write_iomap_ops;
 extern const struct iomap_writeback_ops exfat_writeback_ops;
 extern const struct iomap_read_ops exfat_iomap_bio_read_ops;

+int exfat_iomap_swap_activate(struct swap_info_struct *sis,
+			       struct file *file, sector_t *span);
+
 #endif /* _LINUX_EXFAT_IOMAP_H */
--
2.53.0


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] exfat: add swap_activate support
  2026-06-03 13:19   ` [PATCH] exfat: add swap_activate support Jan Polensky
@ 2026-06-03 14:34     ` Namjae Jeon
  2026-06-08 15:32       ` Jan Polensky
  0 siblings, 1 reply; 6+ messages in thread
From: Namjae Jeon @ 2026-06-03 14:34 UTC (permalink / raw)
  To: Jan Polensky
  Cc: djwong, hch, linux-fsdevel, linux-kernel, regressions,
	sj1557.seo, yuezhang.mo

On Wed, Jun 3, 2026 at 10:20 PM Jan Polensky <japo@linux.ibm.com> wrote:
>
> Commit 614f71ca1bdf ("exfat: add iomap buffered I/O support")
> converted exfat buffered I/O to iomap, but did not add a
> .swap_activate handler to the address_space_operations.
>
> swapon(2) on an exfat swapfile then fails with EINVAL, which causes
> LTP swap tests to fail.
>
> Add exfat_iomap_swap_activate() and hook it into exfat_aops so exfat
> uses iomap_swapfile_activate() for swapfile activation.
>
> Fixes: 614f71ca1bdf ("exfat: add iomap buffered I/O support")
> Closes: https://lore.kernel.org/all/20260603110212.3020276-1-japo@linux.ibm.com/
> Signed-off-by: Jan Polensky <japo@linux.ibm.com>
Applied it to #dev.
Thanks!

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] exfat: add swap_activate support
  2026-06-03 14:34     ` Namjae Jeon
@ 2026-06-08 15:32       ` Jan Polensky
  2026-06-09  9:29         ` Namjae Jeon
  0 siblings, 1 reply; 6+ messages in thread
From: Jan Polensky @ 2026-06-08 15:32 UTC (permalink / raw)
  To: Namjae Jeon
  Cc: djwong, hch, linux-fsdevel, linux-kernel, regressions,
	sj1557.seo, yuezhang.mo

On Wed, Jun 03, 2026 at 11:34:55PM +0900, Namjae Jeon wrote:
> On Wed, Jun 3, 2026 at 10:20 PM Jan Polensky <japo@linux.ibm.com> wrote:
> >
> > Commit 614f71ca1bdf ("exfat: add iomap buffered I/O support")
> > converted exfat buffered I/O to iomap, but did not add a
> > .swap_activate handler to the address_space_operations.
> >
> > swapon(2) on an exfat swapfile then fails with EINVAL, which causes
> > LTP swap tests to fail.
> >
> > Add exfat_iomap_swap_activate() and hook it into exfat_aops so exfat
> > uses iomap_swapfile_activate() for swapfile activation.
> >
> > Fixes: 614f71ca1bdf ("exfat: add iomap buffered I/O support")
> > Closes: https://lore.kernel.org/all/20260603110212.3020276-1-japo@linux.ibm.com/
> > Signed-off-by: Jan Polensky <japo@linux.ibm.com>
> Applied it to #dev.
> Thanks!

Hi Namjae,

I think one line might have been missed when applying my patch:

    .swap_activate = exfat_iomap_swap_activate,

I checked linux-next (master and next-20260604 / next-20260605),
and the issue is still present there.

Link:
https://lore.kernel.org/all/20260603131950.321858-1-japo@linux.ibm.com/

Could you please take a look?

Thanks,
Jan

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] exfat: add swap_activate support
  2026-06-08 15:32       ` Jan Polensky
@ 2026-06-09  9:29         ` Namjae Jeon
  0 siblings, 0 replies; 6+ messages in thread
From: Namjae Jeon @ 2026-06-09  9:29 UTC (permalink / raw)
  To: Jan Polensky
  Cc: djwong, hch, linux-fsdevel, linux-kernel, regressions,
	sj1557.seo, yuezhang.mo

On Tue, Jun 9, 2026 at 12:32 AM Jan Polensky <japo@linux.ibm.com> wrote:
>
> On Wed, Jun 03, 2026 at 11:34:55PM +0900, Namjae Jeon wrote:
> > On Wed, Jun 3, 2026 at 10:20 PM Jan Polensky <japo@linux.ibm.com> wrote:
> > >
> > > Commit 614f71ca1bdf ("exfat: add iomap buffered I/O support")
> > > converted exfat buffered I/O to iomap, but did not add a
> > > .swap_activate handler to the address_space_operations.
> > >
> > > swapon(2) on an exfat swapfile then fails with EINVAL, which causes
> > > LTP swap tests to fail.
> > >
> > > Add exfat_iomap_swap_activate() and hook it into exfat_aops so exfat
> > > uses iomap_swapfile_activate() for swapfile activation.
> > >
> > > Fixes: 614f71ca1bdf ("exfat: add iomap buffered I/O support")
> > > Closes: https://lore.kernel.org/all/20260603110212.3020276-1-japo@linux.ibm.com/
> > > Signed-off-by: Jan Polensky <japo@linux.ibm.com>
> > Applied it to #dev.
> > Thanks!
>
> Hi Namjae,
>
> I think one line might have been missed when applying my patch:
>
>     .swap_activate = exfat_iomap_swap_activate,
>
> I checked linux-next (master and next-20260604 / next-20260605),
> and the issue is still present there.
>
> Link:
> https://lore.kernel.org/all/20260603131950.321858-1-japo@linux.ibm.com/
>
> Could you please take a look?
Sorry about that, my bad. Your patch wasn't being applied properly, so
I tried to update it manually and made a mistake. Anyway, I have just
fixed it. Thank you very much for pointing it out!

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2026-06-09  9:29 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-06-03 11:02 [REGRESSION] exfat: swapon(2) fails with EINVAL after iomap conversion Jan Polensky
2026-06-03 11:10 ` Namjae Jeon
2026-06-03 13:19   ` [PATCH] exfat: add swap_activate support Jan Polensky
2026-06-03 14:34     ` Namjae Jeon
2026-06-08 15:32       ` Jan Polensky
2026-06-09  9:29         ` Namjae Jeon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®