From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: [linux-next:master 6080/6849] fs/btrfs/volumes.c:6412 btrfs_map_block() error: we previously assumed 'mirror_num_ret' could be null (see line 6250)
Date: Fri, 2 Jun 2023 21:51:32 +0800 [thread overview]
Message-ID: <202306022143.zoQGZHa1-lkp@intel.com> (raw)
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: Linux Memory Management List <linux-mm@kvack.org>
TO: Christoph Hellwig <hch@lst.de>
CC: David Sterba <dsterba@suse.com>
CC: Qu Wenruo <wqu@suse.com>
CC: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Hi Christoph,
FYI, the error/warning was bisected to this commit, please ignore it if it's irrelevant.
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: bc708bbd8260ee4eb3428b0109f5f3be661fae46
commit: f34e3e7526318e4fcda5b043c8d5e90cfac652c2 [6080/6849] btrfs: rename __btrfs_map_block to btrfs_map_block
:::::: branch date: 10 hours ago
:::::: commit date: 2 days ago
config: x86_64-randconfig-m001-20230531 (https://download.01.org/0day-ci/archive/20230602/202306022143.zoQGZHa1-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202306022143.zoQGZHa1-lkp@intel.com/
smatch warnings:
fs/btrfs/volumes.c:6412 btrfs_map_block() error: we previously assumed 'mirror_num_ret' could be null (see line 6250)
vim +/mirror_num_ret +6412 fs/btrfs/volumes.c
03793cbbc80fe6 Christoph Hellwig 2022-08-06 6234
f34e3e7526318e Christoph Hellwig 2023-05-31 6235 int btrfs_map_block(struct btrfs_fs_info *fs_info, enum btrfs_map_op op,
103c19723c80bf Christoph Hellwig 2022-11-15 6236 u64 logical, u64 *length,
4c664611791239 Qu Wenruo 2021-09-15 6237 struct btrfs_io_context **bioc_ret,
103c19723c80bf Christoph Hellwig 2022-11-15 6238 struct btrfs_io_stripe *smap, int *mirror_num_ret,
103c19723c80bf Christoph Hellwig 2022-11-15 6239 int need_raid_map)
0b86a832a1f38a Chris Mason 2008-03-24 6240 {
0b86a832a1f38a Chris Mason 2008-03-24 6241 struct extent_map *em;
0b86a832a1f38a Chris Mason 2008-03-24 6242 struct map_lookup *map;
f8a02dc6fd38da Christoph Hellwig 2023-01-21 6243 u64 map_offset;
593060d756e0c2 Chris Mason 2008-03-25 6244 u64 stripe_offset;
6ded22c1bfe6a8 Qu Wenruo 2023-02-17 6245 u32 stripe_nr;
9d644a623ec48e David Sterba 2015-02-20 6246 u32 stripe_index;
cff8267228c14e David Sterba 2019-05-17 6247 int data_stripes;
cea9e4452ebaf1 Chris Mason 2008-04-09 6248 int i;
de11cc12df1733 Li Zefan 2011-12-01 6249 int ret = 0;
03793cbbc80fe6 Christoph Hellwig 2022-08-06 @6250 int mirror_num = (mirror_num_ret ? *mirror_num_ret : 0);
f2d8d74d7874f8 Chris Mason 2008-04-21 6251 int num_stripes;
5f50fa918f0c17 Qu Wenruo 2023-02-22 6252 int num_copies;
a236aed14ccb06 Chris Mason 2008-04-29 6253 int max_errors = 0;
4c664611791239 Qu Wenruo 2021-09-15 6254 struct btrfs_io_context *bioc = NULL;
472262f35a6b34 Stefan Behrens 2012-11-06 6255 struct btrfs_dev_replace *dev_replace = &fs_info->dev_replace;
472262f35a6b34 Stefan Behrens 2012-11-06 6256 int dev_replace_is_ongoing = 0;
4ced85f81a7a67 Qu Wenruo 2023-02-07 6257 u16 num_alloc_stripes;
53b381b3abeb86 David Woodhouse 2013-01-29 6258 u64 raid56_full_stripe_start = (u64)-1;
f8a02dc6fd38da Christoph Hellwig 2023-01-21 6259 u64 max_len;
89b798ad1b42b1 Nikolay Borisov 2019-06-03 6260
4c664611791239 Qu Wenruo 2021-09-15 6261 ASSERT(bioc_ret);
0b3d4cd371edb6 Liu Bo 2017-03-14 6262
5f50fa918f0c17 Qu Wenruo 2023-02-22 6263 num_copies = btrfs_num_copies(fs_info, logical, fs_info->sectorsize);
5f50fa918f0c17 Qu Wenruo 2023-02-22 6264 if (mirror_num > num_copies)
5f50fa918f0c17 Qu Wenruo 2023-02-22 6265 return -EINVAL;
5f50fa918f0c17 Qu Wenruo 2023-02-22 6266
420343131970fd Michal Rostecki 2021-01-27 6267 em = btrfs_get_chunk_map(fs_info, logical, *length);
1c3ab6dfa0692c Qu Wenruo 2023-03-02 6268 if (IS_ERR(em))
1c3ab6dfa0692c Qu Wenruo 2023-03-02 6269 return PTR_ERR(em);
420343131970fd Michal Rostecki 2021-01-27 6270
95617d69326ce3 Jeff Mahoney 2015-06-03 6271 map = em->map_lookup;
cff8267228c14e David Sterba 2019-05-17 6272 data_stripes = nr_data_stripes(map);
f8a02dc6fd38da Christoph Hellwig 2023-01-21 6273
f8a02dc6fd38da Christoph Hellwig 2023-01-21 6274 map_offset = logical - em->start;
f8a02dc6fd38da Christoph Hellwig 2023-01-21 6275 max_len = btrfs_max_io_len(map, op, map_offset, &stripe_nr,
f8a02dc6fd38da Christoph Hellwig 2023-01-21 6276 &stripe_offset, &raid56_full_stripe_start);
f8a02dc6fd38da Christoph Hellwig 2023-01-21 6277 *length = min_t(u64, em->len - map_offset, max_len);
593060d756e0c2 Chris Mason 2008-03-25 6278
cb5583dd52fab4 David Sterba 2018-09-07 6279 down_read(&dev_replace->rwsem);
472262f35a6b34 Stefan Behrens 2012-11-06 6280 dev_replace_is_ongoing = btrfs_dev_replace_is_ongoing(dev_replace);
53176dde0acd8f David Sterba 2018-04-05 6281 /*
53176dde0acd8f David Sterba 2018-04-05 6282 * Hold the semaphore for read during the whole operation, write is
53176dde0acd8f David Sterba 2018-04-05 6283 * requested at commit time but must wait.
53176dde0acd8f David Sterba 2018-04-05 6284 */
472262f35a6b34 Stefan Behrens 2012-11-06 6285 if (!dev_replace_is_ongoing)
cb5583dd52fab4 David Sterba 2018-09-07 6286 up_read(&dev_replace->rwsem);
472262f35a6b34 Stefan Behrens 2012-11-06 6287
f2d8d74d7874f8 Chris Mason 2008-04-21 6288 num_stripes = 1;
cea9e4452ebaf1 Chris Mason 2008-04-09 6289 stripe_index = 0;
fce3bb9a1bd492 Li Dongyang 2011-03-24 6290 if (map->type & BTRFS_BLOCK_GROUP_RAID0) {
6ded22c1bfe6a8 Qu Wenruo 2023-02-17 6291 stripe_index = stripe_nr % map->num_stripes;
6ded22c1bfe6a8 Qu Wenruo 2023-02-17 6292 stripe_nr /= map->num_stripes;
de48373454acea Anand Jain 2017-10-12 6293 if (!need_full_stripe(op))
28e1cc7d1baf80 Miao Xie 2014-09-12 6294 mirror_num = 1;
c7369b3faea230 David Sterba 2019-05-31 6295 } else if (map->type & BTRFS_BLOCK_GROUP_RAID1_MASK) {
de48373454acea Anand Jain 2017-10-12 6296 if (need_full_stripe(op))
f2d8d74d7874f8 Chris Mason 2008-04-21 6297 num_stripes = map->num_stripes;
2fff734fafa742 Chris Mason 2008-04-29 6298 else if (mirror_num)
f188591e987e21 Chris Mason 2008-04-09 6299 stripe_index = mirror_num - 1;
dfe25020689bb2 Chris Mason 2008-05-13 6300 else {
30d9861ff9520e Stefan Behrens 2012-11-06 6301 stripe_index = find_live_mirror(fs_info, map, 0,
30d9861ff9520e Stefan Behrens 2012-11-06 6302 dev_replace_is_ongoing);
a1d3c4786a4b9c Jan Schmidt 2011-08-04 6303 mirror_num = stripe_index + 1;
dfe25020689bb2 Chris Mason 2008-05-13 6304 }
2fff734fafa742 Chris Mason 2008-04-29 6305
611f0e00a27fe0 Chris Mason 2008-04-03 6306 } else if (map->type & BTRFS_BLOCK_GROUP_DUP) {
de48373454acea Anand Jain 2017-10-12 6307 if (need_full_stripe(op)) {
f2d8d74d7874f8 Chris Mason 2008-04-21 6308 num_stripes = map->num_stripes;
a1d3c4786a4b9c Jan Schmidt 2011-08-04 6309 } else if (mirror_num) {
f188591e987e21 Chris Mason 2008-04-09 6310 stripe_index = mirror_num - 1;
a1d3c4786a4b9c Jan Schmidt 2011-08-04 6311 } else {
a1d3c4786a4b9c Jan Schmidt 2011-08-04 6312 mirror_num = 1;
a1d3c4786a4b9c Jan Schmidt 2011-08-04 6313 }
2fff734fafa742 Chris Mason 2008-04-29 6314
321aecc65671ae Chris Mason 2008-04-16 6315 } else if (map->type & BTRFS_BLOCK_GROUP_RAID10) {
9d644a623ec48e David Sterba 2015-02-20 6316 u32 factor = map->num_stripes / map->sub_stripes;
321aecc65671ae Chris Mason 2008-04-16 6317
6ded22c1bfe6a8 Qu Wenruo 2023-02-17 6318 stripe_index = (stripe_nr % factor) * map->sub_stripes;
6ded22c1bfe6a8 Qu Wenruo 2023-02-17 6319 stripe_nr /= factor;
321aecc65671ae Chris Mason 2008-04-16 6320
de48373454acea Anand Jain 2017-10-12 6321 if (need_full_stripe(op))
f2d8d74d7874f8 Chris Mason 2008-04-21 6322 num_stripes = map->sub_stripes;
321aecc65671ae Chris Mason 2008-04-16 6323 else if (mirror_num)
321aecc65671ae Chris Mason 2008-04-16 6324 stripe_index += mirror_num - 1;
dfe25020689bb2 Chris Mason 2008-05-13 6325 else {
3e74317ad773ba Jan Schmidt 2012-04-27 6326 int old_stripe_index = stripe_index;
30d9861ff9520e Stefan Behrens 2012-11-06 6327 stripe_index = find_live_mirror(fs_info, map,
30d9861ff9520e Stefan Behrens 2012-11-06 6328 stripe_index,
30d9861ff9520e Stefan Behrens 2012-11-06 6329 dev_replace_is_ongoing);
3e74317ad773ba Jan Schmidt 2012-04-27 6330 mirror_num = stripe_index - old_stripe_index + 1;
dfe25020689bb2 Chris Mason 2008-05-13 6331 }
53b381b3abeb86 David Woodhouse 2013-01-29 6332
ffe2d2034bbb34 Zhao Lei 2015-01-20 6333 } else if (map->type & BTRFS_BLOCK_GROUP_RAID56_MASK) {
de48373454acea Anand Jain 2017-10-12 6334 if (need_raid_map && (need_full_stripe(op) || mirror_num > 1)) {
6ded22c1bfe6a8 Qu Wenruo 2023-02-17 6335 /*
6ded22c1bfe6a8 Qu Wenruo 2023-02-17 6336 * Push stripe_nr back to the start of the full stripe
6ded22c1bfe6a8 Qu Wenruo 2023-02-17 6337 * For those cases needing a full stripe, @stripe_nr
6ded22c1bfe6a8 Qu Wenruo 2023-02-17 6338 * is the full stripe number.
6ded22c1bfe6a8 Qu Wenruo 2023-02-17 6339 *
6ded22c1bfe6a8 Qu Wenruo 2023-02-17 6340 * Originally we go raid56_full_stripe_start / full_stripe_len,
6ded22c1bfe6a8 Qu Wenruo 2023-02-17 6341 * but that can be expensive. Here we just divide
6ded22c1bfe6a8 Qu Wenruo 2023-02-17 6342 * @stripe_nr with @data_stripes.
6ded22c1bfe6a8 Qu Wenruo 2023-02-17 6343 */
6ded22c1bfe6a8 Qu Wenruo 2023-02-17 6344 stripe_nr /= data_stripes;
53b381b3abeb86 David Woodhouse 2013-01-29 6345
53b381b3abeb86 David Woodhouse 2013-01-29 6346 /* RAID[56] write or recovery. Return all stripes */
53b381b3abeb86 David Woodhouse 2013-01-29 6347 num_stripes = map->num_stripes;
6dead96c1a1e09 Qu Wenruo 2022-05-13 6348 max_errors = btrfs_chunk_max_errors(map);
53b381b3abeb86 David Woodhouse 2013-01-29 6349
462b0b2a86c4d5 Qu Wenruo 2022-06-17 6350 /* Return the length to the full stripe end */
462b0b2a86c4d5 Qu Wenruo 2022-06-17 6351 *length = min(logical + *length,
462b0b2a86c4d5 Qu Wenruo 2022-06-17 6352 raid56_full_stripe_start + em->start +
a97699d1d61071 Qu Wenruo 2023-02-17 6353 (data_stripes << BTRFS_STRIPE_LEN_SHIFT)) - logical;
53b381b3abeb86 David Woodhouse 2013-01-29 6354 stripe_index = 0;
53b381b3abeb86 David Woodhouse 2013-01-29 6355 stripe_offset = 0;
53b381b3abeb86 David Woodhouse 2013-01-29 6356 } else {
53b381b3abeb86 David Woodhouse 2013-01-29 6357 /*
53b381b3abeb86 David Woodhouse 2013-01-29 6358 * Mirror #0 or #1 means the original data block.
53b381b3abeb86 David Woodhouse 2013-01-29 6359 * Mirror #2 is RAID5 parity block.
53b381b3abeb86 David Woodhouse 2013-01-29 6360 * Mirror #3 is RAID6 Q block.
53b381b3abeb86 David Woodhouse 2013-01-29 6361 */
6ded22c1bfe6a8 Qu Wenruo 2023-02-17 6362 stripe_index = stripe_nr % data_stripes;
6ded22c1bfe6a8 Qu Wenruo 2023-02-17 6363 stripe_nr /= data_stripes;
53b381b3abeb86 David Woodhouse 2013-01-29 6364 if (mirror_num > 1)
cff8267228c14e David Sterba 2019-05-17 6365 stripe_index = data_stripes + mirror_num - 2;
53b381b3abeb86 David Woodhouse 2013-01-29 6366
53b381b3abeb86 David Woodhouse 2013-01-29 6367 /* We distribute the parity blocks across stripes */
6ded22c1bfe6a8 Qu Wenruo 2023-02-17 6368 stripe_index = (stripe_nr + stripe_index) % map->num_stripes;
de48373454acea Anand Jain 2017-10-12 6369 if (!need_full_stripe(op) && mirror_num <= 1)
28e1cc7d1baf80 Miao Xie 2014-09-12 6370 mirror_num = 1;
53b381b3abeb86 David Woodhouse 2013-01-29 6371 }
8790d502e4401a Chris Mason 2008-04-03 6372 } else {
593060d756e0c2 Chris Mason 2008-03-25 6373 /*
6ded22c1bfe6a8 Qu Wenruo 2023-02-17 6374 * After this, stripe_nr is the number of stripes on this
47c5713f4737e4 David Sterba 2015-02-20 6375 * device we have to walk to find the data, and stripe_index is
47c5713f4737e4 David Sterba 2015-02-20 6376 * the number of our device in the stripe array
593060d756e0c2 Chris Mason 2008-03-25 6377 */
6ded22c1bfe6a8 Qu Wenruo 2023-02-17 6378 stripe_index = stripe_nr % map->num_stripes;
6ded22c1bfe6a8 Qu Wenruo 2023-02-17 6379 stripe_nr /= map->num_stripes;
a1d3c4786a4b9c Jan Schmidt 2011-08-04 6380 mirror_num = stripe_index + 1;
8790d502e4401a Chris Mason 2008-04-03 6381 }
e042d1ec441798 Josef Bacik 2016-04-12 6382 if (stripe_index >= map->num_stripes) {
5d163e0e68ce74 Jeff Mahoney 2016-09-20 6383 btrfs_crit(fs_info,
5d163e0e68ce74 Jeff Mahoney 2016-09-20 6384 "stripe index math went horribly wrong, got stripe_index=%u, num_stripes=%u",
e042d1ec441798 Josef Bacik 2016-04-12 6385 stripe_index, map->num_stripes);
e042d1ec441798 Josef Bacik 2016-04-12 6386 ret = -EINVAL;
e042d1ec441798 Josef Bacik 2016-04-12 6387 goto out;
e042d1ec441798 Josef Bacik 2016-04-12 6388 }
593060d756e0c2 Chris Mason 2008-03-25 6389
472262f35a6b34 Stefan Behrens 2012-11-06 6390 num_alloc_stripes = num_stripes;
1faf3885067d5b Qu Wenruo 2023-02-07 6391 if (dev_replace_is_ongoing && dev_replace->tgtdev != NULL &&
1faf3885067d5b Qu Wenruo 2023-02-07 6392 op != BTRFS_MAP_READ)
1faf3885067d5b Qu Wenruo 2023-02-07 6393 /*
1faf3885067d5b Qu Wenruo 2023-02-07 6394 * For replace case, we need to add extra stripes for extra
1faf3885067d5b Qu Wenruo 2023-02-07 6395 * duplicated stripes.
1faf3885067d5b Qu Wenruo 2023-02-07 6396 *
1faf3885067d5b Qu Wenruo 2023-02-07 6397 * For both WRITE and GET_READ_MIRRORS, we may have at most
1faf3885067d5b Qu Wenruo 2023-02-07 6398 * 2 more stripes (DUP types, otherwise 1).
1faf3885067d5b Qu Wenruo 2023-02-07 6399 */
1faf3885067d5b Qu Wenruo 2023-02-07 6400 num_alloc_stripes += 2;
2c8cdd6ee4e7f6 Miao Xie 2014-11-14 6401
03793cbbc80fe6 Christoph Hellwig 2022-08-06 6402 /*
03793cbbc80fe6 Christoph Hellwig 2022-08-06 6403 * If this I/O maps to a single device, try to return the device and
03793cbbc80fe6 Christoph Hellwig 2022-08-06 6404 * physical block information on the stack instead of allocating an
03793cbbc80fe6 Christoph Hellwig 2022-08-06 6405 * I/O context structure.
03793cbbc80fe6 Christoph Hellwig 2022-08-06 6406 */
03793cbbc80fe6 Christoph Hellwig 2022-08-06 6407 if (smap && num_alloc_stripes == 1 &&
03793cbbc80fe6 Christoph Hellwig 2022-08-06 6408 !((map->type & BTRFS_BLOCK_GROUP_RAID56_MASK) && mirror_num > 1) &&
03793cbbc80fe6 Christoph Hellwig 2022-08-06 6409 (!need_full_stripe(op) || !dev_replace_is_ongoing ||
03793cbbc80fe6 Christoph Hellwig 2022-08-06 6410 !dev_replace->tgtdev)) {
5f50fa918f0c17 Qu Wenruo 2023-02-22 6411 set_io_stripe(smap, map, stripe_index, stripe_offset, stripe_nr);
03793cbbc80fe6 Christoph Hellwig 2022-08-06 @6412 *mirror_num_ret = mirror_num;
03793cbbc80fe6 Christoph Hellwig 2022-08-06 6413 *bioc_ret = NULL;
03793cbbc80fe6 Christoph Hellwig 2022-08-06 6414 ret = 0;
03793cbbc80fe6 Christoph Hellwig 2022-08-06 6415 goto out;
03793cbbc80fe6 Christoph Hellwig 2022-08-06 6416 }
03793cbbc80fe6 Christoph Hellwig 2022-08-06 6417
1faf3885067d5b Qu Wenruo 2023-02-07 6418 bioc = alloc_btrfs_io_context(fs_info, num_alloc_stripes);
4c664611791239 Qu Wenruo 2021-09-15 6419 if (!bioc) {
de11cc12df1733 Li Zefan 2011-12-01 6420 ret = -ENOMEM;
de11cc12df1733 Li Zefan 2011-12-01 6421 goto out;
de11cc12df1733 Li Zefan 2011-12-01 6422 }
1faf3885067d5b Qu Wenruo 2023-02-07 6423 bioc->map_type = map->type;
608769a4e41cce Nikolay Borisov 2020-07-02 6424
18d758a2d81a97 Qu Wenruo 2023-02-17 6425 /*
18d758a2d81a97 Qu Wenruo 2023-02-17 6426 * For RAID56 full map, we need to make sure the stripes[] follows the
18d758a2d81a97 Qu Wenruo 2023-02-17 6427 * rule that data stripes are all ordered, then followed with P and Q
18d758a2d81a97 Qu Wenruo 2023-02-17 6428 * (if we have).
18d758a2d81a97 Qu Wenruo 2023-02-17 6429 *
18d758a2d81a97 Qu Wenruo 2023-02-17 6430 * It's still mostly the same as other profiles, just with extra rotation.
18d758a2d81a97 Qu Wenruo 2023-02-17 6431 */
18d758a2d81a97 Qu Wenruo 2023-02-17 6432 if (map->type & BTRFS_BLOCK_GROUP_RAID56_MASK && need_raid_map &&
18d758a2d81a97 Qu Wenruo 2023-02-17 6433 (need_full_stripe(op) || mirror_num > 1)) {
18d758a2d81a97 Qu Wenruo 2023-02-17 6434 /*
18d758a2d81a97 Qu Wenruo 2023-02-17 6435 * For RAID56 @stripe_nr is already the number of full stripes
18d758a2d81a97 Qu Wenruo 2023-02-17 6436 * before us, which is also the rotation value (needs to modulo
18d758a2d81a97 Qu Wenruo 2023-02-17 6437 * with num_stripes).
18d758a2d81a97 Qu Wenruo 2023-02-17 6438 *
18d758a2d81a97 Qu Wenruo 2023-02-17 6439 * In this case, we just add @stripe_nr with @i, then do the
18d758a2d81a97 Qu Wenruo 2023-02-17 6440 * modulo, to reduce one modulo call.
18d758a2d81a97 Qu Wenruo 2023-02-17 6441 */
18d758a2d81a97 Qu Wenruo 2023-02-17 6442 bioc->full_stripe_logical = em->start +
18d758a2d81a97 Qu Wenruo 2023-02-17 6443 ((stripe_nr * data_stripes) << BTRFS_STRIPE_LEN_SHIFT);
18d758a2d81a97 Qu Wenruo 2023-02-17 6444 for (i = 0; i < num_stripes; i++)
18d758a2d81a97 Qu Wenruo 2023-02-17 6445 set_io_stripe(&bioc->stripes[i], map,
18d758a2d81a97 Qu Wenruo 2023-02-17 6446 (i + stripe_nr) % num_stripes,
18d758a2d81a97 Qu Wenruo 2023-02-17 6447 stripe_offset, stripe_nr);
18d758a2d81a97 Qu Wenruo 2023-02-17 6448 } else {
18d758a2d81a97 Qu Wenruo 2023-02-17 6449 /*
18d758a2d81a97 Qu Wenruo 2023-02-17 6450 * For all other non-RAID56 profiles, just copy the target
18d758a2d81a97 Qu Wenruo 2023-02-17 6451 * stripe into the bioc.
18d758a2d81a97 Qu Wenruo 2023-02-17 6452 */
608769a4e41cce Nikolay Borisov 2020-07-02 6453 for (i = 0; i < num_stripes; i++) {
18d758a2d81a97 Qu Wenruo 2023-02-17 6454 set_io_stripe(&bioc->stripes[i], map, stripe_index,
18d758a2d81a97 Qu Wenruo 2023-02-17 6455 stripe_offset, stripe_nr);
608769a4e41cce Nikolay Borisov 2020-07-02 6456 stripe_index++;
608769a4e41cce Nikolay Borisov 2020-07-02 6457 }
593060d756e0c2 Chris Mason 2008-03-25 6458 }
de11cc12df1733 Li Zefan 2011-12-01 6459
2b19a1fef7be74 Liu Bo 2017-03-14 6460 if (need_full_stripe(op))
d20983b40e828f Miao Xie 2014-07-03 6461 max_errors = btrfs_chunk_max_errors(map);
de11cc12df1733 Li Zefan 2011-12-01 6462
73c0f228250ff7 Liu Bo 2017-03-14 6463 if (dev_replace_is_ongoing && dev_replace->tgtdev != NULL &&
2b19a1fef7be74 Liu Bo 2017-03-14 6464 need_full_stripe(op)) {
be5c7edbfdf111 Qu Wenruo 2023-02-07 6465 handle_ops_on_dev_replace(op, bioc, dev_replace, logical,
6143c23ccced76 Naohiro Aota 2021-02-04 6466 &num_stripes, &max_errors);
ad6d620e2a5704 Stefan Behrens 2012-11-06 6467 }
472262f35a6b34 Stefan Behrens 2012-11-06 6468
4c664611791239 Qu Wenruo 2021-09-15 6469 *bioc_ret = bioc;
4c664611791239 Qu Wenruo 2021-09-15 6470 bioc->num_stripes = num_stripes;
4c664611791239 Qu Wenruo 2021-09-15 6471 bioc->max_errors = max_errors;
4c664611791239 Qu Wenruo 2021-09-15 6472 bioc->mirror_num = mirror_num;
ad6d620e2a5704 Stefan Behrens 2012-11-06 6473
cea9e4452ebaf1 Chris Mason 2008-04-09 6474 out:
73beece9ca07c0 Liu Bo 2015-07-17 6475 if (dev_replace_is_ongoing) {
53176dde0acd8f David Sterba 2018-04-05 6476 lockdep_assert_held(&dev_replace->rwsem);
53176dde0acd8f David Sterba 2018-04-05 6477 /* Unlock and let waiting writers proceed */
cb5583dd52fab4 David Sterba 2018-09-07 6478 up_read(&dev_replace->rwsem);
73beece9ca07c0 Liu Bo 2015-07-17 6479 }
0b86a832a1f38a Chris Mason 2008-03-24 6480 free_extent_map(em);
de11cc12df1733 Li Zefan 2011-12-01 6481 return ret;
0b86a832a1f38a Chris Mason 2008-03-24 6482 }
0b86a832a1f38a Chris Mason 2008-03-24 6483
:::::: The code at line 6412 was first introduced by commit
:::::: 03793cbbc80fe616498f8141f853575b2d140222 btrfs: add fast path for single device io in __btrfs_map_block
:::::: TO: Christoph Hellwig <hch@lst.de>
:::::: CC: David Sterba <dsterba@suse.com>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next reply other threads:[~2023-06-02 13:51 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-02 13:51 kernel test robot [this message]
-- strict thread matches above, loose matches on Subject: below --
2023-06-02 14:04 [linux-next:master 6080/6849] fs/btrfs/volumes.c:6412 btrfs_map_block() error: we previously assumed 'mirror_num_ret' could be null (see line 6250) Dan Carpenter
2023-06-05 7:09 ` Christoph Hellwig
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=202306022143.zoQGZHa1-lkp@intel.com \
--to=lkp@intel.com \
--cc=error27@gmail.com \
--cc=oe-kbuild@lists.linux.dev \
/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.