public inbox for linux-btrfs@vger.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild@lists.01.org, Qu Wenruo <wqu@suse.com>,
	linux-btrfs@vger.kernel.org
Cc: lkp@intel.com, kbuild-all@lists.01.org
Subject: [kbuild] Re: [PATCH] btrfs: prevent remounting to v1 space cache for subpage mount
Date: Wed, 18 May 2022 07:58:43 +0300	[thread overview]
Message-ID: <202205172208.qdyoDwJs-lkp@intel.com> (raw)
In-Reply-To: <1e09cf20ca9309f2b9daf57136c3e2c1b22f94f6.1652682383.git.wqu@suse.com>

Hi Qu,

url:    https://github.com/intel-lab-lkp/linux/commits/Qu-Wenruo/btrfs-prevent-remounting-to-v1-space-cache-for-subpage-mount/20220516-142802 
base:   https://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git  for-next
config: i386-randconfig-m021-20220516 (https://download.01.org/0day-ci/archive/20220517/202205172208.qdyoDwJs-lkp@intel.com/config )
compiler: gcc-11 (Debian 11.2.0-20) 11.2.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
fs/btrfs/super.c:1994 btrfs_remount() warn: missing error code 'ret'

vim +/ret +1994 fs/btrfs/super.c

c146afad2c7fea Yan Zheng          2008-11-12  1959  static int btrfs_remount(struct super_block *sb, int *flags, char *data)
c146afad2c7fea Yan Zheng          2008-11-12  1960  {
815745cf3e4668 Al Viro            2011-11-17  1961  	struct btrfs_fs_info *fs_info = btrfs_sb(sb);
49b25e0540904b Jeff Mahoney       2012-03-01  1962  	unsigned old_flags = sb->s_flags;
49b25e0540904b Jeff Mahoney       2012-03-01  1963  	unsigned long old_opts = fs_info->mount_opt;
49b25e0540904b Jeff Mahoney       2012-03-01  1964  	unsigned long old_compress_type = fs_info->compress_type;
49b25e0540904b Jeff Mahoney       2012-03-01  1965  	u64 old_max_inline = fs_info->max_inline;
f7b885befd05fa Anand Jain         2018-02-13  1966  	u32 old_thread_pool_size = fs_info->thread_pool_size;
d612ac59efc3b5 Anand Jain         2018-02-26  1967  	u32 old_metadata_ratio = fs_info->metadata_ratio;
c146afad2c7fea Yan Zheng          2008-11-12  1968  	int ret;
c146afad2c7fea Yan Zheng          2008-11-12  1969  
02b9984d640873 Theodore Ts'o      2014-03-13  1970  	sync_filesystem(sb);
88c4703f00a9e8 Johannes Thumshirn 2020-07-23  1971  	set_bit(BTRFS_FS_STATE_REMOUNTING, &fs_info->fs_state);
dc81cdc58ad2f4 Miao Xie           2013-02-20  1972  
f667aef6af626d Qu Wenruo          2014-09-23  1973  	if (data) {
204cc0ccf1d49c Al Viro            2018-12-13  1974  		void *new_sec_opts = NULL;
f667aef6af626d Qu Wenruo          2014-09-23  1975  
a65001e8a4d465 Al Viro            2018-12-10  1976  		ret = security_sb_eat_lsm_opts(data, &new_sec_opts);
a65001e8a4d465 Al Viro            2018-12-10  1977  		if (!ret)
204cc0ccf1d49c Al Viro            2018-12-13  1978  			ret = security_sb_remount(sb, new_sec_opts);
f667aef6af626d Qu Wenruo          2014-09-23  1979  		security_free_mnt_opts(&new_sec_opts);
a65001e8a4d465 Al Viro            2018-12-10  1980  		if (ret)
f667aef6af626d Qu Wenruo          2014-09-23  1981  			goto restore;
f667aef6af626d Qu Wenruo          2014-09-23  1982  	}
f667aef6af626d Qu Wenruo          2014-09-23  1983  
2ff7e61e0d30ff Jeff Mahoney       2016-06-22  1984  	ret = btrfs_parse_options(fs_info, data, *flags);
891f41cb27cf50 Chengguang Xu      2018-05-09  1985  	if (ret)
49b25e0540904b Jeff Mahoney       2012-03-01  1986  		goto restore;
b288052e177926 Chris Mason        2009-02-12  1987  
fd847878aa1f3c Qu Wenruo          2022-05-16  1988  	/* V1 cache is not supported for subpage mount. */
fd847878aa1f3c Qu Wenruo          2022-05-16  1989  	if (fs_info->sectorsize < PAGE_SIZE &&
fd847878aa1f3c Qu Wenruo          2022-05-16  1990  	    btrfs_test_opt(fs_info, SPACE_CACHE)) {
fd847878aa1f3c Qu Wenruo          2022-05-16  1991  		btrfs_warn(fs_info,
fd847878aa1f3c Qu Wenruo          2022-05-16  1992  	"v1 space cache is not supported for page size %lu with sectorsize %u",
fd847878aa1f3c Qu Wenruo          2022-05-16  1993  			   PAGE_SIZE, fs_info->sectorsize);
fd847878aa1f3c Qu Wenruo          2022-05-16 @1994  		goto restore;

Set an error code on this path?

fd847878aa1f3c Qu Wenruo          2022-05-16  1995  	}
f42a34b2f10c41 Miao Xie           2013-04-11  1996  	btrfs_remount_begin(fs_info, old_opts, *flags);
0d2450abfa359f Sergei Trofimovich 2012-04-24  1997  	btrfs_resize_thread_pool(fs_info,
0d2450abfa359f Sergei Trofimovich 2012-04-24  1998  		fs_info->thread_pool_size, old_thread_pool_size);
0d2450abfa359f Sergei Trofimovich 2012-04-24  1999  
c55a4319c4f2c3 Boris Burkov       2021-02-23  2000  	if ((bool)btrfs_test_opt(fs_info, FREE_SPACE_TREE) !=
c55a4319c4f2c3 Boris Burkov       2021-02-23  2001  	    (bool)btrfs_fs_compat_ro(fs_info, FREE_SPACE_TREE) &&
2838d255cb9b85 Boris Burkov       2020-11-18  2002  	    (!sb_rdonly(sb) || (*flags & SB_RDONLY))) {
2838d255cb9b85 Boris Burkov       2020-11-18  2003  		btrfs_warn(fs_info,
2838d255cb9b85 Boris Burkov       2020-11-18  2004  		"remount supports changing free space tree only from ro to rw");
2838d255cb9b85 Boris Burkov       2020-11-18  2005  		/* Make sure free space cache options match the state on disk */
2838d255cb9b85 Boris Burkov       2020-11-18  2006  		if (btrfs_fs_compat_ro(fs_info, FREE_SPACE_TREE)) {
2838d255cb9b85 Boris Burkov       2020-11-18  2007  			btrfs_set_opt(fs_info->mount_opt, FREE_SPACE_TREE);
2838d255cb9b85 Boris Burkov       2020-11-18  2008  			btrfs_clear_opt(fs_info->mount_opt, SPACE_CACHE);
2838d255cb9b85 Boris Burkov       2020-11-18  2009  		}
2838d255cb9b85 Boris Burkov       2020-11-18  2010  		if (btrfs_free_space_cache_v1_active(fs_info)) {
2838d255cb9b85 Boris Burkov       2020-11-18  2011  			btrfs_clear_opt(fs_info->mount_opt, FREE_SPACE_TREE);
2838d255cb9b85 Boris Burkov       2020-11-18  2012  			btrfs_set_opt(fs_info->mount_opt, SPACE_CACHE);
2838d255cb9b85 Boris Burkov       2020-11-18  2013  		}
2838d255cb9b85 Boris Burkov       2020-11-18  2014  	}
2838d255cb9b85 Boris Burkov       2020-11-18  2015  
1751e8a6cb935e Linus Torvalds     2017-11-27  2016  	if ((bool)(*flags & SB_RDONLY) == sb_rdonly(sb))
dc81cdc58ad2f4 Miao Xie           2013-02-20  2017  		goto out;

This looks like a success path so that's fine.

c146afad2c7fea Yan Zheng          2008-11-12  2018  
1751e8a6cb935e Linus Torvalds     2017-11-27  2019  	if (*flags & SB_RDONLY) {
8dabb7420f014a Stefan Behrens     2012-11-06  2020  		/*
8dabb7420f014a Stefan Behrens     2012-11-06  2021  		 * this also happens on 'umount -rf' or on shutdown, when
8dabb7420f014a Stefan Behrens     2012-11-06  2022  		 * the filesystem is busy.
8dabb7420f014a Stefan Behrens     2012-11-06  2023  		 */
21c7e75654b77b Miao Xie           2014-05-13  2024  		cancel_work_sync(&fs_info->async_reclaim_work);
5705674081cee7 Josef Bacik        2020-07-21  2025  		cancel_work_sync(&fs_info->async_data_reclaim_work);
361c093d7f99c3 Stefan Behrens     2013-10-11  2026  
b0643e59cfa609 Dennis Zhou        2019-12-13  2027  		btrfs_discard_cleanup(fs_info);
b0643e59cfa609 Dennis Zhou        2019-12-13  2028  
361c093d7f99c3 Stefan Behrens     2013-10-11  2029  		/* wait for the uuid_scan task to finish */
361c093d7f99c3 Stefan Behrens     2013-10-11  2030  		down(&fs_info->uuid_tree_rescan_sem);
361c093d7f99c3 Stefan Behrens     2013-10-11  2031  		/* avoid complains from lockdep et al. */
361c093d7f99c3 Stefan Behrens     2013-10-11  2032  		up(&fs_info->uuid_tree_rescan_sem);
361c093d7f99c3 Stefan Behrens     2013-10-11  2033  
a0a1db70df5f48 Filipe Manana      2020-12-14  2034  		btrfs_set_sb_rdonly(sb);
c146afad2c7fea Yan Zheng          2008-11-12  2035  
e44163e177960e Jeff Mahoney       2015-06-15  2036  		/*
1751e8a6cb935e Linus Torvalds     2017-11-27  2037  		 * Setting SB_RDONLY will put the cleaner thread to
e44163e177960e Jeff Mahoney       2015-06-15  2038  		 * sleep at the next loop if it's already active.
e44163e177960e Jeff Mahoney       2015-06-15  2039  		 * If it's already asleep, we'll leave unused block
e44163e177960e Jeff Mahoney       2015-06-15  2040  		 * groups on disk until we're mounted read-write again
e44163e177960e Jeff Mahoney       2015-06-15  2041  		 * unless we clean them up here.
e44163e177960e Jeff Mahoney       2015-06-15  2042  		 */
e44163e177960e Jeff Mahoney       2015-06-15  2043  		btrfs_delete_unused_bgs(fs_info);
e44163e177960e Jeff Mahoney       2015-06-15  2044  
a0a1db70df5f48 Filipe Manana      2020-12-14  2045  		/*
a0a1db70df5f48 Filipe Manana      2020-12-14  2046  		 * The cleaner task could be already running before we set the
a0a1db70df5f48 Filipe Manana      2020-12-14  2047  		 * flag BTRFS_FS_STATE_RO (and SB_RDONLY in the superblock).
a0a1db70df5f48 Filipe Manana      2020-12-14  2048  		 * We must make sure that after we finish the remount, i.e. after
a0a1db70df5f48 Filipe Manana      2020-12-14  2049  		 * we call btrfs_commit_super(), the cleaner can no longer start
a0a1db70df5f48 Filipe Manana      2020-12-14  2050  		 * a transaction - either because it was dropping a dead root,
a0a1db70df5f48 Filipe Manana      2020-12-14  2051  		 * running delayed iputs or deleting an unused block group (the
a0a1db70df5f48 Filipe Manana      2020-12-14  2052  		 * cleaner picked a block group from the list of unused block
a0a1db70df5f48 Filipe Manana      2020-12-14  2053  		 * groups before we were able to in the previous call to
a0a1db70df5f48 Filipe Manana      2020-12-14  2054  		 * btrfs_delete_unused_bgs()).
a0a1db70df5f48 Filipe Manana      2020-12-14  2055  		 */
a0a1db70df5f48 Filipe Manana      2020-12-14  2056  		wait_on_bit(&fs_info->flags, BTRFS_FS_CLEANER_RUNNING,
a0a1db70df5f48 Filipe Manana      2020-12-14  2057  			    TASK_UNINTERRUPTIBLE);
a0a1db70df5f48 Filipe Manana      2020-12-14  2058  
a8cc263eb58ca1 Filipe Manana      2020-12-14  2059  		/*
a8cc263eb58ca1 Filipe Manana      2020-12-14  2060  		 * We've set the superblock to RO mode, so we might have made
a8cc263eb58ca1 Filipe Manana      2020-12-14  2061  		 * the cleaner task sleep without running all pending delayed
a8cc263eb58ca1 Filipe Manana      2020-12-14  2062  		 * iputs. Go through all the delayed iputs here, so that if an
a8cc263eb58ca1 Filipe Manana      2020-12-14  2063  		 * unmount happens without remounting RW we don't end up at
a8cc263eb58ca1 Filipe Manana      2020-12-14  2064  		 * finishing close_ctree() with a non-empty list of delayed
a8cc263eb58ca1 Filipe Manana      2020-12-14  2065  		 * iputs.
a8cc263eb58ca1 Filipe Manana      2020-12-14  2066  		 */
a8cc263eb58ca1 Filipe Manana      2020-12-14  2067  		btrfs_run_delayed_iputs(fs_info);
a8cc263eb58ca1 Filipe Manana      2020-12-14  2068  
8dabb7420f014a Stefan Behrens     2012-11-06  2069  		btrfs_dev_replace_suspend_for_unmount(fs_info);
8dabb7420f014a Stefan Behrens     2012-11-06  2070  		btrfs_scrub_cancel(fs_info);
061594ef171a5b Miao Xie           2013-05-15  2071  		btrfs_pause_balance(fs_info);
8dabb7420f014a Stefan Behrens     2012-11-06  2072  
cb13eea3b49055 Filipe Manana      2020-12-14  2073  		/*
cb13eea3b49055 Filipe Manana      2020-12-14  2074  		 * Pause the qgroup rescan worker if it is running. We don't want
cb13eea3b49055 Filipe Manana      2020-12-14  2075  		 * it to be still running after we are in RO mode, as after that,
cb13eea3b49055 Filipe Manana      2020-12-14  2076  		 * by the time we unmount, it might have left a transaction open,
cb13eea3b49055 Filipe Manana      2020-12-14  2077  		 * so we would leak the transaction and/or crash.
cb13eea3b49055 Filipe Manana      2020-12-14  2078  		 */
cb13eea3b49055 Filipe Manana      2020-12-14  2079  		btrfs_qgroup_wait_for_completion(fs_info, false);
cb13eea3b49055 Filipe Manana      2020-12-14  2080  
6bccf3ab1e1f09 Jeff Mahoney       2016-06-21  2081  		ret = btrfs_commit_super(fs_info);
49b25e0540904b Jeff Mahoney       2012-03-01  2082  		if (ret)
49b25e0540904b Jeff Mahoney       2012-03-01  2083  			goto restore;
c146afad2c7fea Yan Zheng          2008-11-12  2084  	} else {
849615394515cc Josef Bacik        2021-10-05  2085  		if (BTRFS_FS_ERROR(fs_info)) {
6ef3de9c9252b1 David Sterba       2013-09-13  2086  			btrfs_err(fs_info,
efe120a067c867 Frank Holton       2013-12-20  2087  				"Remounting read-write after error is not allowed");
6ef3de9c9252b1 David Sterba       2013-09-13  2088  			ret = -EINVAL;
6ef3de9c9252b1 David Sterba       2013-09-13  2089  			goto restore;
6ef3de9c9252b1 David Sterba       2013-09-13  2090  		}
8a3db1849e9e25 Sergei Trofimovich 2012-04-16  2091  		if (fs_info->fs_devices->rw_devices == 0) {
49b25e0540904b Jeff Mahoney       2012-03-01  2092  			ret = -EACCES;
49b25e0540904b Jeff Mahoney       2012-03-01  2093  			goto restore;
8a3db1849e9e25 Sergei Trofimovich 2012-04-16  2094  		}
2b82032c34ec40 Yan Zheng          2008-11-17  2095  
6528b99d3d2079 Anand Jain         2017-12-18  2096  		if (!btrfs_check_rw_degradable(fs_info, NULL)) {
efe120a067c867 Frank Holton       2013-12-20  2097  			btrfs_warn(fs_info,
52042d8e82ff50 Andrea Gelmini     2018-11-28  2098  		"too many missing devices, writable remount is not allowed");
292fd7fc39aa06 Stefan Behrens     2012-10-30  2099  			ret = -EACCES;
292fd7fc39aa06 Stefan Behrens     2012-10-30  2100  			goto restore;
292fd7fc39aa06 Stefan Behrens     2012-10-30  2101  		}
292fd7fc39aa06 Stefan Behrens     2012-10-30  2102  
8a3db1849e9e25 Sergei Trofimovich 2012-04-16  2103  		if (btrfs_super_log_root(fs_info->super_copy) != 0) {
10a3a3edc5b89a David Sterba       2020-02-05  2104  			btrfs_warn(fs_info,
10a3a3edc5b89a David Sterba       2020-02-05  2105  		"mount required to replay tree-log, cannot remount read-write");
49b25e0540904b Jeff Mahoney       2012-03-01  2106  			ret = -EINVAL;
49b25e0540904b Jeff Mahoney       2012-03-01  2107  			goto restore;
8a3db1849e9e25 Sergei Trofimovich 2012-04-16  2108  		}
c146afad2c7fea Yan Zheng          2008-11-12  2109  
44c0ca211a4da9 Boris Burkov       2020-11-18  2110  		/*
44c0ca211a4da9 Boris Burkov       2020-11-18  2111  		 * NOTE: when remounting with a change that does writes, don't
44c0ca211a4da9 Boris Burkov       2020-11-18  2112  		 * put it anywhere above this point, as we are not sure to be
44c0ca211a4da9 Boris Burkov       2020-11-18  2113  		 * safe to write until we pass the above checks.
44c0ca211a4da9 Boris Burkov       2020-11-18  2114  		 */
44c0ca211a4da9 Boris Burkov       2020-11-18  2115  		ret = btrfs_start_pre_rw_mount(fs_info);
2b6ba629b5aac5 Ilya Dryomov       2012-06-22  2116  		if (ret)
2b6ba629b5aac5 Ilya Dryomov       2012-06-22  2117  			goto restore;
2b6ba629b5aac5 Ilya Dryomov       2012-06-22  2118  
a0a1db70df5f48 Filipe Manana      2020-12-14  2119  		btrfs_clear_sb_rdonly(sb);
90c711ab380d63 Zygo Blaxell       2016-06-12  2120  
afcdd129e05a92 Josef Bacik        2016-09-02  2121  		set_bit(BTRFS_FS_OPEN, &fs_info->flags);
c146afad2c7fea Yan Zheng          2008-11-12  2122  	}
dc81cdc58ad2f4 Miao Xie           2013-02-20  2123  out:
faa008899a4db2 Josef Bacik        2020-07-30  2124  	/*
faa008899a4db2 Josef Bacik        2020-07-30  2125  	 * We need to set SB_I_VERSION here otherwise it'll get cleared by VFS,
faa008899a4db2 Josef Bacik        2020-07-30  2126  	 * since the absence of the flag means it can be toggled off by remount.
faa008899a4db2 Josef Bacik        2020-07-30  2127  	 */
faa008899a4db2 Josef Bacik        2020-07-30  2128  	*flags |= SB_I_VERSION;
faa008899a4db2 Josef Bacik        2020-07-30  2129  
2c6a92b0097464 Justin Maggard     2014-02-20  2130  	wake_up_process(fs_info->transaction_kthread);
dc81cdc58ad2f4 Miao Xie           2013-02-20  2131  	btrfs_remount_cleanup(fs_info, old_opts);
8cd2908846d11a Boris Burkov       2020-11-18  2132  	btrfs_clear_oneshot_options(fs_info);
88c4703f00a9e8 Johannes Thumshirn 2020-07-23  2133  	clear_bit(BTRFS_FS_STATE_REMOUNTING, &fs_info->fs_state);
88c4703f00a9e8 Johannes Thumshirn 2020-07-23  2134  
c146afad2c7fea Yan Zheng          2008-11-12  2135  	return 0;
49b25e0540904b Jeff Mahoney       2012-03-01  2136  
49b25e0540904b Jeff Mahoney       2012-03-01  2137  restore:
1751e8a6cb935e Linus Torvalds     2017-11-27  2138  	/* We've hit an error - don't reset SB_RDONLY */
bc98a42c1f7d0f David Howells      2017-07-17  2139  	if (sb_rdonly(sb))
1751e8a6cb935e Linus Torvalds     2017-11-27  2140  		old_flags |= SB_RDONLY;
a0a1db70df5f48 Filipe Manana      2020-12-14  2141  	if (!(old_flags & SB_RDONLY))
a0a1db70df5f48 Filipe Manana      2020-12-14  2142  		clear_bit(BTRFS_FS_STATE_RO, &fs_info->fs_state);
49b25e0540904b Jeff Mahoney       2012-03-01  2143  	sb->s_flags = old_flags;
49b25e0540904b Jeff Mahoney       2012-03-01  2144  	fs_info->mount_opt = old_opts;
49b25e0540904b Jeff Mahoney       2012-03-01  2145  	fs_info->compress_type = old_compress_type;
49b25e0540904b Jeff Mahoney       2012-03-01  2146  	fs_info->max_inline = old_max_inline;
0d2450abfa359f Sergei Trofimovich 2012-04-24  2147  	btrfs_resize_thread_pool(fs_info,
0d2450abfa359f Sergei Trofimovich 2012-04-24  2148  		old_thread_pool_size, fs_info->thread_pool_size);
49b25e0540904b Jeff Mahoney       2012-03-01  2149  	fs_info->metadata_ratio = old_metadata_ratio;
dc81cdc58ad2f4 Miao Xie           2013-02-20  2150  	btrfs_remount_cleanup(fs_info, old_opts);
88c4703f00a9e8 Johannes Thumshirn 2020-07-23  2151  	clear_bit(BTRFS_FS_STATE_REMOUNTING, &fs_info->fs_state);
88c4703f00a9e8 Johannes Thumshirn 2020-07-23  2152  
49b25e0540904b Jeff Mahoney       2012-03-01  2153  	return ret;
c146afad2c7fea Yan Zheng          2008-11-12  2154  }

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp 
_______________________________________________
kbuild mailing list -- kbuild@lists.01.org
To unsubscribe send an email to kbuild-leave@lists.01.org


      parent reply	other threads:[~2022-05-18  4:59 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-16  6:26 [PATCH] btrfs: prevent remounting to v1 space cache for subpage mount Qu Wenruo
2022-05-16 15:05 ` Josef Bacik
2022-05-17  0:27   ` Qu Wenruo
2022-05-18  4:58 ` Dan Carpenter [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202205172208.qdyoDwJs-lkp@intel.com \
    --to=dan.carpenter@oracle.com \
    --cc=kbuild-all@lists.01.org \
    --cc=kbuild@lists.01.org \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=lkp@intel.com \
    --cc=wqu@suse.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox