1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | |
3 | #ifndef BTRFS_DIR_ITEM_H |
4 | #define BTRFS_DIR_ITEM_H |
5 | |
6 | #include <linux/types.h> |
7 | #include <linux/crc32c.h> |
8 | |
9 | struct fscrypt_str; |
10 | struct btrfs_fs_info; |
11 | struct btrfs_key; |
12 | struct btrfs_path; |
13 | struct btrfs_root; |
14 | struct btrfs_trans_handle; |
15 | |
16 | int btrfs_check_dir_item_collision(struct btrfs_root *root, u64 dir, |
17 | const struct fscrypt_str *name); |
18 | int btrfs_insert_dir_item(struct btrfs_trans_handle *trans, |
19 | const struct fscrypt_str *name, struct btrfs_inode *dir, |
20 | struct btrfs_key *location, u8 type, u64 index); |
21 | struct btrfs_dir_item *btrfs_lookup_dir_item(struct btrfs_trans_handle *trans, |
22 | struct btrfs_root *root, |
23 | struct btrfs_path *path, u64 dir, |
24 | const struct fscrypt_str *name, int mod); |
25 | struct btrfs_dir_item *btrfs_lookup_dir_index_item( |
26 | struct btrfs_trans_handle *trans, |
27 | struct btrfs_root *root, |
28 | struct btrfs_path *path, u64 dir, |
29 | u64 index, const struct fscrypt_str *name, int mod); |
30 | struct btrfs_dir_item *btrfs_search_dir_index_item(struct btrfs_root *root, |
31 | struct btrfs_path *path, u64 dirid, |
32 | const struct fscrypt_str *name); |
33 | int btrfs_delete_one_dir_name(struct btrfs_trans_handle *trans, |
34 | struct btrfs_root *root, |
35 | struct btrfs_path *path, |
36 | struct btrfs_dir_item *di); |
37 | int btrfs_insert_xattr_item(struct btrfs_trans_handle *trans, |
38 | struct btrfs_root *root, |
39 | struct btrfs_path *path, u64 objectid, |
40 | const char *name, u16 name_len, |
41 | const void *data, u16 data_len); |
42 | struct btrfs_dir_item *btrfs_lookup_xattr(struct btrfs_trans_handle *trans, |
43 | struct btrfs_root *root, |
44 | struct btrfs_path *path, u64 dir, |
45 | const char *name, u16 name_len, |
46 | int mod); |
47 | struct btrfs_dir_item *btrfs_match_dir_item_name(struct btrfs_fs_info *fs_info, |
48 | struct btrfs_path *path, |
49 | const char *name, |
50 | int name_len); |
51 | |
52 | static inline u64 btrfs_name_hash(const char *name, int len) |
53 | { |
54 | return crc32c(crc: (u32)~1, address: name, length: len); |
55 | } |
56 | |
57 | #endif |
58 | |