Hi Johannes,
url:
https://github.com/0day-ci/linux/commits/Johannes-Thumshirn/btrfs-zoned-f...
base:
https://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for-next
config: i386-randconfig-m021-20211207
(
https://download.01.org/0day-ci/archive/20211209/202112090657.BflsS2SD-lk...)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
Reported-by: Dan Carpenter <dan.carpenter(a)oracle.com>
New smatch warnings:
fs/btrfs/zoned.c:597 btrfs_get_dev_zone_info() warn: possible memory leak of
'zone_info'
Old smatch warnings:
fs/btrfs/zoned.c:169 sb_zone_number() error: uninitialized symbol 'zone'.
fs/btrfs/zoned.c:1452 btrfs_load_block_group_zone_info() error: uninitialized symbol
'ret'.
vim +/zone_info +597 fs/btrfs/zoned.c
1c0066baa869433 Naohiro Aota 2021-11-11 348 int btrfs_get_dev_zone_info(struct
btrfs_device *device, bool populate_cache)
5b316468983dfa9 Naohiro Aota 2020-11-10 349 {
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 350 struct btrfs_fs_info *fs_info =
device->fs_info;
5b316468983dfa9 Naohiro Aota 2020-11-10 351 struct btrfs_zoned_device_info
*zone_info = NULL;
5b316468983dfa9 Naohiro Aota 2020-11-10 352 struct block_device *bdev =
device->bdev;
ea6f8ddcde63812 Naohiro Aota 2021-08-19 353 struct request_queue *queue =
bdev_get_queue(bdev);
ea6f8ddcde63812 Naohiro Aota 2021-08-19 354 unsigned int max_active_zones;
ea6f8ddcde63812 Naohiro Aota 2021-08-19 355 unsigned int nactive;
5b316468983dfa9 Naohiro Aota 2020-11-10 356 sector_t nr_sectors;
5b316468983dfa9 Naohiro Aota 2020-11-10 357 sector_t sector = 0;
5b316468983dfa9 Naohiro Aota 2020-11-10 358 struct blk_zone *zones = NULL;
5b316468983dfa9 Naohiro Aota 2020-11-10 359 unsigned int i, nreported = 0,
nr_zones;
d734492a14a2da6 Naohiro Aota 2021-03-03 360 sector_t zone_sectors;
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 361 char *model, *emulated;
5b316468983dfa9 Naohiro Aota 2020-11-10 362 int ret;
5b316468983dfa9 Naohiro Aota 2020-11-10 363
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 364 /*
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 365 * Cannot use btrfs_is_zoned here,
since fs_info::zone_size might not
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 366 * yet be set.
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 367 */
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 368 if (!btrfs_fs_incompat(fs_info,
ZONED))
5b316468983dfa9 Naohiro Aota 2020-11-10 369 return 0;
5b316468983dfa9 Naohiro Aota 2020-11-10 370
5b316468983dfa9 Naohiro Aota 2020-11-10 371 if (device->zone_info)
5b316468983dfa9 Naohiro Aota 2020-11-10 372 return 0;
5b316468983dfa9 Naohiro Aota 2020-11-10 373
5b316468983dfa9 Naohiro Aota 2020-11-10 374 zone_info =
kzalloc(sizeof(*zone_info), GFP_KERNEL);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5b316468983dfa9 Naohiro Aota 2020-11-10 375 if (!zone_info)
5b316468983dfa9 Naohiro Aota 2020-11-10 376 return -ENOMEM;
5b316468983dfa9 Naohiro Aota 2020-11-10 377
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 378 if (!bdev_is_zoned(bdev)) {
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 379 if (!fs_info->zone_size) {
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 380 ret =
calculate_emulated_zone_size(fs_info);
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 381 if (ret)
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 382 goto out;
^^^^^^^^^
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 383 }
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 384
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 385 ASSERT(fs_info->zone_size);
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 386 zone_sectors = fs_info->zone_size
>> SECTOR_SHIFT;
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 387 } else {
5b316468983dfa9 Naohiro Aota 2020-11-10 388 zone_sectors =
bdev_zone_sectors(bdev);
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 389 }
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 390
5b316468983dfa9 Naohiro Aota 2020-11-10 391 /* Check if it's power of 2 (see
is_power_of_2) */
5b316468983dfa9 Naohiro Aota 2020-11-10 392 ASSERT(zone_sectors != 0 &&
(zone_sectors & (zone_sectors - 1)) == 0);
5b316468983dfa9 Naohiro Aota 2020-11-10 393 zone_info->zone_size =
zone_sectors << SECTOR_SHIFT;
53b74fa990bf76f Naohiro Aota 2021-04-08 394
53b74fa990bf76f Naohiro Aota 2021-04-08 395 /* We reject devices with a zone size
larger than 8GB */
53b74fa990bf76f Naohiro Aota 2021-04-08 396 if (zone_info->zone_size >
BTRFS_MAX_ZONE_SIZE) {
53b74fa990bf76f Naohiro Aota 2021-04-08 397 btrfs_err_in_rcu(fs_info,
53b74fa990bf76f Naohiro Aota 2021-04-08 398 "zoned: %s: zone size %llu
larger than supported maximum %llu",
53b74fa990bf76f Naohiro Aota 2021-04-08 399 rcu_str_deref(device->name),
53b74fa990bf76f Naohiro Aota 2021-04-08 400 zone_info->zone_size,
BTRFS_MAX_ZONE_SIZE);
53b74fa990bf76f Naohiro Aota 2021-04-08 401 ret = -EINVAL;
53b74fa990bf76f Naohiro Aota 2021-04-08 402 goto out;
53b74fa990bf76f Naohiro Aota 2021-04-08 403 }
53b74fa990bf76f Naohiro Aota 2021-04-08 404
53b74fa990bf76f Naohiro Aota 2021-04-08 405 nr_sectors = bdev_nr_sectors(bdev);
5b316468983dfa9 Naohiro Aota 2020-11-10 406 zone_info->zone_size_shift =
ilog2(zone_info->zone_size);
5b316468983dfa9 Naohiro Aota 2020-11-10 407 zone_info->nr_zones = nr_sectors
>> ilog2(zone_sectors);
5b316468983dfa9 Naohiro Aota 2020-11-10 408 if (!IS_ALIGNED(nr_sectors,
zone_sectors))
5b316468983dfa9 Naohiro Aota 2020-11-10 409 zone_info->nr_zones++;
5b316468983dfa9 Naohiro Aota 2020-11-10 410
ea6f8ddcde63812 Naohiro Aota 2021-08-19 411 max_active_zones =
queue_max_active_zones(queue);
ea6f8ddcde63812 Naohiro Aota 2021-08-19 412 if (max_active_zones &&
max_active_zones < BTRFS_MIN_ACTIVE_ZONES) {
ea6f8ddcde63812 Naohiro Aota 2021-08-19 413 btrfs_err_in_rcu(fs_info,
ea6f8ddcde63812 Naohiro Aota 2021-08-19 414 "zoned: %s: max active zones %u
is too small, need at least %u active zones",
ea6f8ddcde63812 Naohiro Aota 2021-08-19 415 rcu_str_deref(device->name),
max_active_zones,
ea6f8ddcde63812 Naohiro Aota 2021-08-19 416 BTRFS_MIN_ACTIVE_ZONES);
ea6f8ddcde63812 Naohiro Aota 2021-08-19 417 ret = -EINVAL;
ea6f8ddcde63812 Naohiro Aota 2021-08-19 418 goto out;
ea6f8ddcde63812 Naohiro Aota 2021-08-19 419 }
ea6f8ddcde63812 Naohiro Aota 2021-08-19 420 zone_info->max_active_zones =
max_active_zones;
ea6f8ddcde63812 Naohiro Aota 2021-08-19 421
5b316468983dfa9 Naohiro Aota 2020-11-10 422 zone_info->seq_zones =
bitmap_zalloc(zone_info->nr_zones, GFP_KERNEL);
5b316468983dfa9 Naohiro Aota 2020-11-10 423 if (!zone_info->seq_zones) {
5b316468983dfa9 Naohiro Aota 2020-11-10 424 ret = -ENOMEM;
5b316468983dfa9 Naohiro Aota 2020-11-10 425 goto out;
5b316468983dfa9 Naohiro Aota 2020-11-10 426 }
5b316468983dfa9 Naohiro Aota 2020-11-10 427
5b316468983dfa9 Naohiro Aota 2020-11-10 428 zone_info->empty_zones =
bitmap_zalloc(zone_info->nr_zones, GFP_KERNEL);
5b316468983dfa9 Naohiro Aota 2020-11-10 429 if (!zone_info->empty_zones) {
5b316468983dfa9 Naohiro Aota 2020-11-10 430 ret = -ENOMEM;
5b316468983dfa9 Naohiro Aota 2020-11-10 431 goto out;
5b316468983dfa9 Naohiro Aota 2020-11-10 432 }
5b316468983dfa9 Naohiro Aota 2020-11-10 433
ea6f8ddcde63812 Naohiro Aota 2021-08-19 434 zone_info->active_zones =
bitmap_zalloc(zone_info->nr_zones, GFP_KERNEL);
ea6f8ddcde63812 Naohiro Aota 2021-08-19 435 if (!zone_info->active_zones) {
ea6f8ddcde63812 Naohiro Aota 2021-08-19 436 ret = -ENOMEM;
ea6f8ddcde63812 Naohiro Aota 2021-08-19 437 goto out;
ea6f8ddcde63812 Naohiro Aota 2021-08-19 438 }
ea6f8ddcde63812 Naohiro Aota 2021-08-19 439
5b316468983dfa9 Naohiro Aota 2020-11-10 440 zones =
kcalloc(BTRFS_REPORT_NR_ZONES, sizeof(struct blk_zone), GFP_KERNEL);
5b316468983dfa9 Naohiro Aota 2020-11-10 441 if (!zones) {
5b316468983dfa9 Naohiro Aota 2020-11-10 442 ret = -ENOMEM;
5b316468983dfa9 Naohiro Aota 2020-11-10 443 goto out;
5b316468983dfa9 Naohiro Aota 2020-11-10 444 }
5b316468983dfa9 Naohiro Aota 2020-11-10 445
1c0066baa869433 Naohiro Aota 2021-11-11 446 /*
1c0066baa869433 Naohiro Aota 2021-11-11 447 * Enable zone cache only for a zoned
device. On a non-zoned device, we
1c0066baa869433 Naohiro Aota 2021-11-11 448 * fill the zone info with emulated
CONVENTIONAL zones, so no need to
1c0066baa869433 Naohiro Aota 2021-11-11 449 * use the cache.
1c0066baa869433 Naohiro Aota 2021-11-11 450 */
1c0066baa869433 Naohiro Aota 2021-11-11 451 if (populate_cache &&
bdev_is_zoned(device->bdev)) {
1c0066baa869433 Naohiro Aota 2021-11-11 452 zone_info->zone_cache =
vzalloc(sizeof(struct blk_zone) *
1c0066baa869433 Naohiro Aota 2021-11-11 453 zone_info->nr_zones);
1c0066baa869433 Naohiro Aota 2021-11-11 454 if (!zone_info->zone_cache) {
1c0066baa869433 Naohiro Aota 2021-11-11 455
btrfs_err_in_rcu(device->fs_info,
1c0066baa869433 Naohiro Aota 2021-11-11 456 "zoned: failed to allocate
zone cache for %s",
1c0066baa869433 Naohiro Aota 2021-11-11 457 rcu_str_deref(device->name));
1c0066baa869433 Naohiro Aota 2021-11-11 458 ret = -ENOMEM;
1c0066baa869433 Naohiro Aota 2021-11-11 459 goto out;
1c0066baa869433 Naohiro Aota 2021-11-11 460 }
1c0066baa869433 Naohiro Aota 2021-11-11 461 }
1c0066baa869433 Naohiro Aota 2021-11-11 462
1c0066baa869433 Naohiro Aota 2021-11-11 463 device->zone_info = zone_info;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Error paths after this point will free zone_info and the bitmaps.
1c0066baa869433 Naohiro Aota 2021-11-11 464
5b316468983dfa9 Naohiro Aota 2020-11-10 465 /* Get zones type */
ea6f8ddcde63812 Naohiro Aota 2021-08-19 466 nactive = 0;
5b316468983dfa9 Naohiro Aota 2020-11-10 467 while (sector < nr_sectors) {
5b316468983dfa9 Naohiro Aota 2020-11-10 468 nr_zones = BTRFS_REPORT_NR_ZONES;
5b316468983dfa9 Naohiro Aota 2020-11-10 469 ret = btrfs_get_dev_zones(device,
sector << SECTOR_SHIFT, zones,
5b316468983dfa9 Naohiro Aota 2020-11-10 470 &nr_zones);
5b316468983dfa9 Naohiro Aota 2020-11-10 471 if (ret)
5b316468983dfa9 Naohiro Aota 2020-11-10 472 goto out;
5b316468983dfa9 Naohiro Aota 2020-11-10 473
5b316468983dfa9 Naohiro Aota 2020-11-10 474 for (i = 0; i < nr_zones; i++) {
5b316468983dfa9 Naohiro Aota 2020-11-10 475 if (zones[i].type ==
BLK_ZONE_TYPE_SEQWRITE_REQ)
5b316468983dfa9 Naohiro Aota 2020-11-10 476 __set_bit(nreported,
zone_info->seq_zones);
ea6f8ddcde63812 Naohiro Aota 2021-08-19 477 switch (zones[i].cond) {
ea6f8ddcde63812 Naohiro Aota 2021-08-19 478 case BLK_ZONE_COND_EMPTY:
5b316468983dfa9 Naohiro Aota 2020-11-10 479 __set_bit(nreported,
zone_info->empty_zones);
ea6f8ddcde63812 Naohiro Aota 2021-08-19 480 break;
ea6f8ddcde63812 Naohiro Aota 2021-08-19 481 case BLK_ZONE_COND_IMP_OPEN:
ea6f8ddcde63812 Naohiro Aota 2021-08-19 482 case BLK_ZONE_COND_EXP_OPEN:
ea6f8ddcde63812 Naohiro Aota 2021-08-19 483 case BLK_ZONE_COND_CLOSED:
ea6f8ddcde63812 Naohiro Aota 2021-08-19 484 __set_bit(nreported,
zone_info->active_zones);
ea6f8ddcde63812 Naohiro Aota 2021-08-19 485 nactive++;
ea6f8ddcde63812 Naohiro Aota 2021-08-19 486 break;
ea6f8ddcde63812 Naohiro Aota 2021-08-19 487 }
5b316468983dfa9 Naohiro Aota 2020-11-10 488 nreported++;
5b316468983dfa9 Naohiro Aota 2020-11-10 489 }
5b316468983dfa9 Naohiro Aota 2020-11-10 490 sector = zones[nr_zones - 1].start +
zones[nr_zones - 1].len;
5b316468983dfa9 Naohiro Aota 2020-11-10 491 }
5b316468983dfa9 Naohiro Aota 2020-11-10 492
5b316468983dfa9 Naohiro Aota 2020-11-10 493 if (nreported !=
zone_info->nr_zones) {
5b316468983dfa9 Naohiro Aota 2020-11-10 494
btrfs_err_in_rcu(device->fs_info,
5b316468983dfa9 Naohiro Aota 2020-11-10 495 "inconsistent number of
zones on %s (%u/%u)",
5b316468983dfa9 Naohiro Aota 2020-11-10 496 rcu_str_deref(device->name),
nreported,
5b316468983dfa9 Naohiro Aota 2020-11-10 497 zone_info->nr_zones);
5b316468983dfa9 Naohiro Aota 2020-11-10 498 ret = -EIO;
5b316468983dfa9 Naohiro Aota 2020-11-10 499 goto out;
5b316468983dfa9 Naohiro Aota 2020-11-10 500 }
5b316468983dfa9 Naohiro Aota 2020-11-10 501
ea6f8ddcde63812 Naohiro Aota 2021-08-19 502 if (max_active_zones) {
ea6f8ddcde63812 Naohiro Aota 2021-08-19 503 if (nactive > max_active_zones)
{
ea6f8ddcde63812 Naohiro Aota 2021-08-19 504
btrfs_err_in_rcu(device->fs_info,
ea6f8ddcde63812 Naohiro Aota 2021-08-19 505 "zoned: %u active zones on %s
exceeds max_active_zones %u",
ea6f8ddcde63812 Naohiro Aota 2021-08-19 506 nactive,
rcu_str_deref(device->name),
ea6f8ddcde63812 Naohiro Aota 2021-08-19 507 max_active_zones);
ea6f8ddcde63812 Naohiro Aota 2021-08-19 508 ret = -EIO;
ea6f8ddcde63812 Naohiro Aota 2021-08-19 509 goto out;
ea6f8ddcde63812 Naohiro Aota 2021-08-19 510 }
ea6f8ddcde63812 Naohiro Aota 2021-08-19 511
atomic_set(&zone_info->active_zones_left,
ea6f8ddcde63812 Naohiro Aota 2021-08-19 512 max_active_zones - nactive);
ea6f8ddcde63812 Naohiro Aota 2021-08-19 513 }
ea6f8ddcde63812 Naohiro Aota 2021-08-19 514
12659251ca5df05 Naohiro Aota 2020-11-10 515 /* Validate superblock log */
12659251ca5df05 Naohiro Aota 2020-11-10 516 nr_zones = BTRFS_NR_SB_LOG_ZONES;
12659251ca5df05 Naohiro Aota 2020-11-10 517 for (i = 0; i <
BTRFS_SUPER_MIRROR_MAX; i++) {
12659251ca5df05 Naohiro Aota 2020-11-10 518 u32 sb_zone;
12659251ca5df05 Naohiro Aota 2020-11-10 519 u64 sb_wp;
12659251ca5df05 Naohiro Aota 2020-11-10 520 int sb_pos = BTRFS_NR_SB_LOG_ZONES *
i;
12659251ca5df05 Naohiro Aota 2020-11-10 521
12659251ca5df05 Naohiro Aota 2020-11-10 522 sb_zone =
sb_zone_number(zone_info->zone_size_shift, i);
12659251ca5df05 Naohiro Aota 2020-11-10 523 if (sb_zone + 1 >=
zone_info->nr_zones)
12659251ca5df05 Naohiro Aota 2020-11-10 524 continue;
12659251ca5df05 Naohiro Aota 2020-11-10 525
5b434df8778771d Naohiro Aota 2021-05-27 526 ret = btrfs_get_dev_zones(device,
5b434df8778771d Naohiro Aota 2021-05-27 527 zone_start_physical(sb_zone,
zone_info),
12659251ca5df05 Naohiro Aota 2020-11-10 528
&zone_info->sb_zones[sb_pos],
12659251ca5df05 Naohiro Aota 2020-11-10 529 &nr_zones);
12659251ca5df05 Naohiro Aota 2020-11-10 530 if (ret)
12659251ca5df05 Naohiro Aota 2020-11-10 531 goto out;
12659251ca5df05 Naohiro Aota 2020-11-10 532
12659251ca5df05 Naohiro Aota 2020-11-10 533 if (nr_zones !=
BTRFS_NR_SB_LOG_ZONES) {
12659251ca5df05 Naohiro Aota 2020-11-10 534
btrfs_err_in_rcu(device->fs_info,
12659251ca5df05 Naohiro Aota 2020-11-10 535 "zoned: failed to read super
block log zone info at devid %llu zone %u",
12659251ca5df05 Naohiro Aota 2020-11-10 536 device->devid, sb_zone);
12659251ca5df05 Naohiro Aota 2020-11-10 537 ret = -EUCLEAN;
12659251ca5df05 Naohiro Aota 2020-11-10 538 goto out;
12659251ca5df05 Naohiro Aota 2020-11-10 539 }
12659251ca5df05 Naohiro Aota 2020-11-10 540
12659251ca5df05 Naohiro Aota 2020-11-10 541 /*
1a9fd4172d5c8ba David Sterba 2021-05-21 542 * If zones[0] is conventional,
always use the beginning of the
12659251ca5df05 Naohiro Aota 2020-11-10 543 * zone to record superblock. No
need to validate in that case.
12659251ca5df05 Naohiro Aota 2020-11-10 544 */
12659251ca5df05 Naohiro Aota 2020-11-10 545 if
(zone_info->sb_zones[BTRFS_NR_SB_LOG_ZONES * i].type ==
12659251ca5df05 Naohiro Aota 2020-11-10 546 BLK_ZONE_TYPE_CONVENTIONAL)
12659251ca5df05 Naohiro Aota 2020-11-10 547 continue;
12659251ca5df05 Naohiro Aota 2020-11-10 548
12659251ca5df05 Naohiro Aota 2020-11-10 549 ret =
sb_write_pointer(device->bdev,
12659251ca5df05 Naohiro Aota 2020-11-10 550
&zone_info->sb_zones[sb_pos], &sb_wp);
12659251ca5df05 Naohiro Aota 2020-11-10 551 if (ret != -ENOENT && ret)
{
12659251ca5df05 Naohiro Aota 2020-11-10 552
btrfs_err_in_rcu(device->fs_info,
12659251ca5df05 Naohiro Aota 2020-11-10 553 "zoned: super block log zone
corrupted devid %llu zone %u",
12659251ca5df05 Naohiro Aota 2020-11-10 554 device->devid, sb_zone);
12659251ca5df05 Naohiro Aota 2020-11-10 555 ret = -EUCLEAN;
12659251ca5df05 Naohiro Aota 2020-11-10 556 goto out;
12659251ca5df05 Naohiro Aota 2020-11-10 557 }
12659251ca5df05 Naohiro Aota 2020-11-10 558 }
12659251ca5df05 Naohiro Aota 2020-11-10 559
12659251ca5df05 Naohiro Aota 2020-11-10 560
5b316468983dfa9 Naohiro Aota 2020-11-10 561 kfree(zones);
5b316468983dfa9 Naohiro Aota 2020-11-10 562
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 563 switch (bdev_zoned_model(bdev)) {
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 564 case BLK_ZONED_HM:
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 565 model = "host-managed
zoned";
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 566 emulated = "";
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 567 break;
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 568 case BLK_ZONED_HA:
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 569 model = "host-aware
zoned";
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 570 emulated = "";
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 571 break;
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 572 case BLK_ZONED_NONE:
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 573 model = "regular";
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 574 emulated = "emulated ";
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 575 break;
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 576 default:
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 577 /* Just in case */
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 578 btrfs_err_in_rcu(fs_info,
"zoned: unsupported model %d on %s",
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 579 bdev_zoned_model(bdev),
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 580 rcu_str_deref(device->name));
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 581 ret = -EOPNOTSUPP;
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 582 goto out_free_zone_info;
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 583 }
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 584
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 585 btrfs_info_in_rcu(fs_info,
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 586 "%s block device %s, %u %szones
of %llu bytes",
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 587 model,
rcu_str_deref(device->name), zone_info->nr_zones,
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 588 emulated, zone_info->zone_size);
5b316468983dfa9 Naohiro Aota 2020-11-10 589
5b316468983dfa9 Naohiro Aota 2020-11-10 590 return 0;
5b316468983dfa9 Naohiro Aota 2020-11-10 591
5b316468983dfa9 Naohiro Aota 2020-11-10 592 out:
5b316468983dfa9 Naohiro Aota 2020-11-10 593 kfree(zones);
3c9daa09ccd43f6 Johannes Thumshirn 2021-02-04 594 out_free_zone_info:
0a2a39576fa1dd6 Johannes Thumshirn 2021-12-07 595 btrfs_destroy_dev_zone_info(device);
5b316468983dfa9 Naohiro Aota 2020-11-10 596
5b316468983dfa9 Naohiro Aota 2020-11-10 @597 return ret;
^^^^^^^^^^
leaks
5b316468983dfa9 Naohiro Aota 2020-11-10 598 }
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org