Hi,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on kdave/for-next]
[also build test WARNING on v5.12-rc7 next-20210414]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    
https://github.com/0day-ci/linux/commits/fdmanana-kernel-org/btrfs-zoned-fix-unpaired-block-group-unfreeze-during-device-replace/20210414-201003
base:   https://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for-next
config: x86_64-randconfig-r033-20210414 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 
9829f5e6b1bca9b61efc629770d28bb9014dec45)
reproduce (this is a W=1 build):
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # 
https://github.com/0day-ci/linux/commit/31f44555b4f7341b558a9062f0977e8fe817045d
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review 
fdmanana-kernel-org/btrfs-zoned-fix-unpaired-block-group-unfreeze-during-device-replace/20210414-201003
        git checkout 31f44555b4f7341b558a9062f0977e8fe817045d
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 
ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <l...@intel.com>

All warnings (new ones prefixed by >>):

>> fs/btrfs/scrub.c:3836:1: warning: unused label 'done' [-Wunused-label]
   done:
   ^~~~~
   1 warning generated.


vim +/done +3836 fs/btrfs/scrub.c

de17addce7a20d Naohiro Aota   2021-02-04  3586  
a2de733c78fa7a Arne Jansen    2011-03-08  3587  static noinline_for_stack
a36cf8b8933e4a Stefan Behrens 2012-11-02  3588  int 
scrub_enumerate_chunks(struct scrub_ctx *sctx,
32934280967d00 Omar Sandoval  2018-08-14  3589                             
struct btrfs_device *scrub_dev, u64 start, u64 end)
a2de733c78fa7a Arne Jansen    2011-03-08  3590  {
a2de733c78fa7a Arne Jansen    2011-03-08  3591          struct btrfs_dev_extent 
*dev_extent = NULL;
a2de733c78fa7a Arne Jansen    2011-03-08  3592          struct btrfs_path *path;
0b246afa62b0cf Jeff Mahoney   2016-06-22  3593          struct btrfs_fs_info 
*fs_info = sctx->fs_info;
0b246afa62b0cf Jeff Mahoney   2016-06-22  3594          struct btrfs_root *root 
= fs_info->dev_root;
a2de733c78fa7a Arne Jansen    2011-03-08  3595          u64 length;
a2de733c78fa7a Arne Jansen    2011-03-08  3596          u64 chunk_offset;
55e3a601c81cdc Zhaolei        2015-08-05  3597          int ret = 0;
76a8efa171bf6c Zhaolei        2015-11-17  3598          int ro_set;
a2de733c78fa7a Arne Jansen    2011-03-08  3599          int slot;
a2de733c78fa7a Arne Jansen    2011-03-08  3600          struct extent_buffer *l;
a2de733c78fa7a Arne Jansen    2011-03-08  3601          struct btrfs_key key;
a2de733c78fa7a Arne Jansen    2011-03-08  3602          struct btrfs_key 
found_key;
32da5386d9a4fd David Sterba   2019-10-29  3603          struct 
btrfs_block_group *cache;
ff023aac31198e Stefan Behrens 2012-11-06  3604          struct 
btrfs_dev_replace *dev_replace = &fs_info->dev_replace;
a2de733c78fa7a Arne Jansen    2011-03-08  3605  
a2de733c78fa7a Arne Jansen    2011-03-08  3606          path = 
btrfs_alloc_path();
a2de733c78fa7a Arne Jansen    2011-03-08  3607          if (!path)
a2de733c78fa7a Arne Jansen    2011-03-08  3608                  return -ENOMEM;
a2de733c78fa7a Arne Jansen    2011-03-08  3609  
e4058b54d1e442 David Sterba   2015-11-27  3610          path->reada = 
READA_FORWARD;
a2de733c78fa7a Arne Jansen    2011-03-08  3611          
path->search_commit_root = 1;
a2de733c78fa7a Arne Jansen    2011-03-08  3612          path->skip_locking = 1;
a2de733c78fa7a Arne Jansen    2011-03-08  3613  
a36cf8b8933e4a Stefan Behrens 2012-11-02  3614          key.objectid = 
scrub_dev->devid;
a2de733c78fa7a Arne Jansen    2011-03-08  3615          key.offset = 0ull;
a2de733c78fa7a Arne Jansen    2011-03-08  3616          key.type = 
BTRFS_DEV_EXTENT_KEY;
a2de733c78fa7a Arne Jansen    2011-03-08  3617  
a2de733c78fa7a Arne Jansen    2011-03-08  3618          while (1) {
a2de733c78fa7a Arne Jansen    2011-03-08  3619                  ret = 
btrfs_search_slot(NULL, root, &key, path, 0, 0);
a2de733c78fa7a Arne Jansen    2011-03-08  3620                  if (ret < 0)
8c51032f978bac Arne Jansen    2011-06-03  3621                          break;
8c51032f978bac Arne Jansen    2011-06-03  3622                  if (ret > 0) {
8c51032f978bac Arne Jansen    2011-06-03  3623                          if 
(path->slots[0] >=
8c51032f978bac Arne Jansen    2011-06-03  3624                              
btrfs_header_nritems(path->nodes[0])) {
8c51032f978bac Arne Jansen    2011-06-03  3625                                  
ret = btrfs_next_leaf(root, path);
55e3a601c81cdc Zhaolei        2015-08-05  3626                                  
if (ret < 0)
55e3a601c81cdc Zhaolei        2015-08-05  3627                                  
        break;
55e3a601c81cdc Zhaolei        2015-08-05  3628                                  
if (ret > 0) {
55e3a601c81cdc Zhaolei        2015-08-05  3629                                  
        ret = 0;
8c51032f978bac Arne Jansen    2011-06-03  3630                                  
        break;
8c51032f978bac Arne Jansen    2011-06-03  3631                                  
}
55e3a601c81cdc Zhaolei        2015-08-05  3632                          } else {
55e3a601c81cdc Zhaolei        2015-08-05  3633                                  
ret = 0;
55e3a601c81cdc Zhaolei        2015-08-05  3634                          }
8c51032f978bac Arne Jansen    2011-06-03  3635                  }
a2de733c78fa7a Arne Jansen    2011-03-08  3636  
a2de733c78fa7a Arne Jansen    2011-03-08  3637                  l = 
path->nodes[0];
a2de733c78fa7a Arne Jansen    2011-03-08  3638                  slot = 
path->slots[0];
a2de733c78fa7a Arne Jansen    2011-03-08  3639  
a2de733c78fa7a Arne Jansen    2011-03-08  3640                  
btrfs_item_key_to_cpu(l, &found_key, slot);
a2de733c78fa7a Arne Jansen    2011-03-08  3641  
a36cf8b8933e4a Stefan Behrens 2012-11-02  3642                  if 
(found_key.objectid != scrub_dev->devid)
a2de733c78fa7a Arne Jansen    2011-03-08  3643                          break;
a2de733c78fa7a Arne Jansen    2011-03-08  3644  
962a298f35110e David Sterba   2014-06-04  3645                  if 
(found_key.type != BTRFS_DEV_EXTENT_KEY)
a2de733c78fa7a Arne Jansen    2011-03-08  3646                          break;
a2de733c78fa7a Arne Jansen    2011-03-08  3647  
a2de733c78fa7a Arne Jansen    2011-03-08  3648                  if 
(found_key.offset >= end)
a2de733c78fa7a Arne Jansen    2011-03-08  3649                          break;
a2de733c78fa7a Arne Jansen    2011-03-08  3650  
a2de733c78fa7a Arne Jansen    2011-03-08  3651                  if 
(found_key.offset < key.offset)
a2de733c78fa7a Arne Jansen    2011-03-08  3652                          break;
a2de733c78fa7a Arne Jansen    2011-03-08  3653  
a2de733c78fa7a Arne Jansen    2011-03-08  3654                  dev_extent = 
btrfs_item_ptr(l, slot, struct btrfs_dev_extent);
a2de733c78fa7a Arne Jansen    2011-03-08  3655                  length = 
btrfs_dev_extent_length(l, dev_extent);
a2de733c78fa7a Arne Jansen    2011-03-08  3656  
ced96edc48ba45 Qu Wenruo      2014-06-19  3657                  if 
(found_key.offset + length <= start)
ced96edc48ba45 Qu Wenruo      2014-06-19  3658                          goto 
skip;
a2de733c78fa7a Arne Jansen    2011-03-08  3659  
a2de733c78fa7a Arne Jansen    2011-03-08  3660                  chunk_offset = 
btrfs_dev_extent_chunk_offset(l, dev_extent);
a2de733c78fa7a Arne Jansen    2011-03-08  3661  
a2de733c78fa7a Arne Jansen    2011-03-08  3662                  /*
a2de733c78fa7a Arne Jansen    2011-03-08  3663                   * get a 
reference on the corresponding block group to prevent
a2de733c78fa7a Arne Jansen    2011-03-08  3664                   * the chunk 
from going away while we scrub it
a2de733c78fa7a Arne Jansen    2011-03-08  3665                   */
a2de733c78fa7a Arne Jansen    2011-03-08  3666                  cache = 
btrfs_lookup_block_group(fs_info, chunk_offset);
ced96edc48ba45 Qu Wenruo      2014-06-19  3667  
ced96edc48ba45 Qu Wenruo      2014-06-19  3668                  /* some chunks 
are removed but not committed to disk yet,
ced96edc48ba45 Qu Wenruo      2014-06-19  3669                   * continue 
scrubbing */
ced96edc48ba45 Qu Wenruo      2014-06-19  3670                  if (!cache)
ced96edc48ba45 Qu Wenruo      2014-06-19  3671                          goto 
skip;
ced96edc48ba45 Qu Wenruo      2014-06-19  3672  
78ce9fc269af6e Naohiro Aota   2021-02-04  3673                  if 
(sctx->is_dev_replace && btrfs_is_zoned(fs_info)) {
78ce9fc269af6e Naohiro Aota   2021-02-04  3674                          
spin_lock(&cache->lock);
78ce9fc269af6e Naohiro Aota   2021-02-04  3675                          if 
(!cache->to_copy) {
78ce9fc269af6e Naohiro Aota   2021-02-04  3676                                  
spin_unlock(&cache->lock);
31f44555b4f734 Filipe Manana  2021-04-14  3677                                  
btrfs_put_block_group(cache);
31f44555b4f734 Filipe Manana  2021-04-14  3678                                  
goto skip;
78ce9fc269af6e Naohiro Aota   2021-02-04  3679                          }
78ce9fc269af6e Naohiro Aota   2021-02-04  3680                          
spin_unlock(&cache->lock);
78ce9fc269af6e Naohiro Aota   2021-02-04  3681                  }
78ce9fc269af6e Naohiro Aota   2021-02-04  3682  
2473d24f2b77da Filipe Manana  2020-05-08  3683                  /*
2473d24f2b77da Filipe Manana  2020-05-08  3684                   * Make sure 
that while we are scrubbing the corresponding block
2473d24f2b77da Filipe Manana  2020-05-08  3685                   * group 
doesn't get its logical address and its device extents
2473d24f2b77da Filipe Manana  2020-05-08  3686                   * reused for 
another block group, which can possibly be of a
2473d24f2b77da Filipe Manana  2020-05-08  3687                   * different 
type and different profile. We do this to prevent
2473d24f2b77da Filipe Manana  2020-05-08  3688                   * false error 
detections and crashes due to bogus attempts to
2473d24f2b77da Filipe Manana  2020-05-08  3689                   * repair 
extents.
2473d24f2b77da Filipe Manana  2020-05-08  3690                   */
2473d24f2b77da Filipe Manana  2020-05-08  3691                  
spin_lock(&cache->lock);
2473d24f2b77da Filipe Manana  2020-05-08  3692                  if 
(cache->removed) {
2473d24f2b77da Filipe Manana  2020-05-08  3693                          
spin_unlock(&cache->lock);
2473d24f2b77da Filipe Manana  2020-05-08  3694                          
btrfs_put_block_group(cache);
2473d24f2b77da Filipe Manana  2020-05-08  3695                          goto 
skip;
2473d24f2b77da Filipe Manana  2020-05-08  3696                  }
6b7304af62d02d Filipe Manana  2020-05-08  3697                  
btrfs_freeze_block_group(cache);
2473d24f2b77da Filipe Manana  2020-05-08  3698                  
spin_unlock(&cache->lock);
2473d24f2b77da Filipe Manana  2020-05-08  3699  
55e3a601c81cdc Zhaolei        2015-08-05  3700                  /*
55e3a601c81cdc Zhaolei        2015-08-05  3701                   * we need call 
btrfs_inc_block_group_ro() with scrubs_paused,
55e3a601c81cdc Zhaolei        2015-08-05  3702                   * to avoid 
deadlock caused by:
55e3a601c81cdc Zhaolei        2015-08-05  3703                   * 
btrfs_inc_block_group_ro()
55e3a601c81cdc Zhaolei        2015-08-05  3704                   * -> 
btrfs_wait_for_commit()
55e3a601c81cdc Zhaolei        2015-08-05  3705                   * -> 
btrfs_commit_transaction()
55e3a601c81cdc Zhaolei        2015-08-05  3706                   * -> 
btrfs_scrub_pause()
55e3a601c81cdc Zhaolei        2015-08-05  3707                   */
55e3a601c81cdc Zhaolei        2015-08-05  3708                  
scrub_pause_on(fs_info);
b12de52896c0e8 Qu Wenruo      2019-11-15  3709  
b12de52896c0e8 Qu Wenruo      2019-11-15  3710                  /*
b12de52896c0e8 Qu Wenruo      2019-11-15  3711                   * Don't do 
chunk preallocation for scrub.
b12de52896c0e8 Qu Wenruo      2019-11-15  3712                   *
b12de52896c0e8 Qu Wenruo      2019-11-15  3713                   * This is 
especially important for SYSTEM bgs, or we can hit
b12de52896c0e8 Qu Wenruo      2019-11-15  3714                   * -EFBIG from 
btrfs_finish_chunk_alloc() like:
b12de52896c0e8 Qu Wenruo      2019-11-15  3715                   * 1. The only 
SYSTEM bg is marked RO.
b12de52896c0e8 Qu Wenruo      2019-11-15  3716                   *    Since 
SYSTEM bg is small, that's pretty common.
b12de52896c0e8 Qu Wenruo      2019-11-15  3717                   * 2. New 
SYSTEM bg will be allocated
b12de52896c0e8 Qu Wenruo      2019-11-15  3718                   *    Due to 
regular version will allocate new chunk.
b12de52896c0e8 Qu Wenruo      2019-11-15  3719                   * 3. New 
SYSTEM bg is empty and will get cleaned up
b12de52896c0e8 Qu Wenruo      2019-11-15  3720                   *    Before 
cleanup really happens, it's marked RO again.
b12de52896c0e8 Qu Wenruo      2019-11-15  3721                   * 4. Empty 
SYSTEM bg get scrubbed
b12de52896c0e8 Qu Wenruo      2019-11-15  3722                   *    We go 
back to 2.
b12de52896c0e8 Qu Wenruo      2019-11-15  3723                   *
b12de52896c0e8 Qu Wenruo      2019-11-15  3724                   * This can 
easily boost the amount of SYSTEM chunks if cleaner
b12de52896c0e8 Qu Wenruo      2019-11-15  3725                   * thread can't 
be triggered fast enough, and use up all space
b12de52896c0e8 Qu Wenruo      2019-11-15  3726                   * of 
btrfs_super_block::sys_chunk_array
1bbb97b8ce7ddf Qu Wenruo      2020-01-24  3727                   *
1bbb97b8ce7ddf Qu Wenruo      2020-01-24  3728                   * While for 
dev replace, we need to try our best to mark block
1bbb97b8ce7ddf Qu Wenruo      2020-01-24  3729                   * group RO, to 
prevent race between:
1bbb97b8ce7ddf Qu Wenruo      2020-01-24  3730                   * - Write 
duplication
1bbb97b8ce7ddf Qu Wenruo      2020-01-24  3731                   *   Contains 
latest data
1bbb97b8ce7ddf Qu Wenruo      2020-01-24  3732                   * - Scrub copy
1bbb97b8ce7ddf Qu Wenruo      2020-01-24  3733                   *   Contains 
data from commit tree
1bbb97b8ce7ddf Qu Wenruo      2020-01-24  3734                   *
1bbb97b8ce7ddf Qu Wenruo      2020-01-24  3735                   * If target 
block group is not marked RO, nocow writes can
1bbb97b8ce7ddf Qu Wenruo      2020-01-24  3736                   * be 
overwritten by scrub copy, causing data corruption.
1bbb97b8ce7ddf Qu Wenruo      2020-01-24  3737                   * So for 
dev-replace, it's not allowed to continue if a block
1bbb97b8ce7ddf Qu Wenruo      2020-01-24  3738                   * group is not 
RO.
b12de52896c0e8 Qu Wenruo      2019-11-15  3739                   */
1bbb97b8ce7ddf Qu Wenruo      2020-01-24  3740                  ret = 
btrfs_inc_block_group_ro(cache, sctx->is_dev_replace);
de17addce7a20d Naohiro Aota   2021-02-04  3741                  if (!ret && 
sctx->is_dev_replace) {
de17addce7a20d Naohiro Aota   2021-02-04  3742                          ret = 
finish_extent_writes_for_zoned(root, cache);
de17addce7a20d Naohiro Aota   2021-02-04  3743                          if 
(ret) {
de17addce7a20d Naohiro Aota   2021-02-04  3744                                  
btrfs_dec_block_group_ro(cache);
de17addce7a20d Naohiro Aota   2021-02-04  3745                                  
scrub_pause_off(fs_info);
de17addce7a20d Naohiro Aota   2021-02-04  3746                                  
btrfs_put_block_group(cache);
de17addce7a20d Naohiro Aota   2021-02-04  3747                                  
break;
de17addce7a20d Naohiro Aota   2021-02-04  3748                          }
de17addce7a20d Naohiro Aota   2021-02-04  3749                  }
de17addce7a20d Naohiro Aota   2021-02-04  3750  
76a8efa171bf6c Zhaolei        2015-11-17  3751                  if (ret == 0) {
76a8efa171bf6c Zhaolei        2015-11-17  3752                          ro_set 
= 1;
1bbb97b8ce7ddf Qu Wenruo      2020-01-24  3753                  } else if (ret 
== -ENOSPC && !sctx->is_dev_replace) {
76a8efa171bf6c Zhaolei        2015-11-17  3754                          /*
76a8efa171bf6c Zhaolei        2015-11-17  3755                           * 
btrfs_inc_block_group_ro return -ENOSPC when it
76a8efa171bf6c Zhaolei        2015-11-17  3756                           * 
failed in creating new chunk for metadata.
1bbb97b8ce7ddf Qu Wenruo      2020-01-24  3757                           * It 
is not a problem for scrub, because
76a8efa171bf6c Zhaolei        2015-11-17  3758                           * 
metadata are always cowed, and our scrub paused
76a8efa171bf6c Zhaolei        2015-11-17  3759                           * 
commit_transactions.
76a8efa171bf6c Zhaolei        2015-11-17  3760                           */
76a8efa171bf6c Zhaolei        2015-11-17  3761                          ro_set 
= 0;
195a49eaf655eb Filipe Manana  2021-02-05  3762                  } else if (ret 
== -ETXTBSY) {
195a49eaf655eb Filipe Manana  2021-02-05  3763                          
btrfs_warn(fs_info,
195a49eaf655eb Filipe Manana  2021-02-05  3764                     "skipping 
scrub of block group %llu due to active swapfile",
195a49eaf655eb Filipe Manana  2021-02-05  3765                                  
   cache->start);
195a49eaf655eb Filipe Manana  2021-02-05  3766                          
scrub_pause_off(fs_info);
195a49eaf655eb Filipe Manana  2021-02-05  3767                          ret = 0;
195a49eaf655eb Filipe Manana  2021-02-05  3768                          goto 
skip_unfreeze;
76a8efa171bf6c Zhaolei        2015-11-17  3769                  } else {
5d163e0e68ce74 Jeff Mahoney   2016-09-20  3770                          
btrfs_warn(fs_info,
913e153572218c David Sterba   2017-07-13  3771                                  
   "failed setting block group ro: %d", ret);
6b7304af62d02d Filipe Manana  2020-05-08  3772                          
btrfs_unfreeze_block_group(cache);
55e3a601c81cdc Zhaolei        2015-08-05  3773                          
btrfs_put_block_group(cache);
1bbb97b8ce7ddf Qu Wenruo      2020-01-24  3774                          
scrub_pause_off(fs_info);
55e3a601c81cdc Zhaolei        2015-08-05  3775                          break;
55e3a601c81cdc Zhaolei        2015-08-05  3776                  }
55e3a601c81cdc Zhaolei        2015-08-05  3777  
1bbb97b8ce7ddf Qu Wenruo      2020-01-24  3778                  /*
1bbb97b8ce7ddf Qu Wenruo      2020-01-24  3779                   * Now the 
target block is marked RO, wait for nocow writes to
1bbb97b8ce7ddf Qu Wenruo      2020-01-24  3780                   * finish 
before dev-replace.
1bbb97b8ce7ddf Qu Wenruo      2020-01-24  3781                   * COW is fine, 
as COW never overwrites extents in commit tree.
1bbb97b8ce7ddf Qu Wenruo      2020-01-24  3782                   */
1bbb97b8ce7ddf Qu Wenruo      2020-01-24  3783                  if 
(sctx->is_dev_replace) {
1bbb97b8ce7ddf Qu Wenruo      2020-01-24  3784                          
btrfs_wait_nocow_writers(cache);
1bbb97b8ce7ddf Qu Wenruo      2020-01-24  3785                          
btrfs_wait_ordered_roots(fs_info, U64_MAX, cache->start,
1bbb97b8ce7ddf Qu Wenruo      2020-01-24  3786                                  
        cache->length);
1bbb97b8ce7ddf Qu Wenruo      2020-01-24  3787                  }
1bbb97b8ce7ddf Qu Wenruo      2020-01-24  3788  
1bbb97b8ce7ddf Qu Wenruo      2020-01-24  3789                  
scrub_pause_off(fs_info);
3ec17a67cc340b Dan Carpenter  2019-10-31  3790                  
down_write(&dev_replace->rwsem);
ff023aac31198e Stefan Behrens 2012-11-06  3791                  
dev_replace->cursor_right = found_key.offset + length;
ff023aac31198e Stefan Behrens 2012-11-06  3792                  
dev_replace->cursor_left = found_key.offset;
ff023aac31198e Stefan Behrens 2012-11-06  3793                  
dev_replace->item_needs_writeback = 1;
cb5583dd52fab4 David Sterba   2018-09-07  3794                  
up_write(&dev_replace->rwsem);
cb5583dd52fab4 David Sterba   2018-09-07  3795  
8c204c9657c32e Zhao Lei       2015-08-19  3796                  ret = 
scrub_chunk(sctx, scrub_dev, chunk_offset, length,
32934280967d00 Omar Sandoval  2018-08-14  3797                                  
  found_key.offset, cache);
ff023aac31198e Stefan Behrens 2012-11-06  3798  
ff023aac31198e Stefan Behrens 2012-11-06  3799                  /*
ff023aac31198e Stefan Behrens 2012-11-06  3800                   * flush, 
submit all pending read and write bios, afterwards
ff023aac31198e Stefan Behrens 2012-11-06  3801                   * wait for 
them.
ff023aac31198e Stefan Behrens 2012-11-06  3802                   * Note that in 
the dev replace case, a read request causes
ff023aac31198e Stefan Behrens 2012-11-06  3803                   * write 
requests that are submitted in the read completion
ff023aac31198e Stefan Behrens 2012-11-06  3804                   * worker. 
Therefore in the current situation, it is required
ff023aac31198e Stefan Behrens 2012-11-06  3805                   * that all 
write requests are flushed, so that all read and
ff023aac31198e Stefan Behrens 2012-11-06  3806                   * write 
requests are really completed when bios_in_flight
ff023aac31198e Stefan Behrens 2012-11-06  3807                   * changes to 0.
ff023aac31198e Stefan Behrens 2012-11-06  3808                   */
2073c4c2e51a93 David Sterba   2017-03-31  3809                  
sctx->flush_all_writes = true;
ff023aac31198e Stefan Behrens 2012-11-06  3810                  
scrub_submit(sctx);
3fb99303c64e31 David Sterba   2017-05-16  3811                  
mutex_lock(&sctx->wr_lock);
ff023aac31198e Stefan Behrens 2012-11-06  3812                  
scrub_wr_submit(sctx);
3fb99303c64e31 David Sterba   2017-05-16  3813                  
mutex_unlock(&sctx->wr_lock);
ff023aac31198e Stefan Behrens 2012-11-06  3814  
ff023aac31198e Stefan Behrens 2012-11-06  3815                  
wait_event(sctx->list_wait,
ff023aac31198e Stefan Behrens 2012-11-06  3816                             
atomic_read(&sctx->bios_in_flight) == 0);
b708ce969af3ce Zhaolei        2015-08-05  3817  
b708ce969af3ce Zhaolei        2015-08-05  3818                  
scrub_pause_on(fs_info);
12cf93728dfba2 Wang Shilong   2014-02-19  3819  
12cf93728dfba2 Wang Shilong   2014-02-19  3820                  /*
12cf93728dfba2 Wang Shilong   2014-02-19  3821                   * must be 
called before we decrease @scrub_paused.
12cf93728dfba2 Wang Shilong   2014-02-19  3822                   * make sure we 
don't block transaction commit while
12cf93728dfba2 Wang Shilong   2014-02-19  3823                   * we are 
waiting pending workers finished.
12cf93728dfba2 Wang Shilong   2014-02-19  3824                   */
ff023aac31198e Stefan Behrens 2012-11-06  3825                  
wait_event(sctx->list_wait,
ff023aac31198e Stefan Behrens 2012-11-06  3826                             
atomic_read(&sctx->workers_pending) == 0);
2073c4c2e51a93 David Sterba   2017-03-31  3827                  
sctx->flush_all_writes = false;
12cf93728dfba2 Wang Shilong   2014-02-19  3828  
b708ce969af3ce Zhaolei        2015-08-05  3829                  
scrub_pause_off(fs_info);
ff023aac31198e Stefan Behrens 2012-11-06  3830  
78ce9fc269af6e Naohiro Aota   2021-02-04  3831                  if 
(sctx->is_dev_replace &&
78ce9fc269af6e Naohiro Aota   2021-02-04  3832                      
!btrfs_finish_block_group_to_copy(dev_replace->srcdev,
78ce9fc269af6e Naohiro Aota   2021-02-04  3833                                  
                      cache, found_key.offset))
78ce9fc269af6e Naohiro Aota   2021-02-04  3834                          ro_set 
= 0;
78ce9fc269af6e Naohiro Aota   2021-02-04  3835  
78ce9fc269af6e Naohiro Aota   2021-02-04 @3836  done:
3ec17a67cc340b Dan Carpenter  2019-10-31  3837                  
down_write(&dev_replace->rwsem);
1a1a8b732c7e95 Filipe Manana  2016-05-14  3838                  
dev_replace->cursor_left = dev_replace->cursor_right;
1a1a8b732c7e95 Filipe Manana  2016-05-14  3839                  
dev_replace->item_needs_writeback = 1;
3ec17a67cc340b Dan Carpenter  2019-10-31  3840                  
up_write(&dev_replace->rwsem);
1a1a8b732c7e95 Filipe Manana  2016-05-14  3841  
76a8efa171bf6c Zhaolei        2015-11-17  3842                  if (ro_set)
2ff7e61e0d30ff Jeff Mahoney   2016-06-22  3843                          
btrfs_dec_block_group_ro(cache);
ff023aac31198e Stefan Behrens 2012-11-06  3844  
758f2dfcf8a249 Filipe Manana  2015-11-19  3845                  /*
758f2dfcf8a249 Filipe Manana  2015-11-19  3846                   * We might 
have prevented the cleaner kthread from deleting
758f2dfcf8a249 Filipe Manana  2015-11-19  3847                   * this block 
group if it was already unused because we raced
758f2dfcf8a249 Filipe Manana  2015-11-19  3848                   * and set it 
to RO mode first. So add it back to the unused
758f2dfcf8a249 Filipe Manana  2015-11-19  3849                   * list, 
otherwise it might not ever be deleted unless a manual
758f2dfcf8a249 Filipe Manana  2015-11-19  3850                   * balance is 
triggered or it becomes used and unused again.
758f2dfcf8a249 Filipe Manana  2015-11-19  3851                   */
758f2dfcf8a249 Filipe Manana  2015-11-19  3852                  
spin_lock(&cache->lock);
758f2dfcf8a249 Filipe Manana  2015-11-19  3853                  if 
(!cache->removed && !cache->ro && cache->reserved == 0 &&
bf38be65f3703d David Sterba   2019-10-23  3854                      cache->used 
== 0) {
758f2dfcf8a249 Filipe Manana  2015-11-19  3855                          
spin_unlock(&cache->lock);
6e80d4f8c422d3 Dennis Zhou    2019-12-13  3856                          if 
(btrfs_test_opt(fs_info, DISCARD_ASYNC))
6e80d4f8c422d3 Dennis Zhou    2019-12-13  3857                                  
btrfs_discard_queue_work(&fs_info->discard_ctl,
6e80d4f8c422d3 Dennis Zhou    2019-12-13  3858                                  
                         cache);
6e80d4f8c422d3 Dennis Zhou    2019-12-13  3859                          else
031f24da2c8a7b Qu Wenruo      2018-05-22  3860                                  
btrfs_mark_bg_unused(cache);
758f2dfcf8a249 Filipe Manana  2015-11-19  3861                  } else {
758f2dfcf8a249 Filipe Manana  2015-11-19  3862                          
spin_unlock(&cache->lock);
758f2dfcf8a249 Filipe Manana  2015-11-19  3863                  }
195a49eaf655eb Filipe Manana  2021-02-05  3864  skip_unfreeze:
6b7304af62d02d Filipe Manana  2020-05-08  3865                  
btrfs_unfreeze_block_group(cache);
a2de733c78fa7a Arne Jansen    2011-03-08  3866                  
btrfs_put_block_group(cache);
a2de733c78fa7a Arne Jansen    2011-03-08  3867                  if (ret)
a2de733c78fa7a Arne Jansen    2011-03-08  3868                          break;
32934280967d00 Omar Sandoval  2018-08-14  3869                  if 
(sctx->is_dev_replace &&
af1be4f851db4f Stefan Behrens 2012-11-27  3870                      
atomic64_read(&dev_replace->num_write_errors) > 0) {
ff023aac31198e Stefan Behrens 2012-11-06  3871                          ret = 
-EIO;
ff023aac31198e Stefan Behrens 2012-11-06  3872                          break;
ff023aac31198e Stefan Behrens 2012-11-06  3873                  }
ff023aac31198e Stefan Behrens 2012-11-06  3874                  if 
(sctx->stat.malloc_errors > 0) {
ff023aac31198e Stefan Behrens 2012-11-06  3875                          ret = 
-ENOMEM;
ff023aac31198e Stefan Behrens 2012-11-06  3876                          break;
ff023aac31198e Stefan Behrens 2012-11-06  3877                  }
ced96edc48ba45 Qu Wenruo      2014-06-19  3878  skip:
a2de733c78fa7a Arne Jansen    2011-03-08  3879                  key.offset = 
found_key.offset + length;
712673339a0d08 Chris Mason    2011-05-23  3880                  
btrfs_release_path(path);
a2de733c78fa7a Arne Jansen    2011-03-08  3881          }
a2de733c78fa7a Arne Jansen    2011-03-08  3882  
a2de733c78fa7a Arne Jansen    2011-03-08  3883          btrfs_free_path(path);
8c51032f978bac Arne Jansen    2011-06-03  3884  
55e3a601c81cdc Zhaolei        2015-08-05  3885          return ret;
a2de733c78fa7a Arne Jansen    2011-03-08  3886  }
a2de733c78fa7a Arne Jansen    2011-03-08  3887  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org

Attachment: .config.gz
Description: application/gzip

Reply via email to