Lines Matching refs:inode

30  * together with the rest of the inode metadata. This means we'll need to do
39 * purposes of caching them (as opposed to creating a virtual inode).
43 * [ inode objectid, BTRFS_VERITY_DESC_ITEM_KEY, offset ]
52 * [ inode objectid, BTRFS_VERITY_MERKLE_ITEM_KEY, offset ]
74 * @inode: inode of the verity file
86 static loff_t merkle_file_pos(const struct inode *inode)
88 u64 sz = inode->i_size;
91 if (rounded > inode->i_sb->s_maxbytes)
98 * Drop all the items for this inode with this key_type.
100 * @inode: inode to drop items for
109 static int drop_verity_items(struct btrfs_inode *inode, u8 key_type)
112 struct btrfs_root *root = inode->root;
134 key.objectid = btrfs_ino(inode);
153 if (key.objectid != btrfs_ino(inode) || key.type != key_type)
181 * @inode: inode to drop verity items for
188 int btrfs_drop_verity_items(struct btrfs_inode *inode)
192 ret = drop_verity_items(inode, BTRFS_VERITY_DESC_ITEM_KEY);
195 ret = drop_verity_items(inode, BTRFS_VERITY_MERKLE_ITEM_KEY);
203 * Insert and write inode items with a given key type and offset.
205 * @inode: inode to insert for
217 static int write_key_bytes(struct btrfs_inode *inode, u8 key_type, u64 offset,
222 struct btrfs_root *root = inode->root;
242 key.objectid = btrfs_ino(inode);
276 * Read inode items of the given key type and offset from the btree.
278 * @inode: inode to read items of
297 static int read_key_bytes(struct btrfs_inode *inode, u8 key_type, u64 offset,
301 struct btrfs_root *root = inode->root;
321 key.objectid = btrfs_ino(inode);
339 if (key.objectid != btrfs_ino(inode) || key.type != key_type)
418 * @inode: inode to orphan
426 static int del_orphan(struct btrfs_trans_handle *trans, struct btrfs_inode *inode)
428 struct btrfs_root *root = inode->root;
432 * If the inode has no links, it is either already unlinked, or was
438 if (!inode->vfs_inode.i_nlink)
441 ret = btrfs_del_orphan_item(trans, root, btrfs_ino(inode));
450 * @inode: inode verity had an error for
458 static int rollback_verity(struct btrfs_inode *inode)
461 struct btrfs_root *root = inode->root;
464 ASSERT(inode_is_locked(&inode->vfs_inode));
465 truncate_inode_pages(inode->vfs_inode.i_mapping, inode->vfs_inode.i_size);
466 clear_bit(BTRFS_INODE_VERITY_IN_PROGRESS, &inode->runtime_flags);
467 ret = btrfs_drop_verity_items(inode);
471 (u64)inode->vfs_inode.i_ino);
476 * 1 for updating the inode flag
485 (u64)inode->vfs_inode.i_ino);
488 inode->ro_flags &= ~BTRFS_INODE_RO_VERITY;
489 btrfs_sync_inode_flags_to_i_flags(&inode->vfs_inode);
490 ret = btrfs_update_inode(trans, root, inode);
495 ret = del_orphan(trans, inode);
509 * @inode: inode to be marked as verity
517 * - mark the inode with the verity flag
524 static int finish_verity(struct btrfs_inode *inode, const void *desc,
528 struct btrfs_root *root = inode->root;
535 ret = write_key_bytes(inode, BTRFS_VERITY_DESC_ITEM_KEY, 0,
541 ret = write_key_bytes(inode, BTRFS_VERITY_DESC_ITEM_KEY, 1,
547 * 1 for updating the inode flag
555 inode->ro_flags |= BTRFS_INODE_RO_VERITY;
556 btrfs_sync_inode_flags_to_i_flags(&inode->vfs_inode);
557 ret = btrfs_update_inode(trans, root, inode);
560 ret = del_orphan(trans, inode);
563 clear_bit(BTRFS_INODE_VERITY_IN_PROGRESS, &inode->runtime_flags);
584 struct btrfs_inode *inode = BTRFS_I(file_inode(filp));
585 struct btrfs_root *root = inode->root;
591 if (test_bit(BTRFS_INODE_VERITY_IN_PROGRESS, &inode->runtime_flags))
600 ret = btrfs_drop_verity_items(inode);
609 ret = btrfs_orphan_add(trans, inode);
611 set_bit(BTRFS_INODE_VERITY_IN_PROGRESS, &inode->runtime_flags);
633 struct btrfs_inode *inode = BTRFS_I(file_inode(filp));
642 ret = finish_verity(inode, desc, desc_size);
648 rollback_ret = rollback_verity(inode);
650 btrfs_err(inode->root->fs_info,
658 * @inode: inode to get the descriptor of
668 int btrfs_get_verity_descriptor(struct inode *inode, void *buf, size_t buf_size)
675 ret = read_key_bytes(BTRFS_I(inode), BTRFS_VERITY_DESC_ITEM_KEY, 0,
692 ret = read_key_bytes(BTRFS_I(inode), BTRFS_VERITY_DESC_ITEM_KEY, 1,
705 * @inode: inode to read a merkle tree page for
710 * with a logical position past EOF in the inode's mapping.
714 static struct page *btrfs_read_merkle_tree_page(struct inode *inode,
720 loff_t merkle_pos = merkle_file_pos(inode);
725 if (merkle_pos > inode->i_sb->s_maxbytes - off - PAGE_SIZE)
729 folio = __filemap_get_folio(inode->i_mapping, index, FGP_ACCESSED, 0);
745 folio = filemap_alloc_folio(mapping_gfp_constraint(inode->i_mapping, ~__GFP_FS),
750 ret = filemap_add_folio(inode->i_mapping, folio, index, GFP_NOFS);
763 * [ inode objectid, BTRFS_MERKLE_ITEM_KEY, offset in bytes ]
765 ret = read_key_bytes(BTRFS_I(inode), BTRFS_VERITY_MERKLE_ITEM_KEY, off,
784 * @inode: inode to write a Merkle tree block for
791 static int btrfs_write_merkle_tree_block(struct inode *inode, const void *buf,
794 loff_t merkle_pos = merkle_file_pos(inode);
798 if (merkle_pos > inode->i_sb->s_maxbytes - pos - size)
801 return write_key_bytes(BTRFS_I(inode), BTRFS_VERITY_MERKLE_ITEM_KEY,