btrfs: Ensure the tree search ioctl returns the right number of records
Btrfs's tree search ioctl has a field to indicate that no more than a given number of records should be returned. The ioctl doesn't honour this, as the tested value is not incremented until the end of the copy_to_sk function. This patch removes an unnecessary local variable, and updates the num_found counter as each key is found in the tree. Signed-off-by: Hugo Mills <hugo@carfax.org.uk> Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
@@ -1279,7 +1279,6 @@ static noinline int copy_to_sk(struct btrfs_root *root,
|
|||||||
int nritems;
|
int nritems;
|
||||||
int i;
|
int i;
|
||||||
int slot;
|
int slot;
|
||||||
int found = 0;
|
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
leaf = path->nodes[0];
|
leaf = path->nodes[0];
|
||||||
@@ -1326,7 +1325,7 @@ static noinline int copy_to_sk(struct btrfs_root *root,
|
|||||||
item_off, item_len);
|
item_off, item_len);
|
||||||
*sk_offset += item_len;
|
*sk_offset += item_len;
|
||||||
}
|
}
|
||||||
found++;
|
(*num_found)++;
|
||||||
|
|
||||||
if (*num_found >= sk->nr_items)
|
if (*num_found >= sk->nr_items)
|
||||||
break;
|
break;
|
||||||
@@ -1345,7 +1344,6 @@ advance_key:
|
|||||||
} else
|
} else
|
||||||
ret = 1;
|
ret = 1;
|
||||||
overflow:
|
overflow:
|
||||||
*num_found += found;
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user