static void btrfs_print_tree_search(struct tcb *tcp, struct btrfs_ioctl_search_key *key, uint64_t buf_addr, uint64_t buf_size, bool print_size) { if (entering(tcp)) { tprintf("{key={tree_id="); btrfs_print_objectid(key->tree_id); if (key->min_objectid != BTRFS_FIRST_FREE_OBJECTID || !abbrev(tcp)) { tprints(", min_objectid="); btrfs_print_objectid(key->min_objectid); } if (key->max_objectid != BTRFS_LAST_FREE_OBJECTID || !abbrev(tcp)) { tprints(", max_objectid="); btrfs_print_objectid(key->max_objectid); } print_key_value(tcp, key, min_offset); print_key_value(tcp, key, max_offset); print_key_value(tcp, key, min_transid); print_key_value(tcp, key, max_transid); tprints(", min_type="); btrfs_print_key_type(key->min_type); tprints(", max_type="); btrfs_print_key_type(key->max_type); tprintf(", nr_items=%u}", key->nr_items); if (print_size) tprintf(", buf_size=%" PRIu64, buf_size); tprints("}"); } else { tprintf("{key={nr_items=%u}", key->nr_items); if (print_size) tprintf(", buf_size=%" PRIu64, buf_size); tprints(", buf="); if (abbrev(tcp)) tprints("..."); else { struct btrfs_ioctl_search_header sh; print_array(tcp, buf_addr, key->nr_items, &sh, sizeof(sh), umoven_or_printaddr, print_btrfs_ioctl_search_header, 0); } tprints("}"); } }
static void btrfs_print_tree_search(struct tcb *tcp, struct btrfs_ioctl_search_key *key, uint64_t buf_addr, uint64_t buf_size, bool print_size) { if (entering(tcp)) { tprintf("{key={tree_id="); btrfs_print_objectid(key->tree_id); if (key->min_objectid != BTRFS_FIRST_FREE_OBJECTID || !abbrev(tcp)) { tprints(", min_objectid="); btrfs_print_objectid(key->min_objectid); } if (key->max_objectid != BTRFS_LAST_FREE_OBJECTID || !abbrev(tcp)) { tprints(", max_objectid="); btrfs_print_objectid(key->max_objectid); } print_key_value(tcp, key, min_offset); print_key_value(tcp, key, max_offset); print_key_value(tcp, key, min_transid); print_key_value(tcp, key, max_transid); tprints(", min_type="); btrfs_print_key_type(key->min_type); tprints(", max_type="); btrfs_print_key_type(key->max_type); tprintf(", nr_items=%u}", key->nr_items); if (print_size) tprintf(", buf_size=%" PRIu64, buf_size); tprints("}"); } else { tprintf("{key={nr_items=%u}", key->nr_items); if (print_size) tprintf(", buf_size=%" PRIu64, buf_size); tprints(", buf="); if (abbrev(tcp)) tprints("..."); else { uint64_t i; uint64_t off = 0; tprints("["); for (i = 0; i < key->nr_items; i++) { struct btrfs_ioctl_search_header sh; uint64_t addr = buf_addr + off; if (i) tprints(", "); if (i > max_strlen || umove(tcp, addr, &sh)) { tprints("..."); break; } tprintf("{transid=%" PRI__u64 ", objectid=", sh.transid); btrfs_print_objectid(sh.objectid); tprintf(", offset=%" PRI__u64 ", type=", sh.offset); btrfs_print_key_type(sh.type); tprintf(", len=%u}", sh.len); off += sizeof(sh) + sh.len; } tprints("]"); } tprints("}"); } }