afs: Use alternative invalidation to using launder_folio
authorDavid Howells <dhowells@redhat.com>
Wed, 27 Mar 2024 21:19:17 +0000 (21:19 +0000)
committerDavid Howells <dhowells@redhat.com>
Wed, 1 May 2024 17:07:34 +0000 (18:07 +0100)
Use writepages-based flushing invalidation instead of
invalidate_inode_pages2() and ->launder_folio().  This will allow
->launder_folio() to be removed eventually.

Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: Jeff Layton <jlayton@kernel.org>
cc: linux-afs@lists.infradead.org
cc: netfs@lists.linux.dev
cc: linux-fsdevel@vger.kernel.org

fs/afs/file.c
fs/afs/internal.h
fs/afs/validation.c
fs/afs/write.c

index ef2cc8f565d25b15e086d2fc64c6f565bac7a16b..dfd8f60f5e1fdba3959b4fb0fbcfed5b8ff2a346 100644 (file)
@@ -54,7 +54,6 @@ const struct address_space_operations afs_file_aops = {
        .read_folio     = netfs_read_folio,
        .readahead      = netfs_readahead,
        .dirty_folio    = netfs_dirty_folio,
-       .launder_folio  = netfs_launder_folio,
        .release_folio  = netfs_release_folio,
        .invalidate_folio = netfs_invalidate_folio,
        .migrate_folio  = filemap_migrate_folio,
index 6ce5a612937c61e2021b32cad1f68a22b7c501ca..b93aa026daa432b514a48e12bbdc5066d8d8429d 100644 (file)
@@ -916,7 +916,6 @@ struct afs_operation {
                        loff_t  pos;
                        loff_t  size;
                        loff_t  i_size;
-                       bool    laundering;     /* Laundering page, PG_writeback not set */
                } store;
                struct {
                        struct iattr    *attr;
index 32a53fc8dfb26b292c0817155a7c9d387d66064d..bef8af12ebe27fbddb131efcc65e94fc0303f62d 100644 (file)
@@ -365,9 +365,9 @@ static void afs_zap_data(struct afs_vnode *vnode)
         * written back in a regular file and completely discard the pages in a
         * directory or symlink */
        if (S_ISREG(vnode->netfs.inode.i_mode))
-               invalidate_remote_inode(&vnode->netfs.inode);
+               filemap_invalidate_inode(&vnode->netfs.inode, true, 0, LLONG_MAX);
        else
-               invalidate_inode_pages2(vnode->netfs.inode.i_mapping);
+               filemap_invalidate_inode(&vnode->netfs.inode, false, 0, LLONG_MAX);
 }
 
 /*
index 74402d95a88434bb58e1e3989d296c11d8f9861d..1bc26466eb727bca70e4bedbf17f0f1908265711 100644 (file)
@@ -75,8 +75,7 @@ static void afs_store_data_success(struct afs_operation *op)
        op->ctime = op->file[0].scb.status.mtime_client;
        afs_vnode_commit_status(op, &op->file[0]);
        if (!afs_op_error(op)) {
-               if (!op->store.laundering)
-                       afs_pages_written_back(vnode, op->store.pos, op->store.size);
+               afs_pages_written_back(vnode, op->store.pos, op->store.size);
                afs_stat_v(vnode, n_stores);
                atomic_long_add(op->store.size, &afs_v2net(vnode)->n_store_bytes);
        }
@@ -91,8 +90,7 @@ static const struct afs_operation_ops afs_store_data_operation = {
 /*
  * write to a file
  */
-static int afs_store_data(struct afs_vnode *vnode, struct iov_iter *iter, loff_t pos,
-                         bool laundering)
+static int afs_store_data(struct afs_vnode *vnode, struct iov_iter *iter, loff_t pos)
 {
        struct afs_operation *op;
        struct afs_wb_key *wbk = NULL;
@@ -123,7 +121,6 @@ static int afs_store_data(struct afs_vnode *vnode, struct iov_iter *iter, loff_t
        op->file[0].modification = true;
        op->store.pos = pos;
        op->store.size = size;
-       op->store.laundering = laundering;
        op->flags |= AFS_OPERATION_UNINTR;
        op->ops = &afs_store_data_operation;
 
@@ -168,8 +165,7 @@ static void afs_upload_to_server(struct netfs_io_subrequest *subreq)
               subreq->rreq->debug_id, subreq->debug_index, subreq->io_iter.count);
 
        trace_netfs_sreq(subreq, netfs_sreq_trace_submit);
-       ret = afs_store_data(vnode, &subreq->io_iter, subreq->start,
-                            subreq->rreq->origin == NETFS_LAUNDER_WRITE);
+       ret = afs_store_data(vnode, &subreq->io_iter, subreq->start);
        netfs_write_subrequest_terminated(subreq, ret < 0 ? ret : subreq->len,
                                          false);
 }