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_root;
  11. struct btrfs_trans_handle;
  12. int btrfs_check_dir_item_collision(struct btrfs_root *root, u64 dir,
  13. const struct fscrypt_str *name);
  14. int btrfs_insert_dir_item(struct btrfs_trans_handle *trans,
  15. const struct fscrypt_str *name, struct btrfs_inode *dir,
  16. const struct btrfs_key *location, u8 type, u64 index);
  17. struct btrfs_dir_item *btrfs_lookup_dir_item(struct btrfs_trans_handle *trans,
  18. struct btrfs_root *root,
  19. struct btrfs_path *path, u64 dir,
  20. const struct fscrypt_str *name, int mod);
  21. struct btrfs_dir_item *btrfs_lookup_dir_index_item(
  22. struct btrfs_trans_handle *trans,
  23. struct btrfs_root *root,
  24. struct btrfs_path *path, u64 dir,
  25. u64 index, const struct fscrypt_str *name, int mod);
  26. struct btrfs_dir_item *btrfs_search_dir_index_item(struct btrfs_root *root,
  27. struct btrfs_path *path, u64 dirid,
  28. const struct fscrypt_str *name);
  29. int btrfs_delete_one_dir_name(struct btrfs_trans_handle *trans,
  30. struct btrfs_root *root,
  31. struct btrfs_path *path,
  32. const struct btrfs_dir_item *di);
  33. int btrfs_insert_xattr_item(struct btrfs_trans_handle *trans,
  34. struct btrfs_root *root,
  35. struct btrfs_path *path, u64 objectid,
  36. const char *name, u16 name_len,
  37. const void *data, u16 data_len);
  38. struct btrfs_dir_item *btrfs_lookup_xattr(struct btrfs_trans_handle *trans,
  39. struct btrfs_root *root,
  40. struct btrfs_path *path, u64 dir,
  41. const char *name, u16 name_len,
  42. int mod);
  43. struct btrfs_dir_item *btrfs_match_dir_item_name(struct btrfs_fs_info *fs_info,
  44. 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