xref: /linux/fs/btrfs/dir-item.h (revision f95420e3068fe62ce659e150f81ddf894b56c8c9)
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_inode;
14 struct btrfs_root;
15 struct btrfs_trans_handle;
16 struct btrfs_dir_index_prealloc;
17 
18 int btrfs_check_dir_item_collision(struct btrfs_root *root, u64 dir_ino,
19 			  const struct fscrypt_str *name);
20 int btrfs_insert_dir_item(struct btrfs_trans_handle *trans,
21 			  const struct fscrypt_str *name, struct btrfs_inode *dir,
22 			  const struct btrfs_key *location, u8 type, u64 index,
23 			  struct btrfs_dir_index_prealloc *prealloc);
24 struct btrfs_dir_item *btrfs_lookup_dir_item(struct btrfs_trans_handle *trans,
25 					     struct btrfs_root *root,
26 					     struct btrfs_path *path, u64 dir,
27 					     const struct fscrypt_str *name, int mod);
28 struct btrfs_dir_item *btrfs_lookup_dir_index_item(
29 			struct btrfs_trans_handle *trans,
30 			struct btrfs_root *root,
31 			struct btrfs_path *path, u64 dir,
32 			u64 index, const struct fscrypt_str *name, int mod);
33 struct btrfs_dir_item *btrfs_search_dir_index_item(struct btrfs_root *root,
34 			    struct btrfs_path *path, u64 dirid,
35 			    const struct fscrypt_str *name);
36 int btrfs_delete_one_dir_name(struct btrfs_trans_handle *trans,
37 			      struct btrfs_root *root,
38 			      struct btrfs_path *path,
39 			      const struct btrfs_dir_item *di);
40 int btrfs_insert_xattr_item(struct btrfs_trans_handle *trans,
41 			    struct btrfs_root *root,
42 			    struct btrfs_path *path, u64 objectid,
43 			    const char *name, u16 name_len,
44 			    const void *data, u16 data_len);
45 struct btrfs_dir_item *btrfs_lookup_xattr(struct btrfs_trans_handle *trans,
46 					  struct btrfs_root *root,
47 					  struct btrfs_path *path, u64 dir,
48 					  const char *name, u16 name_len,
49 					  int mod);
50 struct btrfs_dir_item *btrfs_match_dir_item_name(const struct btrfs_path *path,
51 						 const char *name,
52 						 int name_len);
53 
54 static inline u64 btrfs_name_hash(const char *name, int len)
55 {
56        return crc32c((u32)~1, name, len);
57 }
58 #endif
59