* re: Btrfs: remove empty block groups automatically
@ 2016-03-18 5:38 Dan Carpenter
0 siblings, 0 replies; only message in thread
From: Dan Carpenter @ 2016-03-18 5:38 UTC (permalink / raw)
To: jbacik; +Cc: linux-btrfs
Hello Josef Bacik,
The patch 47ab2a6c6899: "Btrfs: remove empty block groups
automatically" from Sep 18, 2014, leads to the following static
checker warning:
fs/btrfs/extent-tree.c:10584 btrfs_delete_unused_bgs()
warn: 'ret' can be either negative or positive
The warning here is because we treat positives and negatives as error
codes where normally the kernel uses negative error codes.
fs/btrfs/volumes.c
1450 static int btrfs_free_dev_extent(struct btrfs_trans_handle *trans,
1451 struct btrfs_device *device,
1452 u64 start, u64 *dev_extent_len)
1453 {
1454 int ret;
1455 struct btrfs_path *path;
1456 struct btrfs_root *root = device->dev_root;
1457 struct btrfs_key key;
1458 struct btrfs_key found_key;
1459 struct extent_buffer *leaf = NULL;
1460 struct btrfs_dev_extent *extent = NULL;
1461
1462 path = btrfs_alloc_path();
1463 if (!path)
1464 return -ENOMEM;
1465
1466 key.objectid = device->devid;
1467 key.offset = start;
1468 key.type = BTRFS_DEV_EXTENT_KEY;
1469 again:
1470 ret = btrfs_search_slot(trans, root, &key, path, -1, 1);
1471 if (ret > 0) {
1472 ret = btrfs_previous_item(root, path, key.objectid,
1473 BTRFS_DEV_EXTENT_KEY);
btrfs_previous_item() returns 0 if something is found, 1 if nothing was
found and < 0 on error. We propogate the 1 to other callers who treat
it like an error code but it's not documented what the 1 means.
1474 if (ret)
1475 goto out;
1476 leaf = path->nodes[0];
1477 btrfs_item_key_to_cpu(leaf, &found_key, path->slots[0]);
1478 extent = btrfs_item_ptr(leaf, path->slots[0],
regards,
dan carpenter
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2016-03-18 5:38 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-18 5:38 Btrfs: remove empty block groups automatically Dan Carpenter
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.