Lines Matching full:k
80 struct bkey_i_inode_v3 *k = &packed->inode; in bch2_inode_pack_inlined() local
81 u8 *out = k->v.fields; in bch2_inode_pack_inlined()
89 packed->inode.k.p.offset = inode->bi_inum; in bch2_inode_pack_inlined()
127 set_bkey_val_bytes(&packed->inode.k, bytes); in bch2_inode_pack_inlined()
130 SET_INODEv3_NR_FIELDS(&k->v, nr_fields); in bch2_inode_pack_inlined()
231 static int bch2_inode_unpack_v3(struct bkey_s_c k, in bch2_inode_unpack_v3() argument
234 struct bkey_s_c_inode_v3 inode = bkey_s_c_to_inode_v3(k); in bch2_inode_unpack_v3()
242 unpacked->bi_inum = inode.k->p.offset; in bch2_inode_unpack_v3()
282 static noinline int bch2_inode_unpack_slowpath(struct bkey_s_c k, in bch2_inode_unpack_slowpath() argument
287 unpacked->bi_snapshot = k.k->p.snapshot; in bch2_inode_unpack_slowpath()
289 switch (k.k->type) { in bch2_inode_unpack_slowpath()
291 struct bkey_s_c_inode inode = bkey_s_c_to_inode(k); in bch2_inode_unpack_slowpath()
293 unpacked->bi_inum = inode.k->p.offset; in bch2_inode_unpack_slowpath()
309 struct bkey_s_c_inode_v2 inode = bkey_s_c_to_inode_v2(k); in bch2_inode_unpack_slowpath()
311 unpacked->bi_inum = inode.k->p.offset; in bch2_inode_unpack_slowpath()
326 int bch2_inode_unpack(struct bkey_s_c k, in bch2_inode_unpack() argument
329 unpacked->bi_snapshot = k.k->p.snapshot; in bch2_inode_unpack()
331 return likely(k.k->type == KEY_TYPE_inode_v3) in bch2_inode_unpack()
332 ? bch2_inode_unpack_v3(k, unpacked) in bch2_inode_unpack()
333 : bch2_inode_unpack_slowpath(k, unpacked); in bch2_inode_unpack()
347 struct bkey_s_c k = bch2_bkey_get_iter(trans, iter, BTREE_ID_inodes, in __bch2_inode_peek() local
350 ret = bkey_err(k); in __bch2_inode_peek()
354 ret = bkey_is_inode(k.k) ? 0 : -BCH_ERR_ENOENT_inode; in __bch2_inode_peek()
358 ret = bch2_inode_unpack(k, inode); in __bch2_inode_peek()
382 inode_p->inode.k.p.snapshot = iter->snapshot; in bch2_inode_write_flags()
395 inode_p->inode.k.p.snapshot = inode->bi_snapshot; in __bch2_fsck_write_inode()
410 struct bkey_i *bch2_inode_to_v3(struct btree_trans *trans, struct bkey_i *k) in bch2_inode_to_v3() argument
416 if (!bkey_is_inode(&k->k)) in bch2_inode_to_v3()
423 ret = bch2_inode_unpack(bkey_i_to_s_c(k), &u); in bch2_inode_to_v3()
431 static int __bch2_inode_validate(struct bch_fs *c, struct bkey_s_c k, in __bch2_inode_validate() argument
437 bkey_fsck_err_on(k.k->p.inode, in __bch2_inode_validate()
439 "nonzero k.p.inode"); in __bch2_inode_validate()
441 bkey_fsck_err_on(k.k->p.offset < BLOCKDEV_INODE_MAX, in __bch2_inode_validate()
445 bkey_fsck_err_on(bch2_inode_unpack(k, &unpacked), in __bch2_inode_validate()
471 int bch2_inode_validate(struct bch_fs *c, struct bkey_s_c k, in bch2_inode_validate() argument
474 struct bkey_s_c_inode inode = bkey_s_c_to_inode(k); in bch2_inode_validate()
482 ret = __bch2_inode_validate(c, k, from); in bch2_inode_validate()
487 int bch2_inode_v2_validate(struct bch_fs *c, struct bkey_s_c k, in bch2_inode_v2_validate() argument
490 struct bkey_s_c_inode_v2 inode = bkey_s_c_to_inode_v2(k); in bch2_inode_v2_validate()
498 ret = __bch2_inode_validate(c, k, from); in bch2_inode_v2_validate()
503 int bch2_inode_v3_validate(struct bch_fs *c, struct bkey_s_c k, in bch2_inode_v3_validate() argument
506 struct bkey_s_c_inode_v3 inode = bkey_s_c_to_inode_v3(k); in bch2_inode_v3_validate()
510 INODEv3_FIELDS_START(inode.v) > bkey_val_u64s(inode.k), in bch2_inode_v3_validate()
515 bkey_val_u64s(inode.k)); in bch2_inode_v3_validate()
522 ret = __bch2_inode_validate(c, k, from); in bch2_inode_v3_validate()
562 void bch2_inode_to_text(struct printbuf *out, struct bch_fs *c, struct bkey_s_c k) in bch2_inode_to_text() argument
566 if (bch2_inode_unpack(k, &inode)) { in bch2_inode_to_text()
574 static inline u64 bkey_inode_flags(struct bkey_s_c k) in bkey_inode_flags() argument
576 switch (k.k->type) { in bkey_inode_flags()
578 return le32_to_cpu(bkey_s_c_to_inode(k).v->bi_flags); in bkey_inode_flags()
580 return le64_to_cpu(bkey_s_c_to_inode_v2(k).v->bi_flags); in bkey_inode_flags()
582 return le64_to_cpu(bkey_s_c_to_inode_v3(k).v->bi_flags); in bkey_inode_flags()
588 static inline void bkey_inode_flags_set(struct bkey_s k, u64 f) in bkey_inode_flags_set() argument
590 switch (k.k->type) { in bkey_inode_flags_set()
592 bkey_s_to_inode(k).v->bi_flags = cpu_to_le32(f); in bkey_inode_flags_set()
595 bkey_s_to_inode_v2(k).v->bi_flags = cpu_to_le64(f); in bkey_inode_flags_set()
598 bkey_s_to_inode_v3(k).v->bi_flags = cpu_to_le64(f); in bkey_inode_flags_set()
605 static inline bool bkey_is_unlinked_inode(struct bkey_s_c k) in bkey_is_unlinked_inode() argument
607 unsigned f = bkey_inode_flags(k) & BCH_INODE_unlinked; in bkey_is_unlinked_inode()
618 struct bkey_s_c k; in bch2_bkey_get_iter_snapshot_parent() local
624 flags|BTREE_ITER_all_snapshots, k, ret) in bch2_bkey_get_iter_snapshot_parent()
625 if (bch2_snapshot_is_ancestor(c, pos.snapshot, k.k->p.snapshot)) in bch2_bkey_get_iter_snapshot_parent()
626 return k; in bch2_bkey_get_iter_snapshot_parent()
636 struct bkey_s_c k; in bch2_inode_get_iter_snapshot_parent() local
638 k = bch2_bkey_get_iter_snapshot_parent(trans, iter, BTREE_ID_inodes, pos, flags); in bch2_inode_get_iter_snapshot_parent()
639 if (!k.k || in bch2_inode_get_iter_snapshot_parent()
640 bkey_err(k) || in bch2_inode_get_iter_snapshot_parent()
641 bkey_is_inode(k.k)) in bch2_inode_get_iter_snapshot_parent()
642 return k; in bch2_inode_get_iter_snapshot_parent()
645 pos = k.k->p; in bch2_inode_get_iter_snapshot_parent()
653 struct bkey_s_c k; in __bch2_inode_has_child_snapshots() local
659 BTREE_ITER_with_updates, k, ret) in __bch2_inode_has_child_snapshots()
660 if (bch2_snapshot_is_ancestor(c, k.k->p.snapshot, pos.snapshot) && in __bch2_inode_has_child_snapshots()
661 bkey_is_inode(k.k)) { in __bch2_inode_has_child_snapshots()
670 struct bkey_s k, in update_inode_has_children() argument
674 int ret = bch2_inode_has_child_snapshots(trans, k.k->p); in update_inode_has_children()
679 u64 f = bkey_inode_flags(k.s_c); in update_inode_has_children()
681 bkey_inode_flags_set(k, f ^ BCH_INODE_has_child_snapshot); in update_inode_has_children()
690 struct bkey_s_c k = bch2_inode_get_iter_snapshot_parent(trans, in update_parent_inode_has_children() local
692 int ret = bkey_err(k); in update_parent_inode_has_children()
695 if (!k.k) in update_parent_inode_has_children()
699 ret = bch2_inode_has_child_snapshots(trans, k.k->p); in update_parent_inode_has_children()
706 u64 f = bkey_inode_flags(k); in update_parent_inode_has_children()
708 struct bkey_i *update = bch2_bkey_make_mut(trans, &iter, &k, in update_parent_inode_has_children()
734 s64 nr = bkey_is_inode(new.k) - bkey_is_inode(old.k); in bch2_trigger_inode()
747 new.k->p, unlinked_delta > 0); in bch2_trigger_inode()
758 int deleted_delta = (int) bkey_is_inode(new.k) - in bch2_trigger_inode()
759 (int) bkey_is_inode(old.k); in bch2_trigger_inode()
761 bch2_snapshot_parent(c, new.k->p.snapshot)) { in bch2_trigger_inode()
762 int ret = update_parent_inode_has_children(trans, new.k->p, in bch2_trigger_inode()
782 int bch2_inode_generation_validate(struct bch_fs *c, struct bkey_s_c k, in bch2_inode_generation_validate() argument
787 bkey_fsck_err_on(k.k->p.inode, in bch2_inode_generation_validate()
789 "nonzero k.p.inode"); in bch2_inode_generation_validate()
795 struct bkey_s_c k) in bch2_inode_generation_to_text() argument
797 struct bkey_s_c_inode_generation gen = bkey_s_c_to_inode_generation(k); in bch2_inode_generation_to_text()
802 int bch2_inode_alloc_cursor_validate(struct bch_fs *c, struct bkey_s_c k, in bch2_inode_alloc_cursor_validate() argument
807 bkey_fsck_err_on(k.k->p.inode != LOGGED_OPS_INUM_inode_cursors, in bch2_inode_alloc_cursor_validate()
809 "k.p.inode bad"); in bch2_inode_alloc_cursor_validate()
815 struct bkey_s_c k) in bch2_inode_alloc_cursor_to_text() argument
817 struct bkey_s_c_inode_alloc_cursor i = bkey_s_c_to_inode_alloc_cursor(k); in bch2_inode_alloc_cursor_to_text()
871 static inline u32 bkey_generation(struct bkey_s_c k) in bkey_generation() argument
873 switch (k.k->type) { in bkey_generation()
878 return le32_to_cpu(bkey_s_c_to_inode_generation(k).v->bi_generation); in bkey_generation()
894 struct bkey_s_c k = bch2_bkey_get_iter(trans, &iter, in bch2_inode_alloc_cursor_get() local
898 int ret = bkey_err(k); in bch2_inode_alloc_cursor_get()
903 k.k->type == KEY_TYPE_inode_alloc_cursor in bch2_inode_alloc_cursor_get()
904 ? bch2_bkey_make_mut_typed(trans, &iter, &k, 0, inode_alloc_cursor) in bch2_inode_alloc_cursor_get()
955 struct bkey_s_c k; in bch2_inode_create() local
957 while ((k = bch2_btree_iter_peek(iter)).k && in bch2_inode_create()
958 !(ret = bkey_err(k)) && in bch2_inode_create()
959 bkey_lt(k.k->p, POS(0, max))) { in bch2_inode_create()
989 k = bch2_btree_iter_peek_slot(iter); in bch2_inode_create()
990 ret = bkey_err(k); in bch2_inode_create()
996 inode_u->bi_inum = k.k->p.offset; in bch2_inode_create()
998 cursor->v.idx = cpu_to_le64(k.k->p.offset + 1); in bch2_inode_create()
1006 struct bkey_s_c k; in bch2_inode_delete_keys() local
1028 k = bch2_btree_iter_peek_max(&iter, end); in bch2_inode_delete_keys()
1029 ret = bkey_err(k); in bch2_inode_delete_keys()
1033 if (!k.k) in bch2_inode_delete_keys()
1036 bkey_init(&delete.k); in bch2_inode_delete_keys()
1037 delete.k.p = iter.pos; in bch2_inode_delete_keys()
1040 bch2_key_resize(&delete.k, in bch2_inode_delete_keys()
1041 bpos_min(end, k.k->p).offset - in bch2_inode_delete_keys()
1060 struct bkey_s_c k; in bch2_inode_rm() local
1084 k = bch2_bkey_get_iter(trans, &iter, BTREE_ID_inodes, in bch2_inode_rm()
1087 ret = bkey_err(k); in bch2_inode_rm()
1091 if (!bkey_is_inode(k.k)) { in bch2_inode_rm()
1227 struct bkey_s_c k; in __bch2_inode_rm_snapshot() local
1249 k = bch2_bkey_get_iter(trans, &iter, BTREE_ID_inodes, in __bch2_inode_rm_snapshot()
1251 ret = bkey_err(k); in __bch2_inode_rm_snapshot()
1255 if (!bkey_is_inode(k.k)) { in __bch2_inode_rm_snapshot()
1263 bch2_inode_unpack(k, &inode_u); in __bch2_inode_rm_snapshot()
1270 delete.k.p = iter.pos; in __bch2_inode_rm_snapshot()
1292 struct bkey_s_c k; in delete_ancestor_snapshot_inodes() local
1296 bkey_err(k = bch2_inode_get_iter_snapshot_parent(trans, &iter, pos, 0))); in delete_ancestor_snapshot_inodes()
1297 if (ret || !k.k) in delete_ancestor_snapshot_inodes()
1300 bool unlinked = bkey_is_unlinked_inode(k); in delete_ancestor_snapshot_inodes()
1301 pos = k.k->p; in delete_ancestor_snapshot_inodes()
1330 struct bkey_s_c k; in may_delete_deleted_inode() local
1335 k = bch2_bkey_get_iter(trans, &inode_iter, BTREE_ID_inodes, pos, BTREE_ITER_cached); in may_delete_deleted_inode()
1336 ret = bkey_err(k); in may_delete_deleted_inode()
1340 ret = bkey_is_inode(k.k) ? 0 : -BCH_ERR_ENOENT_inode; in may_delete_deleted_inode()
1341 if (fsck_err_on(!bkey_is_inode(k.k), in may_delete_deleted_inode()
1347 ret = bch2_inode_unpack(k, &inode); in may_delete_deleted_inode()
1374 ret = bch2_inode_has_child_snapshots(trans, k.k->p); in may_delete_deleted_inode()
1436 BTREE_ITER_prefetch|BTREE_ITER_all_snapshots, k, in bch2_delete_dead_inodes()
1438 ret = may_delete_deleted_inode(trans, &iter, k.k->p, &need_another_pass); in bch2_delete_dead_inodes()
1441 k.k->p.offset, k.k->p.snapshot); in bch2_delete_dead_inodes()
1443 ret = bch2_inode_rm_snapshot(trans, k.k->p.offset, k.k->p.snapshot); in bch2_delete_dead_inodes()