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
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to