backing_dev: remove current->backing_dev_info
authorChristoph Hellwig <hch@lst.de>
Thu, 1 Jun 2023 14:58:53 +0000 (16:58 +0200)
committerAndrew Morton <akpm@linux-foundation.org>
Fri, 9 Jun 2023 23:25:51 +0000 (16:25 -0700)
Patch series "cleanup the filemap / direct I/O interaction", v4.

This series cleans up some of the generic write helper calling conventions
and the page cache writeback / invalidation for direct I/O.  This is a
spinoff from the no-bufferhead kernel project, for which we'll want to an
use iomap based buffered write path in the block layer.

This patch (of 12):

The last user of current->backing_dev_info disappeared in commit
b9b1335e6403 ("remove bdi_congested() and wb_congested() and related
functions").  Remove the field and all assignments to it.

Link: https://lkml.kernel.org/r/20230601145904.1385409-1-hch@lst.de
Link: https://lkml.kernel.org/r/20230601145904.1385409-2-hch@lst.de
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Christian Brauner <brauner@kernel.org>
Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Acked-by: Theodore Ts'o <tytso@mit.edu>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Andreas Gruenbacher <agruenba@redhat.com>
Cc: Anna Schumaker <anna@kernel.org>
Cc: Chao Yu <chao@kernel.org>
Cc: Ilya Dryomov <idryomov@gmail.com>
Cc: Jaegeuk Kim <jaegeuk@kernel.org>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Miklos Szeredi <miklos@szeredi.hu>
Cc: Miklos Szeredi <mszeredi@redhat.com>
Cc: Trond Myklebust <trond.myklebust@hammerspace.com>
Cc: Xiubo Li <xiubli@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
12 files changed:
fs/btrfs/file.c
fs/ceph/file.c
fs/ext4/file.c
fs/f2fs/file.c
fs/fuse/file.c
fs/gfs2/file.c
fs/nfs/file.c
fs/ntfs/file.c
fs/ntfs3/file.c
fs/xfs/xfs_file.c
include/linux/sched.h
mm/filemap.c

index f649647..ecd43ab 100644 (file)
@@ -1145,7 +1145,6 @@ static int btrfs_write_check(struct kiocb *iocb, struct iov_iter *from,
            !(BTRFS_I(inode)->flags & (BTRFS_INODE_NODATACOW | BTRFS_INODE_PREALLOC)))
                return -EAGAIN;
 
-       current->backing_dev_info = inode_to_bdi(inode);
        ret = file_remove_privs(file);
        if (ret)
                return ret;
@@ -1165,10 +1164,8 @@ static int btrfs_write_check(struct kiocb *iocb, struct iov_iter *from,
                loff_t end_pos = round_up(pos + count, fs_info->sectorsize);
 
                ret = btrfs_cont_expand(BTRFS_I(inode), oldsize, end_pos);
-               if (ret) {
-                       current->backing_dev_info = NULL;
+               if (ret)
                        return ret;
-               }
        }
 
        return 0;
@@ -1689,7 +1686,6 @@ ssize_t btrfs_do_write_iter(struct kiocb *iocb, struct iov_iter *from,
        if (sync)
                atomic_dec(&inode->sync_writers);
 
-       current->backing_dev_info = NULL;
        return num_written;
 }
 
index f4d8bf7..c8ef72f 100644 (file)
@@ -1791,9 +1791,6 @@ retry_snap:
        else
                ceph_start_io_write(inode);
 
-       /* We can write back this queue in page reclaim */
-       current->backing_dev_info = inode_to_bdi(inode);
-
        if (iocb->ki_flags & IOCB_APPEND) {
                err = ceph_do_getattr(inode, CEPH_STAT_CAP_SIZE, false);
                if (err < 0)
@@ -1940,7 +1937,6 @@ out:
                ceph_end_io_write(inode);
 out_unlocked:
        ceph_free_cap_flush(prealloc_cf);
-       current->backing_dev_info = NULL;
        return written ? written : err;
 }
 
index d101b3b..bc43027 100644 (file)
@@ -285,9 +285,7 @@ static ssize_t ext4_buffered_write_iter(struct kiocb *iocb,
        if (ret <= 0)
                goto out;
 
-       current->backing_dev_info = inode_to_bdi(inode);
        ret = generic_perform_write(iocb, from);
-       current->backing_dev_info = NULL;
 
 out:
        inode_unlock(inode);
index 5ac53d2..4f423d3 100644 (file)
@@ -4517,9 +4517,7 @@ static ssize_t f2fs_buffered_write_iter(struct kiocb *iocb,
        if (iocb->ki_flags & IOCB_NOWAIT)
                return -EOPNOTSUPP;
 
-       current->backing_dev_info = inode_to_bdi(inode);
        ret = generic_perform_write(iocb, from);
-       current->backing_dev_info = NULL;
 
        if (ret > 0) {
                iocb->ki_pos += ret;
index 89d97f6..97d4358 100644 (file)
@@ -1362,9 +1362,6 @@ static ssize_t fuse_cache_write_iter(struct kiocb *iocb, struct iov_iter *from)
 writethrough:
        inode_lock(inode);
 
-       /* We can write back this queue in page reclaim */
-       current->backing_dev_info = inode_to_bdi(inode);
-
        err = generic_write_checks(iocb, from);
        if (err <= 0)
                goto out;
@@ -1409,7 +1406,6 @@ writethrough:
                        iocb->ki_pos += written;
        }
 out:
-       current->backing_dev_info = NULL;
        inode_unlock(inode);
        if (written > 0)
                written = generic_write_sync(iocb, written);
index 300844f..904a0d6 100644 (file)
@@ -1041,11 +1041,9 @@ retry:
                        goto out_unlock;
        }
 
-       current->backing_dev_info = inode_to_bdi(inode);
        pagefault_disable();
        ret = iomap_file_buffered_write(iocb, from, &gfs2_iomap_ops);
        pagefault_enable();
-       current->backing_dev_info = NULL;
        if (ret > 0) {
                iocb->ki_pos += ret;
                written += ret;
index f0edf5a..665ce3f 100644 (file)
@@ -648,11 +648,8 @@ ssize_t nfs_file_write(struct kiocb *iocb, struct iov_iter *from)
        since = filemap_sample_wb_err(file->f_mapping);
        nfs_start_io_write(inode);
        result = generic_write_checks(iocb, from);
-       if (result > 0) {
-               current->backing_dev_info = inode_to_bdi(inode);
+       if (result > 0)
                result = generic_perform_write(iocb, from);
-               current->backing_dev_info = NULL;
-       }
        nfs_end_io_write(inode);
        if (result <= 0)
                goto out;
index c481b14..e296f80 100644 (file)
@@ -1911,11 +1911,9 @@ static ssize_t ntfs_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
 
        inode_lock(vi);
        /* We can write back this queue in page reclaim. */
-       current->backing_dev_info = inode_to_bdi(vi);
        err = ntfs_prepare_file_for_write(iocb, from);
        if (iov_iter_count(from) && !err)
                written = ntfs_perform_write(file, from, iocb->ki_pos);
-       current->backing_dev_info = NULL;
        inode_unlock(vi);
        iocb->ki_pos += written;
        if (likely(written > 0))
index 9a3d55c..86d16a2 100644 (file)
@@ -820,7 +820,6 @@ static ssize_t ntfs_compress_write(struct kiocb *iocb, struct iov_iter *from)
        if (!pages)
                return -ENOMEM;
 
-       current->backing_dev_info = inode_to_bdi(inode);
        err = file_remove_privs(file);
        if (err)
                goto out;
@@ -993,8 +992,6 @@ static ssize_t ntfs_compress_write(struct kiocb *iocb, struct iov_iter *from)
 out:
        kfree(pages);
 
-       current->backing_dev_info = NULL;
-
        if (err < 0)
                return err;
 
index aede746..431c3fd 100644 (file)
@@ -717,9 +717,6 @@ write_retry:
        if (ret)
                goto out;
 
-       /* We can write back this queue in page reclaim */
-       current->backing_dev_info = inode_to_bdi(inode);
-
        trace_xfs_file_buffered_write(iocb, from);
        ret = iomap_file_buffered_write(iocb, from,
                        &xfs_buffered_write_iomap_ops);
@@ -753,7 +750,6 @@ write_retry:
                goto write_retry;
        }
 
-       current->backing_dev_info = NULL;
 out:
        if (iolock)
                xfs_iunlock(ip, iolock);
index eed5d65..5478057 100644 (file)
@@ -41,7 +41,6 @@
 
 /* task_struct member predeclarations (sorted alphabetically): */
 struct audit_context;
-struct backing_dev_info;
 struct bio_list;
 struct blk_plug;
 struct bpf_local_storage;
@@ -1186,8 +1185,6 @@ struct task_struct {
        /* VM state: */
        struct reclaim_state            *reclaim_state;
 
-       struct backing_dev_info         *backing_dev_info;
-
        struct io_context               *io_context;
 
 #ifdef CONFIG_COMPACTION
index 570bc8c..0d371ed 100644 (file)
@@ -3964,8 +3964,6 @@ ssize_t __generic_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
        ssize_t         err;
        ssize_t         status;
 
-       /* We can write back this queue in page reclaim */
-       current->backing_dev_info = inode_to_bdi(inode);
        err = file_remove_privs(file);
        if (err)
                goto out;
@@ -4026,7 +4024,6 @@ ssize_t __generic_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
                        iocb->ki_pos += written;
        }
 out:
-       current->backing_dev_info = NULL;
        return written ? written : err;
 }
 EXPORT_SYMBOL(__generic_file_write_iter);