Lines Matching defs:key
34 * It's recommended to decode key.objecitd/offset if it's
70 * Customized reporter for extent data item, since its key objectid and
79 struct btrfs_key key;
83 btrfs_item_key_to_cpu(eb, &key, slot);
93 key.objectid, key.offset, &vaf);
112 struct btrfs_key *key,
120 end = ALIGN(key->offset + len, leaf->fs_info->sectorsize);
123 end = key->offset + len;
130 * key->objectid, which represents inode number
138 struct btrfs_key key;
142 btrfs_item_key_to_cpu(eb, &key, slot);
152 key.objectid, &vaf);
157 * This functions checks prev_key->objectid, to ensure current key and prev_key
166 struct btrfs_key *key, int slot,
169 /* No prev key, skip check */
173 /* Only these key->types needs to be checked */
174 ASSERT(key->type == BTRFS_XATTR_ITEM_KEY ||
175 key->type == BTRFS_INODE_REF_KEY ||
176 key->type == BTRFS_DIR_INDEX_KEY ||
177 key->type == BTRFS_DIR_ITEM_KEY ||
178 key->type == BTRFS_EXTENT_DATA_KEY);
187 if (key->objectid == prev_key->objectid)
192 "invalid previous key objectid, have %llu expect %llu",
193 prev_key->objectid, key->objectid);
197 struct btrfs_key *key, int slot,
206 if (!IS_ALIGNED(key->offset, sectorsize)) {
209 key->offset, sectorsize);
214 * Previous key must have the same key->objectid (ino).
219 if (!check_prev_ino(leaf, key, slot, prev_key))
261 /* Inline extent must have 0 as key offset */
262 if (key->offset) {
265 key->offset);
302 key->offset, &extent_end)) {
305 key->offset,
315 prev_key->objectid == key->objectid &&
323 if (prev_end > key->offset) {
326 prev_end, key->offset);
334 static int check_csum_item(struct extent_buffer *leaf, struct btrfs_key *key,
341 if (key->objectid != BTRFS_EXTENT_CSUM_OBJECTID) {
343 "invalid key objectid for csum item, have %llu expect %llu",
344 key->objectid, BTRFS_EXTENT_CSUM_OBJECTID);
347 if (!IS_ALIGNED(key->offset, sectorsize)) {
349 "unaligned key offset for csum item, have %llu should be aligned to %u",
350 key->offset, sectorsize);
366 if (prev_csum_end > key->offset) {
369 prev_csum_end, key->offset);
380 static int check_inode_key(struct extent_buffer *leaf, struct btrfs_key *key,
389 /* For XATTR_ITEM, location key should be all 0 */
391 if (key->type != 0 || key->objectid != 0 || key->offset != 0)
396 if ((key->objectid < BTRFS_FIRST_FREE_OBJECTID ||
397 key->objectid > BTRFS_LAST_FREE_OBJECTID) &&
398 key->objectid != BTRFS_ROOT_TREE_DIR_OBJECTID &&
399 key->objectid != BTRFS_FREE_INO_OBJECTID) {
402 "invalid key objectid: has %llu expect %llu or [%llu, %llu] or %llu",
403 key->objectid, BTRFS_ROOT_TREE_DIR_OBJECTID,
409 "invalid location key objectid: has %llu expect %llu or [%llu, %llu] or %llu",
410 key->objectid, BTRFS_ROOT_TREE_DIR_OBJECTID,
417 if (key->offset != 0) {
420 "invalid key offset: has %llu expect 0",
421 key->offset);
424 "invalid location key offset:has %llu expect 0",
425 key->offset);
431 static int check_root_key(struct extent_buffer *leaf, struct btrfs_key *key,
441 if (key->objectid == 0) {
446 "invalid location key root id 0");
451 if (!is_fstree(key->objectid) && !is_root_item) {
453 "invalid location key objectid, have %llu expect [%llu, %llu]",
454 key->objectid, BTRFS_FIRST_FREE_OBJECTID,
462 * Furthermore, for location key in DIR_ITEM, its offset is always -1.
464 * So here we only check offset for reloc tree whose key->offset must
467 if (key->objectid == BTRFS_TREE_RELOC_OBJECTID && key->offset == 0) {
475 struct btrfs_key *key, struct btrfs_key *prev_key,
483 if (!check_prev_ino(leaf, key, slot, prev_key))
504 /* Location key check */
517 "invalid location key type, have %u, expect %u or %u",
532 if (key->type == BTRFS_XATTR_ITEM_KEY &&
535 "invalid dir item type for XATTR key, have %u expect %u",
540 key->type != BTRFS_XATTR_ITEM_KEY) {
542 "xattr dir type found for non-XATTR key");
585 * Special check for XATTR/DIR_ITEM, as key->offset is name
588 if (key->type == BTRFS_DIR_ITEM_KEY ||
589 key->type == BTRFS_XATTR_ITEM_KEY) {
595 if (key->offset != name_hash) {
597 "name hash mismatch with key, have 0x%016x expect 0x%016llx",
598 name_hash, key->offset);
614 struct btrfs_key key;
618 btrfs_item_key_to_cpu(eb, &key, slot);
628 key.objectid, key.offset, &vaf);
633 struct btrfs_key *key, int slot)
644 if (key->offset == 0) {
668 if (btrfs_stack_block_group_used(&bgi) > key->offset) {
671 btrfs_stack_block_group_used(&bgi), key->offset);
893 struct btrfs_key *key, int slot)
898 chunk_err(leaf, chunk, key->offset,
913 chunk_err(leaf, chunk, key->offset,
920 return btrfs_check_chunk_valid(leaf, chunk, key->offset);
928 struct btrfs_key key;
932 btrfs_item_key_to_cpu(eb, &key, slot);
942 key.objectid, &vaf);
947 struct btrfs_key *key, int slot)
952 if (key->objectid != BTRFS_DEV_ITEMS_OBJECTID) {
955 key->objectid, BTRFS_DEV_ITEMS_OBJECTID);
966 if (btrfs_device_id(leaf, ditem) != key->offset) {
968 "devid mismatch: key has=%llu item has=%llu",
969 key->offset, btrfs_device_id(leaf, ditem));
994 struct btrfs_key *key, int slot)
1004 ret = check_inode_key(leaf, key, slot);
1074 static int check_root_item(struct extent_buffer *leaf, struct btrfs_key *key,
1083 ret = check_root_key(leaf, key, slot);
1165 struct btrfs_key key;
1171 btrfs_item_key_to_cpu(eb, &key, slot);
1172 bytenr = key.objectid;
1173 if (key.type == BTRFS_METADATA_ITEM_KEY ||
1174 key.type == BTRFS_TREE_BLOCK_REF_KEY ||
1175 key.type == BTRFS_SHARED_BLOCK_REF_KEY)
1178 len = key.offset;
1192 struct btrfs_key *key, int slot)
1205 if (key->type == BTRFS_METADATA_ITEM_KEY &&
1208 "invalid key type, METADATA_ITEM type invalid when SKINNY_METADATA feature disabled");
1211 /* key->objectid is the bytenr for both key types */
1212 if (!IS_ALIGNED(key->objectid, fs_info->sectorsize)) {
1214 "invalid key objectid, have %llu expect to be aligned to %u",
1215 key->objectid, fs_info->sectorsize);
1219 /* key->offset is tree level for METADATA_ITEM_KEY */
1220 if (key->type == BTRFS_METADATA_ITEM_KEY &&
1221 key->offset >= BTRFS_MAX_LEVEL) {
1224 key->offset, BTRFS_MAX_LEVEL - 1);
1234 * Records the first key and level of the tree block.
1278 if (key->type == BTRFS_EXTENT_ITEM_KEY &&
1279 key->offset != fs_info->nodesize) {
1282 key->offset, fs_info->nodesize);
1286 if (key->type != BTRFS_EXTENT_ITEM_KEY) {
1288 "invalid key type, have %u expect %u for data backref",
1289 key->type, BTRFS_EXTENT_ITEM_KEY);
1292 if (!IS_ALIGNED(key->offset, fs_info->sectorsize)) {
1295 key->offset, fs_info->sectorsize);
1302 if (is_tree_block && key->type != BTRFS_METADATA_ITEM_KEY) {
1357 * Contains owner subvolid, owner key objectid, adjusted offset.
1407 struct btrfs_key *key, int slot)
1411 if (key->type == BTRFS_SHARED_DATA_REF_KEY)
1416 "invalid item size, have %u expect %u for key type %u",
1418 expect_item_size, key->type);
1421 if (!IS_ALIGNED(key->objectid, leaf->fs_info->sectorsize)) {
1423 "invalid key objectid for shared block ref, have %llu expect aligned to %u",
1424 key->objectid, leaf->fs_info->sectorsize);
1427 if (key->type != BTRFS_TREE_BLOCK_REF_KEY &&
1428 !IS_ALIGNED(key->offset, leaf->fs_info->sectorsize)) {
1431 key->offset, leaf->fs_info->sectorsize);
1438 struct btrfs_key *key, int slot)
1446 "invalid item size, have %u expect aligned to %zu for key type %u",
1448 sizeof(*dref), key->type);
1451 if (!IS_ALIGNED(key->objectid, leaf->fs_info->sectorsize)) {
1453 "invalid key objectid for shared block ref, have %llu expect aligned to %u",
1454 key->objectid, leaf->fs_info->sectorsize);
1479 struct btrfs_key *key, struct btrfs_key *prev_key,
1486 if (!check_prev_ino(leaf, key, slot, prev_key))
1532 struct btrfs_key *key, int slot,
1538 switch (key->type) {
1540 ret = check_extent_data_item(leaf, key, slot, prev_key);
1543 ret = check_csum_item(leaf, key, slot, prev_key);
1548 ret = check_dir_item(leaf, key, prev_key, slot);
1551 ret = check_inode_ref(leaf, key, prev_key, slot);
1554 ret = check_block_group_item(leaf, key, slot);
1558 ret = check_leaf_chunk_item(leaf, chunk, key, slot);
1561 ret = check_dev_item(leaf, key, slot);
1564 ret = check_inode_item(leaf, key, slot);
1567 ret = check_root_item(leaf, key, slot);
1571 ret = check_extent_item(leaf, key, slot);
1576 ret = check_simple_keyed_refs(leaf, key, slot);
1579 ret = check_extent_data_ref(leaf, key, slot);
1588 /* No valid key type is 0, so all key should be larger than this key */
1590 struct btrfs_key key;
1640 * 1) key ordering
1651 btrfs_item_key_to_cpu(leaf, &key, slot);
1654 if (btrfs_comp_cpu_keys(&prev_key, &key) >= 0) {
1656 "bad key order, prev (%llu %u %llu) current (%llu %u %llu)",
1658 prev_key.offset, key.objectid, key.type,
1659 key.offset);
1711 ret = check_leaf_item(leaf, &key, slot, &prev_key);
1716 prev_key.objectid = key.objectid;
1717 prev_key.type = key.type;
1718 prev_key.offset = key.offset;
1739 struct btrfs_key key, next_key;
1762 btrfs_node_key_to_cpu(node, &key, slot);
1779 if (btrfs_comp_cpu_keys(&key, &next_key) >= 0) {
1781 "bad key order, current (%llu %u %llu) next (%llu %u %llu)",
1782 key.objectid, key.type, key.offset,