xfs: move incore structures out of xfs_da_format.h
Move the abstract in-memory version of various btree block headers out of xfs_da_format.h as they aren't on-disk formats. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
This commit is contained in:
Родитель
7f6bcf7c29
Коммит
a39f089a25
|
@ -16,6 +16,29 @@ struct xfs_da_state_blk;
|
|||
struct xfs_inode;
|
||||
struct xfs_trans;
|
||||
|
||||
/*
|
||||
* Incore version of the attribute leaf header.
|
||||
*/
|
||||
struct xfs_attr3_icleaf_hdr {
|
||||
uint32_t forw;
|
||||
uint32_t back;
|
||||
uint16_t magic;
|
||||
uint16_t count;
|
||||
uint16_t usedbytes;
|
||||
/*
|
||||
* Firstused is 32-bit here instead of 16-bit like the on-disk variant
|
||||
* to support maximum fsb size of 64k without overflow issues throughout
|
||||
* the attr code. Instead, the overflow condition is handled on
|
||||
* conversion to/from disk.
|
||||
*/
|
||||
uint32_t firstused;
|
||||
__u8 holes;
|
||||
struct {
|
||||
uint16_t base;
|
||||
uint16_t size;
|
||||
} freemap[XFS_ATTR_LEAF_MAPSIZE];
|
||||
};
|
||||
|
||||
/*
|
||||
* Used to keep a list of "remote value" extents when unlinking an inode.
|
||||
*/
|
||||
|
|
|
@ -124,6 +124,19 @@ typedef struct xfs_da_state {
|
|||
/* for dirv2 extrablk is data */
|
||||
} xfs_da_state_t;
|
||||
|
||||
/*
|
||||
* In-core version of the node header to abstract the differences in the v2 and
|
||||
* v3 disk format of the headers. Callers need to convert to/from disk format as
|
||||
* appropriate.
|
||||
*/
|
||||
struct xfs_da3_icnode_hdr {
|
||||
uint32_t forw;
|
||||
uint32_t back;
|
||||
uint16_t magic;
|
||||
uint16_t count;
|
||||
uint16_t level;
|
||||
};
|
||||
|
||||
/*
|
||||
* Utility macros to aid in logging changed structure fields.
|
||||
*/
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
#include "xfs_mount.h"
|
||||
#include "xfs_inode.h"
|
||||
#include "xfs_dir2.h"
|
||||
#include "xfs_dir2_priv.h"
|
||||
|
||||
/*
|
||||
* Shortform directory ops
|
||||
|
|
|
@ -93,19 +93,6 @@ struct xfs_da3_intnode {
|
|||
struct xfs_da_node_entry __btree[];
|
||||
};
|
||||
|
||||
/*
|
||||
* In-core version of the node header to abstract the differences in the v2 and
|
||||
* v3 disk format of the headers. Callers need to convert to/from disk format as
|
||||
* appropriate.
|
||||
*/
|
||||
struct xfs_da3_icnode_hdr {
|
||||
uint32_t forw;
|
||||
uint32_t back;
|
||||
uint16_t magic;
|
||||
uint16_t count;
|
||||
uint16_t level;
|
||||
};
|
||||
|
||||
/*
|
||||
* Directory version 2.
|
||||
*
|
||||
|
@ -434,14 +421,6 @@ struct xfs_dir3_leaf_hdr {
|
|||
__be32 pad; /* 64 bit alignment */
|
||||
};
|
||||
|
||||
struct xfs_dir3_icleaf_hdr {
|
||||
uint32_t forw;
|
||||
uint32_t back;
|
||||
uint16_t magic;
|
||||
uint16_t count;
|
||||
uint16_t stale;
|
||||
};
|
||||
|
||||
/*
|
||||
* Leaf block entry.
|
||||
*/
|
||||
|
@ -520,19 +499,6 @@ struct xfs_dir3_free {
|
|||
|
||||
#define XFS_DIR3_FREE_CRC_OFF offsetof(struct xfs_dir3_free, hdr.hdr.crc)
|
||||
|
||||
/*
|
||||
* In core version of the free block header, abstracted away from on-disk format
|
||||
* differences. Use this in the code, and convert to/from the disk version using
|
||||
* xfs_dir3_free_hdr_from_disk/xfs_dir3_free_hdr_to_disk.
|
||||
*/
|
||||
struct xfs_dir3_icfree_hdr {
|
||||
uint32_t magic;
|
||||
uint32_t firstdb;
|
||||
uint32_t nvalid;
|
||||
uint32_t nused;
|
||||
|
||||
};
|
||||
|
||||
/*
|
||||
* Single block format.
|
||||
*
|
||||
|
@ -709,29 +675,6 @@ struct xfs_attr3_leafblock {
|
|||
*/
|
||||
};
|
||||
|
||||
/*
|
||||
* incore, neutral version of the attribute leaf header
|
||||
*/
|
||||
struct xfs_attr3_icleaf_hdr {
|
||||
uint32_t forw;
|
||||
uint32_t back;
|
||||
uint16_t magic;
|
||||
uint16_t count;
|
||||
uint16_t usedbytes;
|
||||
/*
|
||||
* firstused is 32-bit here instead of 16-bit like the on-disk variant
|
||||
* to support maximum fsb size of 64k without overflow issues throughout
|
||||
* the attr code. Instead, the overflow condition is handled on
|
||||
* conversion to/from disk.
|
||||
*/
|
||||
uint32_t firstused;
|
||||
__u8 holes;
|
||||
struct {
|
||||
uint16_t base;
|
||||
uint16_t size;
|
||||
} freemap[XFS_ATTR_LEAF_MAPSIZE];
|
||||
};
|
||||
|
||||
/*
|
||||
* Special value to represent fs block size in the leaf header firstused field.
|
||||
* Only used when block size overflows the 2-bytes available on disk.
|
||||
|
|
|
@ -18,6 +18,8 @@ struct xfs_dir2_sf_entry;
|
|||
struct xfs_dir2_data_hdr;
|
||||
struct xfs_dir2_data_entry;
|
||||
struct xfs_dir2_data_unused;
|
||||
struct xfs_dir3_icfree_hdr;
|
||||
struct xfs_dir3_icleaf_hdr;
|
||||
|
||||
extern struct xfs_name xfs_name_dotdot;
|
||||
|
||||
|
|
|
@ -8,6 +8,25 @@
|
|||
|
||||
struct dir_context;
|
||||
|
||||
/*
|
||||
* In-core version of the leaf and free block headers to abstract the
|
||||
* differences in the v2 and v3 disk format of the headers.
|
||||
*/
|
||||
struct xfs_dir3_icleaf_hdr {
|
||||
uint32_t forw;
|
||||
uint32_t back;
|
||||
uint16_t magic;
|
||||
uint16_t count;
|
||||
uint16_t stale;
|
||||
};
|
||||
|
||||
struct xfs_dir3_icfree_hdr {
|
||||
uint32_t magic;
|
||||
uint32_t firstdb;
|
||||
uint32_t nvalid;
|
||||
uint32_t nused;
|
||||
};
|
||||
|
||||
/* xfs_dir2.c */
|
||||
extern int xfs_dir2_grow_inode(struct xfs_da_args *args, int space,
|
||||
xfs_dir2_db_t *dbp);
|
||||
|
|
Загрузка…
Ссылка в новой задаче