RE: [EXTERNAL] [PATCH v3 05/12] cifs: drop usage of page_file_offset

From: Steven French
Date: Mon Apr 29 2024 - 22:23:22 EST


Makes sense - I will try to look at this fixing the swapon and reading from swap over smb3.1.1 mounts in the next few weeks, but if you have a good example of sample code (from one of the other FS that does this well) that would help.

-----Original Message-----
From: Matthew Wilcox <willy@xxxxxxxxxxxxx>
Sent: Monday, April 29, 2024 3:26 PM
To: Steven French <Steven.French@xxxxxxxxxxxxx>
Cc: Kairui Song <kasong@xxxxxxxxxxx>; linux-mm@xxxxxxxxx; Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>; Huang, Ying <ying.huang@xxxxxxxxx>; Chris Li <chrisl@xxxxxxxxxx>; Barry Song <v-songbaohua@xxxxxxxx>; Ryan Roberts <ryan.roberts@xxxxxxx>; Neil Brown <neilb@xxxxxxx>; Minchan Kim <minchan@xxxxxxxxxx>; Hugh Dickins <hughd@xxxxxxxxxx>; David Hildenbrand <david@xxxxxxxxxx>; Yosry Ahmed <yosryahmed@xxxxxxxxxx>; linux-fsdevel@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; Namjae Jeon <linkinjeon@xxxxxxxxxx>; Paulo Alcantara (SUSE) <pc@xxxxxxxxxxxxx>; Shyam Prasad <Shyam.Prasad@xxxxxxxxxxxxx>; Bharath S M <bharathsm@xxxxxxxxxxxxx>
Subject: Re: [EXTERNAL] [PATCH v3 05/12] cifs: drop usage of page_file_offset

On Mon, Apr 29, 2024 at 08:19:31PM +0000, Steven French wrote:
> Wouldn't this make it harder to fix the regression when swap file support was temporarily removed from cifs.ko (due to the folio migration)? I was hoping to come back to fixing swapfile support for cifs.ko in 6.10-rc (which used to pass the various xfstests for this but code got removed with folios/netfs changes).

It was neither the folio conversion nor the netfs conversion which removed the claim of swap support from cifs, but NeilBrown's introduction of ->swap_rw. In commit e1209d3a7a67 he claims that

Only two filesystems set SWP_FS_OPS:
- cifs sets the flag, but ->direct_IO always fails so swap cannot work.
- nfs sets the flag, but ->direct_IO calls generic_write_checks()
which has failed on swap files for several releases.

As I recall the xfstests only checked that swapon/swapoff works; they don't actually test that writing to swap and reading back from it work.