Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

xfs: split out buf log item format definitions

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Mark Tinguely <tinguely@sgi.com>
Signed-off-by: Ben Myers <bpm@sgi.com>

authored by

Dave Chinner and committed by
Ben Myers
a8da0da2 69432832

+100 -97
+3 -97
fs/xfs/xfs_buf_item.h
··· 18 18 #ifndef __XFS_BUF_ITEM_H__ 19 19 #define __XFS_BUF_ITEM_H__ 20 20 21 - extern kmem_zone_t *xfs_buf_item_zone; 21 + /* kernel only definitions */ 22 22 23 - /* 24 - * This flag indicates that the buffer contains on disk inodes 25 - * and requires special recovery handling. 26 - */ 27 - #define XFS_BLF_INODE_BUF (1<<0) 28 - /* 29 - * This flag indicates that the buffer should not be replayed 30 - * during recovery because its blocks are being freed. 31 - */ 32 - #define XFS_BLF_CANCEL (1<<1) 33 - 34 - /* 35 - * This flag indicates that the buffer contains on disk 36 - * user or group dquots and may require special recovery handling. 37 - */ 38 - #define XFS_BLF_UDQUOT_BUF (1<<2) 39 - #define XFS_BLF_PDQUOT_BUF (1<<3) 40 - #define XFS_BLF_GDQUOT_BUF (1<<4) 41 - 42 - #define XFS_BLF_CHUNK 128 43 - #define XFS_BLF_SHIFT 7 44 - #define BIT_TO_WORD_SHIFT 5 45 - #define NBWORD (NBBY * sizeof(unsigned int)) 46 - 47 - /* 48 - * This is the structure used to lay out a buf log item in the 49 - * log. The data map describes which 128 byte chunks of the buffer 50 - * have been logged. 51 - */ 52 - #define XFS_BLF_DATAMAP_SIZE ((XFS_MAX_BLOCKSIZE / XFS_BLF_CHUNK) / NBWORD) 53 - 54 - typedef struct xfs_buf_log_format { 55 - unsigned short blf_type; /* buf log item type indicator */ 56 - unsigned short blf_size; /* size of this item */ 57 - ushort blf_flags; /* misc state */ 58 - ushort blf_len; /* number of blocks in this buf */ 59 - __int64_t blf_blkno; /* starting blkno of this buf */ 60 - unsigned int blf_map_size; /* used size of data bitmap in words */ 61 - unsigned int blf_data_map[XFS_BLF_DATAMAP_SIZE]; /* dirty bitmap */ 62 - } xfs_buf_log_format_t; 63 - 64 - /* 65 - * All buffers now need to tell recovery where the magic number 66 - * is so that it can verify and calculate the CRCs on the buffer correctly 67 - * once the changes have been replayed into the buffer. 68 - * 69 - * The type value is held in the upper 5 bits of the blf_flags field, which is 70 - * an unsigned 16 bit field. Hence we need to shift it 11 bits up and down. 71 - */ 72 - #define XFS_BLFT_BITS 5 73 - #define XFS_BLFT_SHIFT 11 74 - #define XFS_BLFT_MASK (((1 << XFS_BLFT_BITS) - 1) << XFS_BLFT_SHIFT) 75 - 76 - enum xfs_blft { 77 - XFS_BLFT_UNKNOWN_BUF = 0, 78 - XFS_BLFT_UDQUOT_BUF, 79 - XFS_BLFT_PDQUOT_BUF, 80 - XFS_BLFT_GDQUOT_BUF, 81 - XFS_BLFT_BTREE_BUF, 82 - XFS_BLFT_AGF_BUF, 83 - XFS_BLFT_AGFL_BUF, 84 - XFS_BLFT_AGI_BUF, 85 - XFS_BLFT_DINO_BUF, 86 - XFS_BLFT_SYMLINK_BUF, 87 - XFS_BLFT_DIR_BLOCK_BUF, 88 - XFS_BLFT_DIR_DATA_BUF, 89 - XFS_BLFT_DIR_FREE_BUF, 90 - XFS_BLFT_DIR_LEAF1_BUF, 91 - XFS_BLFT_DIR_LEAFN_BUF, 92 - XFS_BLFT_DA_NODE_BUF, 93 - XFS_BLFT_ATTR_LEAF_BUF, 94 - XFS_BLFT_ATTR_RMT_BUF, 95 - XFS_BLFT_SB_BUF, 96 - XFS_BLFT_MAX_BUF = (1 << XFS_BLFT_BITS), 97 - }; 98 - 99 - static inline void 100 - xfs_blft_to_flags(struct xfs_buf_log_format *blf, enum xfs_blft type) 101 - { 102 - ASSERT(type > XFS_BLFT_UNKNOWN_BUF && type < XFS_BLFT_MAX_BUF); 103 - blf->blf_flags &= ~XFS_BLFT_MASK; 104 - blf->blf_flags |= ((type << XFS_BLFT_SHIFT) & XFS_BLFT_MASK); 105 - } 106 - 107 - static inline __uint16_t 108 - xfs_blft_from_flags(struct xfs_buf_log_format *blf) 109 - { 110 - return (blf->blf_flags & XFS_BLFT_MASK) >> XFS_BLFT_SHIFT; 111 - } 112 - 113 - /* 114 - * buf log item flags 115 - */ 23 + /* buf log item flags */ 116 24 #define XFS_BLI_HOLD 0x01 117 25 #define XFS_BLI_DIRTY 0x02 118 26 #define XFS_BLI_STALE 0x04 ··· 40 132 { XFS_BLI_INODE_BUF, "INODE_BUF" }, \ 41 133 { XFS_BLI_ORDERED, "ORDERED" } 42 134 43 - 44 - #ifdef __KERNEL__ 45 135 46 136 struct xfs_buf; 47 137 struct xfs_mount; ··· 75 169 enum xfs_blft); 76 170 void xfs_trans_buf_copy_type(struct xfs_buf *dst_bp, struct xfs_buf *src_bp); 77 171 78 - #endif /* __KERNEL__ */ 172 + extern kmem_zone_t *xfs_buf_item_zone; 79 173 80 174 #endif /* __XFS_BUF_ITEM_H__ */
+97
fs/xfs/xfs_log_format.h
··· 364 364 return sizeof(struct xfs_icdinode); 365 365 return offsetof(struct xfs_icdinode, di_next_unlinked); 366 366 } 367 + 368 + /* 369 + * Buffer Log Format defintions 370 + * 371 + * These are the physical dirty bitmap defintions for the log format structure. 372 + */ 373 + #define XFS_BLF_CHUNK 128 374 + #define XFS_BLF_SHIFT 7 375 + #define BIT_TO_WORD_SHIFT 5 376 + #define NBWORD (NBBY * sizeof(unsigned int)) 377 + 378 + /* 379 + * This flag indicates that the buffer contains on disk inodes 380 + * and requires special recovery handling. 381 + */ 382 + #define XFS_BLF_INODE_BUF (1<<0) 383 + 384 + /* 385 + * This flag indicates that the buffer should not be replayed 386 + * during recovery because its blocks are being freed. 387 + */ 388 + #define XFS_BLF_CANCEL (1<<1) 389 + 390 + /* 391 + * This flag indicates that the buffer contains on disk 392 + * user or group dquots and may require special recovery handling. 393 + */ 394 + #define XFS_BLF_UDQUOT_BUF (1<<2) 395 + #define XFS_BLF_PDQUOT_BUF (1<<3) 396 + #define XFS_BLF_GDQUOT_BUF (1<<4) 397 + 398 + /* 399 + * This is the structure used to lay out a buf log item in the 400 + * log. The data map describes which 128 byte chunks of the buffer 401 + * have been logged. 402 + */ 403 + #define XFS_BLF_DATAMAP_SIZE ((XFS_MAX_BLOCKSIZE / XFS_BLF_CHUNK) / NBWORD) 404 + 405 + typedef struct xfs_buf_log_format { 406 + unsigned short blf_type; /* buf log item type indicator */ 407 + unsigned short blf_size; /* size of this item */ 408 + ushort blf_flags; /* misc state */ 409 + ushort blf_len; /* number of blocks in this buf */ 410 + __int64_t blf_blkno; /* starting blkno of this buf */ 411 + unsigned int blf_map_size; /* used size of data bitmap in words */ 412 + unsigned int blf_data_map[XFS_BLF_DATAMAP_SIZE]; /* dirty bitmap */ 413 + } xfs_buf_log_format_t; 414 + 415 + /* 416 + * All buffers now need to tell recovery where the magic number 417 + * is so that it can verify and calculate the CRCs on the buffer correctly 418 + * once the changes have been replayed into the buffer. 419 + * 420 + * The type value is held in the upper 5 bits of the blf_flags field, which is 421 + * an unsigned 16 bit field. Hence we need to shift it 11 bits up and down. 422 + */ 423 + #define XFS_BLFT_BITS 5 424 + #define XFS_BLFT_SHIFT 11 425 + #define XFS_BLFT_MASK (((1 << XFS_BLFT_BITS) - 1) << XFS_BLFT_SHIFT) 426 + 427 + enum xfs_blft { 428 + XFS_BLFT_UNKNOWN_BUF = 0, 429 + XFS_BLFT_UDQUOT_BUF, 430 + XFS_BLFT_PDQUOT_BUF, 431 + XFS_BLFT_GDQUOT_BUF, 432 + XFS_BLFT_BTREE_BUF, 433 + XFS_BLFT_AGF_BUF, 434 + XFS_BLFT_AGFL_BUF, 435 + XFS_BLFT_AGI_BUF, 436 + XFS_BLFT_DINO_BUF, 437 + XFS_BLFT_SYMLINK_BUF, 438 + XFS_BLFT_DIR_BLOCK_BUF, 439 + XFS_BLFT_DIR_DATA_BUF, 440 + XFS_BLFT_DIR_FREE_BUF, 441 + XFS_BLFT_DIR_LEAF1_BUF, 442 + XFS_BLFT_DIR_LEAFN_BUF, 443 + XFS_BLFT_DA_NODE_BUF, 444 + XFS_BLFT_ATTR_LEAF_BUF, 445 + XFS_BLFT_ATTR_RMT_BUF, 446 + XFS_BLFT_SB_BUF, 447 + XFS_BLFT_MAX_BUF = (1 << XFS_BLFT_BITS), 448 + }; 449 + 450 + static inline void 451 + xfs_blft_to_flags(struct xfs_buf_log_format *blf, enum xfs_blft type) 452 + { 453 + ASSERT(type > XFS_BLFT_UNKNOWN_BUF && type < XFS_BLFT_MAX_BUF); 454 + blf->blf_flags &= ~XFS_BLFT_MASK; 455 + blf->blf_flags |= ((type << XFS_BLFT_SHIFT) & XFS_BLFT_MASK); 456 + } 457 + 458 + static inline __uint16_t 459 + xfs_blft_from_flags(struct xfs_buf_log_format *blf) 460 + { 461 + return (blf->blf_flags & XFS_BLFT_MASK) >> XFS_BLFT_SHIFT; 462 + } 463 + 367 464 #endif /* __XFS_LOG_FORMAT_H__ */