66
66
#define OCFS2_GROUP_DESC_SIGNATURE "GROUP01"
67
67
#define OCFS2_XATTR_BLOCK_SIGNATURE "XATTR01"
68
68
#define OCFS2_DIR_TRAILER_SIGNATURE "DIRTRL1"
69
- #define OCFS2_REFCOUNT_BLOCK_SIGNATURE "REFCNT1"
70
69
#define OCFS2_DX_ROOT_SIGNATURE "DXDIR01"
71
70
#define OCFS2_DX_LEAF_SIGNATURE "DXLEAF1"
71
+ #define OCFS2_REFCOUNT_BLOCK_SIGNATURE "REFCNT1"
72
72
73
73
/* Compatibility flags */
74
74
#define OCFS2_HAS_COMPAT_FEATURE (sb ,mask ) \
97
97
| OCFS2_FEATURE_INCOMPAT_INLINE_DATA \
98
98
| OCFS2_FEATURE_INCOMPAT_EXTENDED_SLOT_MAP \
99
99
| OCFS2_FEATURE_INCOMPAT_USERSPACE_STACK \
100
- | OCFS2_FEATURE_INCOMPAT_META_ECC \
101
100
| OCFS2_FEATURE_INCOMPAT_XATTR \
102
- | OCFS2_FEATURE_INCOMPAT_REFCOUNT_TREE \
101
+ | OCFS2_FEATURE_INCOMPAT_META_ECC \
103
102
| OCFS2_FEATURE_INCOMPAT_INDEXED_DIRS \
104
- | OCFS2_FEATURE_INCOMPAT_DISCONTIG_BG \
103
+ | OCFS2_FEATURE_INCOMPAT_REFCOUNT_TREE \
104
+ | OCFS2_FEATURE_INCOMPAT_DISCONTIG_BG \
105
105
| OCFS2_FEATURE_INCOMPAT_CLUSTERINFO)
106
106
#define OCFS2_FEATURE_RO_COMPAT_SUPP (OCFS2_FEATURE_RO_COMPAT_UNWRITTEN \
107
107
| OCFS2_FEATURE_RO_COMPAT_USRQUOTA \
243
243
#define OCFS2_HAS_XATTR_FL (0x0002)
244
244
#define OCFS2_INLINE_XATTR_FL (0x0004)
245
245
#define OCFS2_INDEXED_DIR_FL (0x0008)
246
- #define OCFS2_HAS_REFCOUNT_FL (0x0010)
246
+ #define OCFS2_HAS_REFCOUNT_FL (0x0010)
247
247
248
248
/* Inode attributes, keep in sync with EXT2 */
249
- #define OCFS2_SECRM_FL (0x00000001) /* Secure deletion */
250
- #define OCFS2_UNRM_FL (0x00000002) /* Undelete */
251
- #define OCFS2_COMPR_FL (0x00000004) /* Compress file */
252
- #define OCFS2_SYNC_FL (0x00000008) /* Synchronous updates */
253
- #define OCFS2_IMMUTABLE_FL (0x00000010) /* Immutable file */
254
- #define OCFS2_APPEND_FL (0x00000020) /* writes to file may only append */
255
- #define OCFS2_NODUMP_FL (0x00000040) /* do not dump file */
256
- #define OCFS2_NOATIME_FL (0x00000080) /* do not update atime */
257
- #define OCFS2_DIRSYNC_FL (0x00010000) /* dirsync behaviour (directories only) */
258
-
259
- #define OCFS2_FL_VISIBLE (0x000100FF) /* User visible flags */
260
- #define OCFS2_FL_MODIFIABLE (0x000100FF) /* User modifiable flags */
249
+ #define OCFS2_SECRM_FL FS_SECRM_FL /* Secure deletion */
250
+ #define OCFS2_UNRM_FL FS_UNRM_FL /* Undelete */
251
+ #define OCFS2_COMPR_FL FS_COMPR_FL /* Compress file */
252
+ #define OCFS2_SYNC_FL FS_SYNC_FL /* Synchronous updates */
253
+ #define OCFS2_IMMUTABLE_FL FS_IMMUTABLE_FL /* Immutable file */
254
+ #define OCFS2_APPEND_FL FS_APPEND_FL /* writes to file may only append */
255
+ #define OCFS2_NODUMP_FL FS_NODUMP_FL /* do not dump file */
256
+ #define OCFS2_NOATIME_FL FS_NOATIME_FL /* do not update atime */
257
+ /* Reserved for compression usage... */
258
+ #define OCFS2_DIRTY_FL FS_DIRTY_FL
259
+ #define OCFS2_COMPRBLK_FL FS_COMPRBLK_FL /* One or more compressed clusters */
260
+ #define OCFS2_NOCOMP_FL FS_NOCOMP_FL /* Don't compress */
261
+ #define OCFS2_ECOMPR_FL FS_ECOMPR_FL /* Compression error */
262
+ /* End compression flags --- maybe not all used */
263
+ #define OCFS2_BTREE_FL FS_BTREE_FL /* btree format dir */
264
+ #define OCFS2_INDEX_FL FS_INDEX_FL /* hash-indexed directory */
265
+ #define OCFS2_IMAGIC_FL FS_IMAGIC_FL /* AFS directory */
266
+ #define OCFS2_JOURNAL_DATA_FL FS_JOURNAL_DATA_FL /* Reserved for ext3 */
267
+ #define OCFS2_NOTAIL_FL FS_NOTAIL_FL /* file tail should not be merged */
268
+ #define OCFS2_DIRSYNC_FL FS_DIRSYNC_FL /* dirsync behaviour (directories only) */
269
+ #define OCFS2_TOPDIR_FL FS_TOPDIR_FL /* Top of directory hierarchies*/
270
+ #define OCFS2_RESERVED_FL FS_RESERVED_FL /* reserved for ext2 lib */
271
+
272
+ #define OCFS2_FL_VISIBLE FS_FL_USER_VISIBLE /* User visible flags */
273
+ #define OCFS2_FL_MODIFIABLE FS_FL_USER_MODIFIABLE /* User modifiable flags */
261
274
262
275
/*
263
276
* Extent record flags (e_node.leaf.flags)
264
277
*/
265
278
#define OCFS2_EXT_UNWRITTEN (0x01) /* Extent is allocated but
266
279
* unwritten */
267
- #define OCFS2_EXT_REFCOUNTED (0x02) /* Extent is reference
280
+ #define OCFS2_EXT_REFCOUNTED (0x02) /* Extent is reference
268
281
* counted in an associated
269
282
* refcount tree */
270
283
@@ -333,6 +346,7 @@ enum {
333
346
USER_QUOTA_SYSTEM_INODE ,
334
347
GROUP_QUOTA_SYSTEM_INODE ,
335
348
#define OCFS2_LAST_GLOBAL_SYSTEM_INODE GROUP_QUOTA_SYSTEM_INODE
349
+ #define OCFS2_FIRST_LOCAL_SYSTEM_INODE ORPHAN_DIR_SYSTEM_INODE
336
350
ORPHAN_DIR_SYSTEM_INODE ,
337
351
EXTENT_ALLOC_SYSTEM_INODE ,
338
352
INODE_ALLOC_SYSTEM_INODE ,
@@ -341,8 +355,12 @@ enum {
341
355
TRUNCATE_LOG_SYSTEM_INODE ,
342
356
LOCAL_USER_QUOTA_SYSTEM_INODE ,
343
357
LOCAL_GROUP_QUOTA_SYSTEM_INODE ,
358
+ #define OCFS2_LAST_LOCAL_SYSTEM_INODE LOCAL_GROUP_QUOTA_SYSTEM_INODE
344
359
NUM_SYSTEM_INODES
345
360
};
361
+ #define NUM_GLOBAL_SYSTEM_INODES OCFS2_FIRST_LOCAL_SYSTEM_INODE
362
+ #define NUM_LOCAL_SYSTEM_INODES \
363
+ (NUM_SYSTEM_INODES - OCFS2_FIRST_LOCAL_SYSTEM_INODE)
346
364
347
365
static struct ocfs2_system_inode_info ocfs2_system_inodes [NUM_SYSTEM_INODES ] = {
348
366
/* Global system inodes (single copy) */
@@ -404,6 +422,7 @@ static struct ocfs2_system_inode_info ocfs2_system_inodes[NUM_SYSTEM_INODES] = {
404
422
#define OCFS2_LINK_MAX 32000
405
423
#define OCFS2_DX_LINK_MAX ((1U << 31) - 1U)
406
424
#define OCFS2_LINKS_HI_SHIFT 16
425
+ #define OCFS2_DX_ENTRIES_MAX (0xffffffffU)
407
426
408
427
#define S_SHIFT 12
409
428
static unsigned char ocfs2_type_by_mode [S_IFMT >> S_SHIFT ] = {
@@ -430,7 +449,7 @@ static unsigned char ocfs2_type_by_mode[S_IFMT >> S_SHIFT] = {
430
449
struct ocfs2_block_check {
431
450
/*00*/ __le32 bc_crc32e ; /* 802.3 Ethernet II CRC32 */
432
451
__le16 bc_ecc ; /* Single-error-correction parity vector.
433
- This is a simple Hamming code dependant
452
+ This is a simple Hamming code dependent
434
453
on the blocksize. OCFS2's maximum
435
454
blocksize, 4K, requires 16 parity bits,
436
455
so we fit in __le16. */
@@ -712,7 +731,7 @@ struct ocfs2_dinode {
712
731
__le16 i_dyn_features ;
713
732
__le64 i_xattr_loc ;
714
733
/*80*/ struct ocfs2_block_check i_check ; /* Error checking */
715
- __le64 i_dx_root ;
734
+ /*88*/ __le64 i_dx_root ; /* Pointer to dir index root block */
716
735
/*90*/ __le64 i_refcount_loc ;
717
736
__le64 i_suballoc_loc ; /* Suballocator block group this
718
737
inode belongs to. Only valid
@@ -739,7 +758,7 @@ struct ocfs2_dinode {
739
758
after an unclean
740
759
shutdown */
741
760
} journal1 ;
742
- } id1 ; /* Inode type dependant 1 */
761
+ } id1 ; /* Inode type dependent 1 */
743
762
/*C0*/ union {
744
763
struct ocfs2_super_block i_super ;
745
764
struct ocfs2_local_alloc i_lab ;
@@ -853,11 +872,11 @@ struct ocfs2_dx_root_block {
853
872
__le32 dr_reserved2 ;
854
873
__le64 dr_free_blk ; /* Pointer to head of free
855
874
* unindexed block list. */
856
- __le64 dr_suballoc_loc ; /* Suballocator block group
857
- * this root belongs to.
858
- * Only valid if allocated
859
- * from a discontiguous
860
- * block group. */
875
+ __le64 dr_suballoc_loc ; /* Suballocator block group
876
+ this root belongs to.
877
+ Only valid if allocated
878
+ from a discontiguous
879
+ block group */
861
880
__le64 dr_reserved3 [14 ];
862
881
union {
863
882
struct ocfs2_extent_list dr_list ; /* Keep this aligned to 128
@@ -1008,7 +1027,7 @@ struct ocfs2_xattr_entry {
1008
1027
__le16 xe_name_offset ; /* byte offset from the 1st entry in the
1009
1028
local xattr storage(inode, xattr block or
1010
1029
xattr bucket). */
1011
- __u8 xe_name_len ; /* xattr name len, does 't include prefix. */
1030
+ __u8 xe_name_len ; /* xattr name len, doesn 't include prefix. */
1012
1031
__u8 xe_type ; /* the low 7 bits indicate the name prefix
1013
1032
* type and the highest bit indicates whether
1014
1033
* the EA is stored in the local storage. */
@@ -1068,13 +1087,13 @@ struct ocfs2_xattr_tree_root {
1068
1087
/*10*/ struct ocfs2_extent_list xt_list ; /* Extent record list */
1069
1088
};
1070
1089
1090
+ #define OCFS2_XATTR_INLINE_SIZE 80
1071
1091
#define OCFS2_XATTR_INDEXED 0x1
1072
1092
#define OCFS2_HASH_SHIFT 5
1073
1093
#define OCFS2_XATTR_ROUND 3
1074
1094
#define OCFS2_XATTR_SIZE (size ) (((size) + OCFS2_XATTR_ROUND) & \
1075
1095
~(OCFS2_XATTR_ROUND))
1076
1096
1077
- #define OCFS2_XATTR_INLINE_SIZE 80
1078
1097
#define OCFS2_XATTR_BUCKET_SIZE 4096
1079
1098
#define OCFS2_XATTR_MAX_BLOCKS_PER_BUCKET (OCFS2_XATTR_BUCKET_SIZE \
1080
1099
/ OCFS2_MIN_BLOCKSIZE)
@@ -1455,7 +1474,6 @@ ocfs2_get_ref_rec_low_cpos(const struct ocfs2_refcount_rec *rec)
1455
1474
{
1456
1475
return le64_to_cpu (rec -> r_cpos ) & OCFS2_32BIT_POS_MASK ;
1457
1476
}
1458
-
1459
1477
#else
1460
1478
static inline int ocfs2_fast_symlink_chars (int blocksize )
1461
1479
{
0 commit comments