]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
btrfs: move unlikely checks around btrfs_is_shutdown() into the helper
authorFilipe Manana <fdmanana@suse.com>
Wed, 17 Dec 2025 13:15:42 +0000 (13:15 +0000)
committerDavid Sterba <dsterba@suse.com>
Tue, 3 Feb 2026 06:49:12 +0000 (07:49 +0100)
Instead of surrounding every caller of btrfs_is_shutdown() with unlikely,
move the unlikely into the helper itself, like we do in other places in
btrfs and is common in the kernel outside btrfs too. Also make the fs_info
argument of btrfs_is_shutdown() const.

On a x86_84 box using gcc 14.2.0-19 from Debian, this resulted in a slight
reduction of the module's text size.

Before:

  $ size fs/btrfs/btrfs.ko
     text    data     bss     dec     hex filename
  1939044  172568   15592 2127204  207564 fs/btrfs/btrfs.ko

After:

  $ size fs/btrfs/btrfs.ko
     text    data     bss     dec     hex filename
  1938876  172568   15592 2127036  2074bc fs/btrfs/btrfs.ko

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/file.c
fs/btrfs/fs.h
fs/btrfs/inode.c
fs/btrfs/ioctl.c
fs/btrfs/reflink.c

index 69edf5f44bda0eb2333625a0e89ba3baf88d0680..5d47cff5af42e4c82536061d90f7f35bebb92b43 100644 (file)
@@ -1437,7 +1437,7 @@ ssize_t btrfs_do_write_iter(struct kiocb *iocb, struct iov_iter *from,
        struct btrfs_inode *inode = BTRFS_I(file_inode(file));
        ssize_t num_written, num_sync;
 
-       if (unlikely(btrfs_is_shutdown(inode->root->fs_info)))
+       if (btrfs_is_shutdown(inode->root->fs_info))
                return -EIO;
        /*
         * If the fs flips readonly due to some impossible error, although we
@@ -2042,7 +2042,7 @@ static int btrfs_file_mmap_prepare(struct vm_area_desc *desc)
        struct file *filp = desc->file;
        struct address_space *mapping = filp->f_mapping;
 
-       if (unlikely(btrfs_is_shutdown(inode_to_fs_info(file_inode(filp)))))
+       if (btrfs_is_shutdown(inode_to_fs_info(file_inode(filp))))
                return -EIO;
        if (!mapping->a_ops->read_folio)
                return -ENOEXEC;
@@ -3113,7 +3113,7 @@ static long btrfs_fallocate(struct file *file, int mode,
        int blocksize = BTRFS_I(inode)->root->fs_info->sectorsize;
        int ret;
 
-       if (unlikely(btrfs_is_shutdown(inode_to_fs_info(inode))))
+       if (btrfs_is_shutdown(inode_to_fs_info(inode)))
                return -EIO;
 
        /* Do not allow fallocate in ZONED mode */
@@ -3807,7 +3807,7 @@ static int btrfs_file_open(struct inode *inode, struct file *filp)
 {
        int ret;
 
-       if (unlikely(btrfs_is_shutdown(inode_to_fs_info(inode))))
+       if (btrfs_is_shutdown(inode_to_fs_info(inode)))
                return -EIO;
 
        filp->f_mode |= FMODE_NOWAIT | FMODE_CAN_ODIRECT;
@@ -3822,7 +3822,7 @@ static ssize_t btrfs_file_read_iter(struct kiocb *iocb, struct iov_iter *to)
 {
        ssize_t ret = 0;
 
-       if (unlikely(btrfs_is_shutdown(inode_to_fs_info(file_inode(iocb->ki_filp)))))
+       if (btrfs_is_shutdown(inode_to_fs_info(file_inode(iocb->ki_filp))))
                return -EIO;
 
        if (iocb->ki_flags & IOCB_DIRECT) {
@@ -3839,7 +3839,7 @@ static ssize_t btrfs_file_splice_read(struct file *in, loff_t *ppos,
                                      struct pipe_inode_info *pipe,
                                      size_t len, unsigned int flags)
 {
-       if (unlikely(btrfs_is_shutdown(inode_to_fs_info(file_inode(in)))))
+       if (btrfs_is_shutdown(inode_to_fs_info(file_inode(in))))
                return -EIO;
 
        return filemap_splice_read(in, ppos, pipe, len, flags);
index 458a24206935c542b6202613c9fda1385f55af64..428b2b2391897dc4158c80676b83d794d2104895 100644 (file)
@@ -1154,9 +1154,9 @@ static inline void btrfs_wake_unfinished_drop(struct btrfs_fs_info *fs_info)
        (unlikely(test_bit(BTRFS_FS_STATE_LOG_CLEANUP_ERROR,            \
                           &(fs_info)->fs_state)))
 
-static inline bool btrfs_is_shutdown(struct btrfs_fs_info *fs_info)
+static inline bool btrfs_is_shutdown(const struct btrfs_fs_info *fs_info)
 {
-       return test_bit(BTRFS_FS_STATE_EMERGENCY_SHUTDOWN, &fs_info->fs_state);
+       return unlikely(test_bit(BTRFS_FS_STATE_EMERGENCY_SHUTDOWN, &fs_info->fs_state));
 }
 
 static inline void btrfs_force_shutdown(struct btrfs_fs_info *fs_info)
index b95dab8ac8a11c05e5ba24829282cd114cf56370..247b373bf5cf0d9e7ce9d67b6b2b8a6893e8e981 100644 (file)
@@ -901,7 +901,7 @@ static void compress_file_range(struct btrfs_work *work)
        int compress_type = fs_info->compress_type;
        int compress_level = fs_info->compress_level;
 
-       if (unlikely(btrfs_is_shutdown(fs_info)))
+       if (btrfs_is_shutdown(fs_info))
                goto cleanup_and_bail_uncompressed;
 
        inode_should_defrag(inode, start, end, end - start + 1, SZ_16K);
@@ -1445,7 +1445,7 @@ static noinline int cow_file_range(struct btrfs_inode *inode,
        unsigned long page_ops;
        int ret = 0;
 
-       if (unlikely(btrfs_is_shutdown(fs_info))) {
+       if (btrfs_is_shutdown(fs_info)) {
                ret = -EIO;
                goto out_unlock;
        }
@@ -2111,7 +2111,7 @@ static noinline int run_delalloc_nocow(struct btrfs_inode *inode,
         */
        ASSERT(!btrfs_is_zoned(fs_info) || btrfs_is_data_reloc_root(root));
 
-       if (unlikely(btrfs_is_shutdown(fs_info))) {
+       if (btrfs_is_shutdown(fs_info)) {
                ret = -EIO;
                goto error;
        }
index acb484546b1da10cb3233b5ba85837f41e584e33..d9e7dd31767047b08b20140b74a613e6bd25759e 100644 (file)
@@ -5000,7 +5000,7 @@ out_acct:
 
 int btrfs_uring_cmd(struct io_uring_cmd *cmd, unsigned int issue_flags)
 {
-       if (unlikely(btrfs_is_shutdown(inode_to_fs_info(file_inode(cmd->file)))))
+       if (btrfs_is_shutdown(inode_to_fs_info(file_inode(cmd->file))))
                return -EIO;
 
        switch (cmd->cmd_op) {
index 58dc3e5057ce3b7f2a9d497a94edb023d33dee00..ab4ce56d69ee8dff70ccfb8d7102dd3d5f1f7737 100644 (file)
@@ -873,7 +873,7 @@ loff_t btrfs_remap_file_range(struct file *src_file, loff_t off,
        bool same_inode = dst_inode == src_inode;
        int ret;
 
-       if (unlikely(btrfs_is_shutdown(inode_to_fs_info(file_inode(src_file)))))
+       if (btrfs_is_shutdown(inode_to_fs_info(file_inode(src_file))))
                return -EIO;
 
        if (remap_flags & ~(REMAP_FILE_DEDUP | REMAP_FILE_ADVISORY))