.. | .. |
---|
1 | | -// SPDX-License-Identifier: GPL-2.0 |
---|
| 1 | +/* SPDX-License-Identifier: GPL-2.0 */ |
---|
2 | 2 | /* |
---|
3 | 3 | * Copyright (c) 2000-2001,2005 Silicon Graphics, Inc. |
---|
4 | 4 | * All Rights Reserved. |
---|
.. | .. |
---|
18 | 18 | struct xfs_dir2_data_hdr; |
---|
19 | 19 | struct xfs_dir2_data_entry; |
---|
20 | 20 | struct xfs_dir2_data_unused; |
---|
| 21 | +struct xfs_dir3_icfree_hdr; |
---|
| 22 | +struct xfs_dir3_icleaf_hdr; |
---|
21 | 23 | |
---|
22 | 24 | extern struct xfs_name xfs_name_dotdot; |
---|
23 | 25 | |
---|
.. | .. |
---|
25 | 27 | * Convert inode mode to directory entry filetype |
---|
26 | 28 | */ |
---|
27 | 29 | extern unsigned char xfs_mode_to_ftype(int mode); |
---|
28 | | - |
---|
29 | | -/* |
---|
30 | | - * directory operations vector for encode/decode routines |
---|
31 | | - */ |
---|
32 | | -struct xfs_dir_ops { |
---|
33 | | - int (*sf_entsize)(struct xfs_dir2_sf_hdr *hdr, int len); |
---|
34 | | - struct xfs_dir2_sf_entry * |
---|
35 | | - (*sf_nextentry)(struct xfs_dir2_sf_hdr *hdr, |
---|
36 | | - struct xfs_dir2_sf_entry *sfep); |
---|
37 | | - uint8_t (*sf_get_ftype)(struct xfs_dir2_sf_entry *sfep); |
---|
38 | | - void (*sf_put_ftype)(struct xfs_dir2_sf_entry *sfep, |
---|
39 | | - uint8_t ftype); |
---|
40 | | - xfs_ino_t (*sf_get_ino)(struct xfs_dir2_sf_hdr *hdr, |
---|
41 | | - struct xfs_dir2_sf_entry *sfep); |
---|
42 | | - void (*sf_put_ino)(struct xfs_dir2_sf_hdr *hdr, |
---|
43 | | - struct xfs_dir2_sf_entry *sfep, |
---|
44 | | - xfs_ino_t ino); |
---|
45 | | - xfs_ino_t (*sf_get_parent_ino)(struct xfs_dir2_sf_hdr *hdr); |
---|
46 | | - void (*sf_put_parent_ino)(struct xfs_dir2_sf_hdr *hdr, |
---|
47 | | - xfs_ino_t ino); |
---|
48 | | - |
---|
49 | | - int (*data_entsize)(int len); |
---|
50 | | - uint8_t (*data_get_ftype)(struct xfs_dir2_data_entry *dep); |
---|
51 | | - void (*data_put_ftype)(struct xfs_dir2_data_entry *dep, |
---|
52 | | - uint8_t ftype); |
---|
53 | | - __be16 * (*data_entry_tag_p)(struct xfs_dir2_data_entry *dep); |
---|
54 | | - struct xfs_dir2_data_free * |
---|
55 | | - (*data_bestfree_p)(struct xfs_dir2_data_hdr *hdr); |
---|
56 | | - |
---|
57 | | - xfs_dir2_data_aoff_t data_dot_offset; |
---|
58 | | - xfs_dir2_data_aoff_t data_dotdot_offset; |
---|
59 | | - xfs_dir2_data_aoff_t data_first_offset; |
---|
60 | | - size_t data_entry_offset; |
---|
61 | | - |
---|
62 | | - struct xfs_dir2_data_entry * |
---|
63 | | - (*data_dot_entry_p)(struct xfs_dir2_data_hdr *hdr); |
---|
64 | | - struct xfs_dir2_data_entry * |
---|
65 | | - (*data_dotdot_entry_p)(struct xfs_dir2_data_hdr *hdr); |
---|
66 | | - struct xfs_dir2_data_entry * |
---|
67 | | - (*data_first_entry_p)(struct xfs_dir2_data_hdr *hdr); |
---|
68 | | - struct xfs_dir2_data_entry * |
---|
69 | | - (*data_entry_p)(struct xfs_dir2_data_hdr *hdr); |
---|
70 | | - struct xfs_dir2_data_unused * |
---|
71 | | - (*data_unused_p)(struct xfs_dir2_data_hdr *hdr); |
---|
72 | | - |
---|
73 | | - int leaf_hdr_size; |
---|
74 | | - void (*leaf_hdr_to_disk)(struct xfs_dir2_leaf *to, |
---|
75 | | - struct xfs_dir3_icleaf_hdr *from); |
---|
76 | | - void (*leaf_hdr_from_disk)(struct xfs_dir3_icleaf_hdr *to, |
---|
77 | | - struct xfs_dir2_leaf *from); |
---|
78 | | - int (*leaf_max_ents)(struct xfs_da_geometry *geo); |
---|
79 | | - struct xfs_dir2_leaf_entry * |
---|
80 | | - (*leaf_ents_p)(struct xfs_dir2_leaf *lp); |
---|
81 | | - |
---|
82 | | - int node_hdr_size; |
---|
83 | | - void (*node_hdr_to_disk)(struct xfs_da_intnode *to, |
---|
84 | | - struct xfs_da3_icnode_hdr *from); |
---|
85 | | - void (*node_hdr_from_disk)(struct xfs_da3_icnode_hdr *to, |
---|
86 | | - struct xfs_da_intnode *from); |
---|
87 | | - struct xfs_da_node_entry * |
---|
88 | | - (*node_tree_p)(struct xfs_da_intnode *dap); |
---|
89 | | - |
---|
90 | | - int free_hdr_size; |
---|
91 | | - void (*free_hdr_to_disk)(struct xfs_dir2_free *to, |
---|
92 | | - struct xfs_dir3_icfree_hdr *from); |
---|
93 | | - void (*free_hdr_from_disk)(struct xfs_dir3_icfree_hdr *to, |
---|
94 | | - struct xfs_dir2_free *from); |
---|
95 | | - int (*free_max_bests)(struct xfs_da_geometry *geo); |
---|
96 | | - __be16 * (*free_bests_p)(struct xfs_dir2_free *free); |
---|
97 | | - xfs_dir2_db_t (*db_to_fdb)(struct xfs_da_geometry *geo, |
---|
98 | | - xfs_dir2_db_t db); |
---|
99 | | - int (*db_to_fdindex)(struct xfs_da_geometry *geo, |
---|
100 | | - xfs_dir2_db_t db); |
---|
101 | | -}; |
---|
102 | | - |
---|
103 | | -extern const struct xfs_dir_ops * |
---|
104 | | - xfs_dir_get_ops(struct xfs_mount *mp, struct xfs_inode *dp); |
---|
105 | | -extern const struct xfs_dir_ops * |
---|
106 | | - xfs_nondir_get_ops(struct xfs_mount *mp, struct xfs_inode *dp); |
---|
107 | 30 | |
---|
108 | 31 | /* |
---|
109 | 32 | * Generic directory interface routines |
---|
.. | .. |
---|
143 | 66 | extern int xfs_dir2_shrink_inode(struct xfs_da_args *args, xfs_dir2_db_t db, |
---|
144 | 67 | struct xfs_buf *bp); |
---|
145 | 68 | |
---|
146 | | -extern void xfs_dir2_data_freescan_int(struct xfs_da_geometry *geo, |
---|
147 | | - const struct xfs_dir_ops *ops, |
---|
148 | | - struct xfs_dir2_data_hdr *hdr, int *loghead); |
---|
149 | | -extern void xfs_dir2_data_freescan(struct xfs_inode *dp, |
---|
| 69 | +extern void xfs_dir2_data_freescan(struct xfs_mount *mp, |
---|
150 | 70 | struct xfs_dir2_data_hdr *hdr, int *loghead); |
---|
151 | 71 | extern void xfs_dir2_data_log_entry(struct xfs_da_args *args, |
---|
152 | 72 | struct xfs_buf *bp, struct xfs_dir2_data_entry *dep); |
---|
.. | .. |
---|
324 | 244 | #define XFS_READDIR_BUFSIZE (32768) |
---|
325 | 245 | |
---|
326 | 246 | unsigned char xfs_dir3_get_dtype(struct xfs_mount *mp, uint8_t filetype); |
---|
327 | | -void *xfs_dir3_data_endp(struct xfs_da_geometry *geo, |
---|
| 247 | +unsigned int xfs_dir3_data_end_offset(struct xfs_da_geometry *geo, |
---|
328 | 248 | struct xfs_dir2_data_hdr *hdr); |
---|
| 249 | +bool xfs_dir2_namecheck(const void *name, size_t length); |
---|
329 | 250 | |
---|
330 | 251 | #endif /* __XFS_DIR2_H__ */ |
---|