From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: [djwong-xfs:vectorized-scrub 99/334] fs/xfs/scrub/fscounters.c:198 xchk_fscounters_freeze() warn: inconsistent returns '&sb->s_umount'.
Date: Mon, 17 Jan 2022 09:48:51 +0800 [thread overview]
Message-ID: <202201170928.GcIhOWMI-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 7809 bytes --]
CC: kbuild-all(a)lists.01.org
CC: "Darrick J. Wong" <darrick.wong@oracle.com>
CC: linux-kernel(a)vger.kernel.org
TO: "Darrick J. Wong" <djwong@kernel.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git vectorized-scrub
head: 8427da8e62fbcf9a04e5b2663fe60b97d6911417
commit: 8dd594d12f08acc6c6fa388b2cae3e270bf8effc [99/334] xfs: stabilize fs summary counters for online fsck
:::::: branch date: 2 days ago
:::::: commit date: 2 days ago
config: ia64-randconfig-m031-20220116 (https://download.01.org/0day-ci/archive/20220117/202201170928.GcIhOWMI-lkp(a)intel.com/config)
compiler: ia64-linux-gcc (GCC) 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/xfs/scrub/fscounters.c:198 xchk_fscounters_freeze() warn: inconsistent returns '&sb->s_umount'.
vim +198 fs/xfs/scrub/fscounters.c
8dd594d12f08acc Darrick J. Wong 2022-01-06 117
8dd594d12f08acc Darrick J. Wong 2022-01-06 118 /*
8dd594d12f08acc Darrick J. Wong 2022-01-06 119 * We couldn't stabilize the filesystem long enough to sample all the variables
8dd594d12f08acc Darrick J. Wong 2022-01-06 120 * that comprise the summary counters and compare them to the percpu counters.
8dd594d12f08acc Darrick J. Wong 2022-01-06 121 * We need to disable all writer threads, which means taking the first two
8dd594d12f08acc Darrick J. Wong 2022-01-06 122 * freeze levels to put userspace to sleep, and the third freeze level to
8dd594d12f08acc Darrick J. Wong 2022-01-06 123 * prevent background threads from starting new transactions.
8dd594d12f08acc Darrick J. Wong 2022-01-06 124 */
8dd594d12f08acc Darrick J. Wong 2022-01-06 125 STATIC int
8dd594d12f08acc Darrick J. Wong 2022-01-06 126 xchk_fscounters_freeze(
8dd594d12f08acc Darrick J. Wong 2022-01-06 127 struct xfs_scrub *sc)
8dd594d12f08acc Darrick J. Wong 2022-01-06 128 {
8dd594d12f08acc Darrick J. Wong 2022-01-06 129 struct xchk_fscounters *fsc = sc->buf;
8dd594d12f08acc Darrick J. Wong 2022-01-06 130 struct xfs_mount *mp = sc->mp;
8dd594d12f08acc Darrick J. Wong 2022-01-06 131 struct super_block *sb = mp->m_super;
8dd594d12f08acc Darrick J. Wong 2022-01-06 132 int level;
8dd594d12f08acc Darrick J. Wong 2022-01-06 133 int error = 0;
8dd594d12f08acc Darrick J. Wong 2022-01-06 134
8dd594d12f08acc Darrick J. Wong 2022-01-06 135 if (sc->flags & XCHK_HAVE_FREEZE_PROT) {
8dd594d12f08acc Darrick J. Wong 2022-01-06 136 sc->flags &= ~XCHK_HAVE_FREEZE_PROT;
8dd594d12f08acc Darrick J. Wong 2022-01-06 137 mnt_drop_write_file(sc->file);
8dd594d12f08acc Darrick J. Wong 2022-01-06 138 }
8dd594d12f08acc Darrick J. Wong 2022-01-06 139
8dd594d12f08acc Darrick J. Wong 2022-01-06 140 /* Wait until we're ready to freeze or give up. */
8dd594d12f08acc Darrick J. Wong 2022-01-06 141 down_write(&sb->s_umount);
8dd594d12f08acc Darrick J. Wong 2022-01-06 142 while (sb->s_writers.frozen != SB_UNFROZEN) {
8dd594d12f08acc Darrick J. Wong 2022-01-06 143 up_write(&sb->s_umount);
8dd594d12f08acc Darrick J. Wong 2022-01-06 144
8dd594d12f08acc Darrick J. Wong 2022-01-06 145 if (xchk_should_terminate(sc, &error))
8dd594d12f08acc Darrick J. Wong 2022-01-06 146 return error;
8dd594d12f08acc Darrick J. Wong 2022-01-06 147
8dd594d12f08acc Darrick J. Wong 2022-01-06 148 delay(HZ / 10);
8dd594d12f08acc Darrick J. Wong 2022-01-06 149 down_write(&sb->s_umount);
8dd594d12f08acc Darrick J. Wong 2022-01-06 150 }
8dd594d12f08acc Darrick J. Wong 2022-01-06 151
8dd594d12f08acc Darrick J. Wong 2022-01-06 152 if (sb_rdonly(sb)) {
8dd594d12f08acc Darrick J. Wong 2022-01-06 153 sb->s_writers.frozen = SB_FREEZE_EXCLUSIVE;
8dd594d12f08acc Darrick J. Wong 2022-01-06 154 goto done;
8dd594d12f08acc Darrick J. Wong 2022-01-06 155 }
8dd594d12f08acc Darrick J. Wong 2022-01-06 156
8dd594d12f08acc Darrick J. Wong 2022-01-06 157 sb->s_writers.frozen = SB_FREEZE_WRITE;
8dd594d12f08acc Darrick J. Wong 2022-01-06 158 /* Release s_umount to preserve sb_start_write -> s_umount ordering */
8dd594d12f08acc Darrick J. Wong 2022-01-06 159 up_write(&sb->s_umount);
8dd594d12f08acc Darrick J. Wong 2022-01-06 160 percpu_down_write(sb->s_writers.rw_sem + SB_FREEZE_WRITE - 1);
8dd594d12f08acc Darrick J. Wong 2022-01-06 161 down_write(&sb->s_umount);
8dd594d12f08acc Darrick J. Wong 2022-01-06 162
8dd594d12f08acc Darrick J. Wong 2022-01-06 163 /* Now we go and block page faults... */
8dd594d12f08acc Darrick J. Wong 2022-01-06 164 sb->s_writers.frozen = SB_FREEZE_PAGEFAULT;
8dd594d12f08acc Darrick J. Wong 2022-01-06 165 percpu_down_write(sb->s_writers.rw_sem + SB_FREEZE_PAGEFAULT - 1);
8dd594d12f08acc Darrick J. Wong 2022-01-06 166
8dd594d12f08acc Darrick J. Wong 2022-01-06 167 /*
8dd594d12f08acc Darrick J. Wong 2022-01-06 168 * All writers are done so after syncing there won't be dirty data.
8dd594d12f08acc Darrick J. Wong 2022-01-06 169 * Let xfs_fs_sync_fs flush dirty data so the VFS won't start writeback
8dd594d12f08acc Darrick J. Wong 2022-01-06 170 * and to disable the background gc workers.
8dd594d12f08acc Darrick J. Wong 2022-01-06 171 */
8dd594d12f08acc Darrick J. Wong 2022-01-06 172 error = sync_filesystem(sb);
8dd594d12f08acc Darrick J. Wong 2022-01-06 173 if (error) {
8dd594d12f08acc Darrick J. Wong 2022-01-06 174 sb->s_writers.frozen = SB_UNFROZEN;
8dd594d12f08acc Darrick J. Wong 2022-01-06 175 for (level = SB_FREEZE_PAGEFAULT; level >= 0; level--)
8dd594d12f08acc Darrick J. Wong 2022-01-06 176 percpu_up_write(sb->s_writers.rw_sem + level);
8dd594d12f08acc Darrick J. Wong 2022-01-06 177 wake_up(&sb->s_writers.wait_unfrozen);
8dd594d12f08acc Darrick J. Wong 2022-01-06 178 return error;
8dd594d12f08acc Darrick J. Wong 2022-01-06 179 }
8dd594d12f08acc Darrick J. Wong 2022-01-06 180
8dd594d12f08acc Darrick J. Wong 2022-01-06 181 /* Now wait for internal filesystem counter */
8dd594d12f08acc Darrick J. Wong 2022-01-06 182 sb->s_writers.frozen = SB_FREEZE_FS;
8dd594d12f08acc Darrick J. Wong 2022-01-06 183 percpu_down_write(sb->s_writers.rw_sem + SB_FREEZE_FS - 1);
8dd594d12f08acc Darrick J. Wong 2022-01-06 184
8dd594d12f08acc Darrick J. Wong 2022-01-06 185 /*
8dd594d12f08acc Darrick J. Wong 2022-01-06 186 * We do not need to quiesce the log to check the summary counters, so
8dd594d12f08acc Darrick J. Wong 2022-01-06 187 * skip the call to xfs_fs_freeze here. To prevent anyone else from
8dd594d12f08acc Darrick J. Wong 2022-01-06 188 * unfreezing us, set the VFS freeze level to one higher than
8dd594d12f08acc Darrick J. Wong 2022-01-06 189 * FREEZE_COMPLETE.
8dd594d12f08acc Darrick J. Wong 2022-01-06 190 */
8dd594d12f08acc Darrick J. Wong 2022-01-06 191 sb->s_writers.frozen = SB_FREEZE_EXCLUSIVE;
8dd594d12f08acc Darrick J. Wong 2022-01-06 192 for (level = SB_FREEZE_LEVELS - 1; level >= 0; level--)
8dd594d12f08acc Darrick J. Wong 2022-01-06 193 percpu_rwsem_release(sb->s_writers.rw_sem + level, 0,
8dd594d12f08acc Darrick J. Wong 2022-01-06 194 _THIS_IP_);
8dd594d12f08acc Darrick J. Wong 2022-01-06 195 done:
8dd594d12f08acc Darrick J. Wong 2022-01-06 196 fsc->frozen = true;
8dd594d12f08acc Darrick J. Wong 2022-01-06 197 up_write(&sb->s_umount);
8dd594d12f08acc Darrick J. Wong 2022-01-06 @198 return 0;
8dd594d12f08acc Darrick J. Wong 2022-01-06 199 }
8dd594d12f08acc Darrick J. Wong 2022-01-06 200
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
WARNING: multiple messages have this Message-ID (diff)
From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild-all@lists.01.org
Subject: [djwong-xfs:vectorized-scrub 99/334] fs/xfs/scrub/fscounters.c:198 xchk_fscounters_freeze() warn: inconsistent returns '&sb->s_umount'.
Date: Wed, 19 Jan 2022 06:58:29 +0300 [thread overview]
Message-ID: <202201170928.GcIhOWMI-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 6832 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git vectorized-scrub
head: 8427da8e62fbcf9a04e5b2663fe60b97d6911417
commit: 8dd594d12f08acc6c6fa388b2cae3e270bf8effc [99/334] xfs: stabilize fs summary counters for online fsck
config: ia64-randconfig-m031-20220116 (https://download.01.org/0day-ci/archive/20220117/202201170928.GcIhOWMI-lkp(a)intel.com/config)
compiler: ia64-linux-gcc (GCC) 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/xfs/scrub/fscounters.c:198 xchk_fscounters_freeze() warn: inconsistent returns '&sb->s_umount'.
vim +198 fs/xfs/scrub/fscounters.c
8dd594d12f08acc Darrick J. Wong 2022-01-06 125 STATIC int
8dd594d12f08acc Darrick J. Wong 2022-01-06 126 xchk_fscounters_freeze(
8dd594d12f08acc Darrick J. Wong 2022-01-06 127 struct xfs_scrub *sc)
8dd594d12f08acc Darrick J. Wong 2022-01-06 128 {
8dd594d12f08acc Darrick J. Wong 2022-01-06 129 struct xchk_fscounters *fsc = sc->buf;
8dd594d12f08acc Darrick J. Wong 2022-01-06 130 struct xfs_mount *mp = sc->mp;
8dd594d12f08acc Darrick J. Wong 2022-01-06 131 struct super_block *sb = mp->m_super;
8dd594d12f08acc Darrick J. Wong 2022-01-06 132 int level;
8dd594d12f08acc Darrick J. Wong 2022-01-06 133 int error = 0;
8dd594d12f08acc Darrick J. Wong 2022-01-06 134
8dd594d12f08acc Darrick J. Wong 2022-01-06 135 if (sc->flags & XCHK_HAVE_FREEZE_PROT) {
8dd594d12f08acc Darrick J. Wong 2022-01-06 136 sc->flags &= ~XCHK_HAVE_FREEZE_PROT;
8dd594d12f08acc Darrick J. Wong 2022-01-06 137 mnt_drop_write_file(sc->file);
8dd594d12f08acc Darrick J. Wong 2022-01-06 138 }
8dd594d12f08acc Darrick J. Wong 2022-01-06 139
8dd594d12f08acc Darrick J. Wong 2022-01-06 140 /* Wait until we're ready to freeze or give up. */
8dd594d12f08acc Darrick J. Wong 2022-01-06 141 down_write(&sb->s_umount);
8dd594d12f08acc Darrick J. Wong 2022-01-06 142 while (sb->s_writers.frozen != SB_UNFROZEN) {
8dd594d12f08acc Darrick J. Wong 2022-01-06 143 up_write(&sb->s_umount);
8dd594d12f08acc Darrick J. Wong 2022-01-06 144
8dd594d12f08acc Darrick J. Wong 2022-01-06 145 if (xchk_should_terminate(sc, &error))
8dd594d12f08acc Darrick J. Wong 2022-01-06 146 return error;
8dd594d12f08acc Darrick J. Wong 2022-01-06 147
8dd594d12f08acc Darrick J. Wong 2022-01-06 148 delay(HZ / 10);
8dd594d12f08acc Darrick J. Wong 2022-01-06 149 down_write(&sb->s_umount);
8dd594d12f08acc Darrick J. Wong 2022-01-06 150 }
8dd594d12f08acc Darrick J. Wong 2022-01-06 151
8dd594d12f08acc Darrick J. Wong 2022-01-06 152 if (sb_rdonly(sb)) {
8dd594d12f08acc Darrick J. Wong 2022-01-06 153 sb->s_writers.frozen = SB_FREEZE_EXCLUSIVE;
8dd594d12f08acc Darrick J. Wong 2022-01-06 154 goto done;
8dd594d12f08acc Darrick J. Wong 2022-01-06 155 }
8dd594d12f08acc Darrick J. Wong 2022-01-06 156
8dd594d12f08acc Darrick J. Wong 2022-01-06 157 sb->s_writers.frozen = SB_FREEZE_WRITE;
8dd594d12f08acc Darrick J. Wong 2022-01-06 158 /* Release s_umount to preserve sb_start_write -> s_umount ordering */
8dd594d12f08acc Darrick J. Wong 2022-01-06 159 up_write(&sb->s_umount);
8dd594d12f08acc Darrick J. Wong 2022-01-06 160 percpu_down_write(sb->s_writers.rw_sem + SB_FREEZE_WRITE - 1);
8dd594d12f08acc Darrick J. Wong 2022-01-06 161 down_write(&sb->s_umount);
8dd594d12f08acc Darrick J. Wong 2022-01-06 162
8dd594d12f08acc Darrick J. Wong 2022-01-06 163 /* Now we go and block page faults... */
8dd594d12f08acc Darrick J. Wong 2022-01-06 164 sb->s_writers.frozen = SB_FREEZE_PAGEFAULT;
8dd594d12f08acc Darrick J. Wong 2022-01-06 165 percpu_down_write(sb->s_writers.rw_sem + SB_FREEZE_PAGEFAULT - 1);
8dd594d12f08acc Darrick J. Wong 2022-01-06 166
8dd594d12f08acc Darrick J. Wong 2022-01-06 167 /*
8dd594d12f08acc Darrick J. Wong 2022-01-06 168 * All writers are done so after syncing there won't be dirty data.
8dd594d12f08acc Darrick J. Wong 2022-01-06 169 * Let xfs_fs_sync_fs flush dirty data so the VFS won't start writeback
8dd594d12f08acc Darrick J. Wong 2022-01-06 170 * and to disable the background gc workers.
8dd594d12f08acc Darrick J. Wong 2022-01-06 171 */
8dd594d12f08acc Darrick J. Wong 2022-01-06 172 error = sync_filesystem(sb);
8dd594d12f08acc Darrick J. Wong 2022-01-06 173 if (error) {
8dd594d12f08acc Darrick J. Wong 2022-01-06 174 sb->s_writers.frozen = SB_UNFROZEN;
8dd594d12f08acc Darrick J. Wong 2022-01-06 175 for (level = SB_FREEZE_PAGEFAULT; level >= 0; level--)
8dd594d12f08acc Darrick J. Wong 2022-01-06 176 percpu_up_write(sb->s_writers.rw_sem + level);
8dd594d12f08acc Darrick J. Wong 2022-01-06 177 wake_up(&sb->s_writers.wait_unfrozen);
Smatch wanted an up_write(&sb->s_umount); but this looks intentional?
8dd594d12f08acc Darrick J. Wong 2022-01-06 178 return error;
8dd594d12f08acc Darrick J. Wong 2022-01-06 179 }
8dd594d12f08acc Darrick J. Wong 2022-01-06 180
8dd594d12f08acc Darrick J. Wong 2022-01-06 181 /* Now wait for internal filesystem counter */
8dd594d12f08acc Darrick J. Wong 2022-01-06 182 sb->s_writers.frozen = SB_FREEZE_FS;
8dd594d12f08acc Darrick J. Wong 2022-01-06 183 percpu_down_write(sb->s_writers.rw_sem + SB_FREEZE_FS - 1);
8dd594d12f08acc Darrick J. Wong 2022-01-06 184
8dd594d12f08acc Darrick J. Wong 2022-01-06 185 /*
8dd594d12f08acc Darrick J. Wong 2022-01-06 186 * We do not need to quiesce the log to check the summary counters, so
8dd594d12f08acc Darrick J. Wong 2022-01-06 187 * skip the call to xfs_fs_freeze here. To prevent anyone else from
8dd594d12f08acc Darrick J. Wong 2022-01-06 188 * unfreezing us, set the VFS freeze level to one higher than
8dd594d12f08acc Darrick J. Wong 2022-01-06 189 * FREEZE_COMPLETE.
8dd594d12f08acc Darrick J. Wong 2022-01-06 190 */
8dd594d12f08acc Darrick J. Wong 2022-01-06 191 sb->s_writers.frozen = SB_FREEZE_EXCLUSIVE;
8dd594d12f08acc Darrick J. Wong 2022-01-06 192 for (level = SB_FREEZE_LEVELS - 1; level >= 0; level--)
8dd594d12f08acc Darrick J. Wong 2022-01-06 193 percpu_rwsem_release(sb->s_writers.rw_sem + level, 0,
8dd594d12f08acc Darrick J. Wong 2022-01-06 194 _THIS_IP_);
8dd594d12f08acc Darrick J. Wong 2022-01-06 195 done:
8dd594d12f08acc Darrick J. Wong 2022-01-06 196 fsc->frozen = true;
8dd594d12f08acc Darrick J. Wong 2022-01-06 197 up_write(&sb->s_umount);
8dd594d12f08acc Darrick J. Wong 2022-01-06 @198 return 0;
8dd594d12f08acc Darrick J. Wong 2022-01-06 199 }
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
WARNING: multiple messages have this Message-ID (diff)
From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild@lists.01.org, "Darrick J. Wong" <djwong@kernel.org>
Cc: lkp@intel.com, kbuild-all@lists.01.org,
"Darrick J. Wong" <darrick.wong@oracle.com>,
linux-kernel@vger.kernel.org
Subject: [djwong-xfs:vectorized-scrub 99/334] fs/xfs/scrub/fscounters.c:198 xchk_fscounters_freeze() warn: inconsistent returns '&sb->s_umount'.
Date: Wed, 19 Jan 2022 06:58:29 +0300 [thread overview]
Message-ID: <202201170928.GcIhOWMI-lkp@intel.com> (raw)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git vectorized-scrub
head: 8427da8e62fbcf9a04e5b2663fe60b97d6911417
commit: 8dd594d12f08acc6c6fa388b2cae3e270bf8effc [99/334] xfs: stabilize fs summary counters for online fsck
config: ia64-randconfig-m031-20220116 (https://download.01.org/0day-ci/archive/20220117/202201170928.GcIhOWMI-lkp@intel.com/config)
compiler: ia64-linux-gcc (GCC) 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/xfs/scrub/fscounters.c:198 xchk_fscounters_freeze() warn: inconsistent returns '&sb->s_umount'.
vim +198 fs/xfs/scrub/fscounters.c
8dd594d12f08acc Darrick J. Wong 2022-01-06 125 STATIC int
8dd594d12f08acc Darrick J. Wong 2022-01-06 126 xchk_fscounters_freeze(
8dd594d12f08acc Darrick J. Wong 2022-01-06 127 struct xfs_scrub *sc)
8dd594d12f08acc Darrick J. Wong 2022-01-06 128 {
8dd594d12f08acc Darrick J. Wong 2022-01-06 129 struct xchk_fscounters *fsc = sc->buf;
8dd594d12f08acc Darrick J. Wong 2022-01-06 130 struct xfs_mount *mp = sc->mp;
8dd594d12f08acc Darrick J. Wong 2022-01-06 131 struct super_block *sb = mp->m_super;
8dd594d12f08acc Darrick J. Wong 2022-01-06 132 int level;
8dd594d12f08acc Darrick J. Wong 2022-01-06 133 int error = 0;
8dd594d12f08acc Darrick J. Wong 2022-01-06 134
8dd594d12f08acc Darrick J. Wong 2022-01-06 135 if (sc->flags & XCHK_HAVE_FREEZE_PROT) {
8dd594d12f08acc Darrick J. Wong 2022-01-06 136 sc->flags &= ~XCHK_HAVE_FREEZE_PROT;
8dd594d12f08acc Darrick J. Wong 2022-01-06 137 mnt_drop_write_file(sc->file);
8dd594d12f08acc Darrick J. Wong 2022-01-06 138 }
8dd594d12f08acc Darrick J. Wong 2022-01-06 139
8dd594d12f08acc Darrick J. Wong 2022-01-06 140 /* Wait until we're ready to freeze or give up. */
8dd594d12f08acc Darrick J. Wong 2022-01-06 141 down_write(&sb->s_umount);
8dd594d12f08acc Darrick J. Wong 2022-01-06 142 while (sb->s_writers.frozen != SB_UNFROZEN) {
8dd594d12f08acc Darrick J. Wong 2022-01-06 143 up_write(&sb->s_umount);
8dd594d12f08acc Darrick J. Wong 2022-01-06 144
8dd594d12f08acc Darrick J. Wong 2022-01-06 145 if (xchk_should_terminate(sc, &error))
8dd594d12f08acc Darrick J. Wong 2022-01-06 146 return error;
8dd594d12f08acc Darrick J. Wong 2022-01-06 147
8dd594d12f08acc Darrick J. Wong 2022-01-06 148 delay(HZ / 10);
8dd594d12f08acc Darrick J. Wong 2022-01-06 149 down_write(&sb->s_umount);
8dd594d12f08acc Darrick J. Wong 2022-01-06 150 }
8dd594d12f08acc Darrick J. Wong 2022-01-06 151
8dd594d12f08acc Darrick J. Wong 2022-01-06 152 if (sb_rdonly(sb)) {
8dd594d12f08acc Darrick J. Wong 2022-01-06 153 sb->s_writers.frozen = SB_FREEZE_EXCLUSIVE;
8dd594d12f08acc Darrick J. Wong 2022-01-06 154 goto done;
8dd594d12f08acc Darrick J. Wong 2022-01-06 155 }
8dd594d12f08acc Darrick J. Wong 2022-01-06 156
8dd594d12f08acc Darrick J. Wong 2022-01-06 157 sb->s_writers.frozen = SB_FREEZE_WRITE;
8dd594d12f08acc Darrick J. Wong 2022-01-06 158 /* Release s_umount to preserve sb_start_write -> s_umount ordering */
8dd594d12f08acc Darrick J. Wong 2022-01-06 159 up_write(&sb->s_umount);
8dd594d12f08acc Darrick J. Wong 2022-01-06 160 percpu_down_write(sb->s_writers.rw_sem + SB_FREEZE_WRITE - 1);
8dd594d12f08acc Darrick J. Wong 2022-01-06 161 down_write(&sb->s_umount);
8dd594d12f08acc Darrick J. Wong 2022-01-06 162
8dd594d12f08acc Darrick J. Wong 2022-01-06 163 /* Now we go and block page faults... */
8dd594d12f08acc Darrick J. Wong 2022-01-06 164 sb->s_writers.frozen = SB_FREEZE_PAGEFAULT;
8dd594d12f08acc Darrick J. Wong 2022-01-06 165 percpu_down_write(sb->s_writers.rw_sem + SB_FREEZE_PAGEFAULT - 1);
8dd594d12f08acc Darrick J. Wong 2022-01-06 166
8dd594d12f08acc Darrick J. Wong 2022-01-06 167 /*
8dd594d12f08acc Darrick J. Wong 2022-01-06 168 * All writers are done so after syncing there won't be dirty data.
8dd594d12f08acc Darrick J. Wong 2022-01-06 169 * Let xfs_fs_sync_fs flush dirty data so the VFS won't start writeback
8dd594d12f08acc Darrick J. Wong 2022-01-06 170 * and to disable the background gc workers.
8dd594d12f08acc Darrick J. Wong 2022-01-06 171 */
8dd594d12f08acc Darrick J. Wong 2022-01-06 172 error = sync_filesystem(sb);
8dd594d12f08acc Darrick J. Wong 2022-01-06 173 if (error) {
8dd594d12f08acc Darrick J. Wong 2022-01-06 174 sb->s_writers.frozen = SB_UNFROZEN;
8dd594d12f08acc Darrick J. Wong 2022-01-06 175 for (level = SB_FREEZE_PAGEFAULT; level >= 0; level--)
8dd594d12f08acc Darrick J. Wong 2022-01-06 176 percpu_up_write(sb->s_writers.rw_sem + level);
8dd594d12f08acc Darrick J. Wong 2022-01-06 177 wake_up(&sb->s_writers.wait_unfrozen);
Smatch wanted an up_write(&sb->s_umount); but this looks intentional?
8dd594d12f08acc Darrick J. Wong 2022-01-06 178 return error;
8dd594d12f08acc Darrick J. Wong 2022-01-06 179 }
8dd594d12f08acc Darrick J. Wong 2022-01-06 180
8dd594d12f08acc Darrick J. Wong 2022-01-06 181 /* Now wait for internal filesystem counter */
8dd594d12f08acc Darrick J. Wong 2022-01-06 182 sb->s_writers.frozen = SB_FREEZE_FS;
8dd594d12f08acc Darrick J. Wong 2022-01-06 183 percpu_down_write(sb->s_writers.rw_sem + SB_FREEZE_FS - 1);
8dd594d12f08acc Darrick J. Wong 2022-01-06 184
8dd594d12f08acc Darrick J. Wong 2022-01-06 185 /*
8dd594d12f08acc Darrick J. Wong 2022-01-06 186 * We do not need to quiesce the log to check the summary counters, so
8dd594d12f08acc Darrick J. Wong 2022-01-06 187 * skip the call to xfs_fs_freeze here. To prevent anyone else from
8dd594d12f08acc Darrick J. Wong 2022-01-06 188 * unfreezing us, set the VFS freeze level to one higher than
8dd594d12f08acc Darrick J. Wong 2022-01-06 189 * FREEZE_COMPLETE.
8dd594d12f08acc Darrick J. Wong 2022-01-06 190 */
8dd594d12f08acc Darrick J. Wong 2022-01-06 191 sb->s_writers.frozen = SB_FREEZE_EXCLUSIVE;
8dd594d12f08acc Darrick J. Wong 2022-01-06 192 for (level = SB_FREEZE_LEVELS - 1; level >= 0; level--)
8dd594d12f08acc Darrick J. Wong 2022-01-06 193 percpu_rwsem_release(sb->s_writers.rw_sem + level, 0,
8dd594d12f08acc Darrick J. Wong 2022-01-06 194 _THIS_IP_);
8dd594d12f08acc Darrick J. Wong 2022-01-06 195 done:
8dd594d12f08acc Darrick J. Wong 2022-01-06 196 fsc->frozen = true;
8dd594d12f08acc Darrick J. Wong 2022-01-06 197 up_write(&sb->s_umount);
8dd594d12f08acc Darrick J. Wong 2022-01-06 @198 return 0;
8dd594d12f08acc Darrick J. Wong 2022-01-06 199 }
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
next reply other threads:[~2022-01-17 1:48 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-17 1:48 kernel test robot [this message]
2022-01-19 3:58 ` [djwong-xfs:vectorized-scrub 99/334] fs/xfs/scrub/fscounters.c:198 xchk_fscounters_freeze() warn: inconsistent returns '&sb->s_umount' Dan Carpenter
2022-01-19 3:58 ` Dan Carpenter
2022-01-19 4:37 ` Darrick J. Wong
2022-01-19 4:37 ` Darrick J. Wong
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=202201170928.GcIhOWMI-lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild@lists.01.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.