Loading fs/bcachefs/bcachefs_format.h +1 −39 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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" Loading fs/bcachefs/dirent_format.h 0 → 100644 +42 −0 Original line number Diff line number Diff line /* 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 */ Loading
fs/bcachefs/bcachefs_format.h +1 −39 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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" Loading
fs/bcachefs/dirent_format.h 0 → 100644 +42 −0 Original line number Diff line number Diff line /* 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 */