bcachefs: dirent_format.h
authorKent Overstreet <kent.overstreet@linux.dev>
Sun, 21 Jan 2024 04:57:10 +0000 (23:57 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 21 Jan 2024 18:27:10 +0000 (13:27 -0500)
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/bcachefs_format.h
fs/bcachefs/dirent_format.h [new file with mode: 0644]

index 691654f265529f83856571e3bc3834c06b49ac80..2af3795b49177a2058cb30f005220443a3dffe42 100644 (file)
@@ -710,45 +710,6 @@ struct bch_reservation {
 #define BKEY_BTREE_PTR_U64s_MAX                                        \
        (BKEY_U64s + BKEY_BTREE_PTR_VAL_U64s_MAX)
 
-/* Dirents */
-
-/*
- * Dirents (and xattrs) have to implement string lookups; since our b-tree
- * doesn't support arbitrary length strings for the key, we instead index by a
- * 64 bit hash (currently truncated sha1) of the string, stored in the offset
- * field of the key - using linear probing to resolve hash collisions. This also
- * provides us with the readdir cookie posix requires.
- *
- * Linear probing requires us to use whiteouts for deletions, in the event of a
- * collision:
- */
-
-struct bch_dirent {
-       struct bch_val          v;
-
-       /* Target inode number: */
-       union {
-       __le64                  d_inum;
-       struct {                /* DT_SUBVOL */
-       __le32                  d_child_subvol;
-       __le32                  d_parent_subvol;
-       };
-       };
-
-       /*
-        * Copy of mode bits 12-15 from the target inode - so userspace can get
-        * the filetype without having to do a stat()
-        */
-       __u8                    d_type;
-
-       __u8                    d_name[];
-} __packed __aligned(8);
-
-#define DT_SUBVOL      16
-#define BCH_DT_MAX     17
-
-#define BCH_NAME_MAX   512
-
 /* Xattrs */
 
 #define KEY_TYPE_XATTR_INDEX_USER                      0
@@ -1045,6 +1006,7 @@ struct bch_sb_field {
        x(ext,                          13)     \
        x(downgrade,                    14)
 
+#include "dirent_format.h"
 #include "inode_format.h"
 #include "quota_format.h"
 #include "sb-counters_format.h"
diff --git a/fs/bcachefs/dirent_format.h b/fs/bcachefs/dirent_format.h
new file mode 100644 (file)
index 0000000..5e116b8
--- /dev/null
@@ -0,0 +1,42 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _BCACHEFS_DIRENT_FORMAT_H
+#define _BCACHEFS_DIRENT_FORMAT_H
+
+/*
+ * Dirents (and xattrs) have to implement string lookups; since our b-tree
+ * doesn't support arbitrary length strings for the key, we instead index by a
+ * 64 bit hash (currently truncated sha1) of the string, stored in the offset
+ * field of the key - using linear probing to resolve hash collisions. This also
+ * provides us with the readdir cookie posix requires.
+ *
+ * Linear probing requires us to use whiteouts for deletions, in the event of a
+ * collision:
+ */
+
+struct bch_dirent {
+       struct bch_val          v;
+
+       /* Target inode number: */
+       union {
+       __le64                  d_inum;
+       struct {                /* DT_SUBVOL */
+       __le32                  d_child_subvol;
+       __le32                  d_parent_subvol;
+       };
+       };
+
+       /*
+        * Copy of mode bits 12-15 from the target inode - so userspace can get
+        * the filetype without having to do a stat()
+        */
+       __u8                    d_type;
+
+       __u8                    d_name[];
+} __packed __aligned(8);
+
+#define DT_SUBVOL      16
+#define BCH_DT_MAX     17
+
+#define BCH_NAME_MAX   512
+
+#endif /* _BCACHEFS_DIRENT_FORMAT_H */