dir-item.h 2.0 KB

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