diff options
author | Christoph Hellwig <hch@lst.de> | 2011-07-08 08:35:42 -0400 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2011-07-08 08:35:42 -0400 |
commit | 0ba9cd84ef2af58645333a86f9c901684ab1fef6 (patch) | |
tree | 0c25f43b83bb77ceb44cf29d207a295ac0b77b31 /fs/xfs/xfs_dir2_data.c | |
parent | c2066e2662070e794f57a96a129c42575e77cfcb (diff) |
xfs: kill struct xfs_dir2_data
Remove the confusing xfs_dir2_data structure. It is supposed to describe
an XFS dir2 data btree block, but due to the variable sized nature of
almost all elements in it it can't actuall do anything close to that
job. In addition to accessing the fixed offset header structure it was
only used to get a pointer to the first dir or unused entry after it,
which can be trivially replaced by pointer arithmetics on the header
pointer. For most users that is actually more natural anyway, as they
don't use a typed pointer but rather a character pointer for further
arithmetics.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Alex Elder <aelder@sgi.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Diffstat (limited to 'fs/xfs/xfs_dir2_data.c')
-rw-r--r-- | fs/xfs/xfs_dir2_data.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/fs/xfs/xfs_dir2_data.c b/fs/xfs/xfs_dir2_data.c index 2bbc21696944..8e47ac3a3b9d 100644 --- a/fs/xfs/xfs_dir2_data.c +++ b/fs/xfs/xfs_dir2_data.c | |||
@@ -53,7 +53,6 @@ xfs_dir2_data_check( | |||
53 | xfs_dir2_data_free_t *bf; /* bestfree table */ | 53 | xfs_dir2_data_free_t *bf; /* bestfree table */ |
54 | xfs_dir2_block_tail_t *btp=NULL; /* block tail */ | 54 | xfs_dir2_block_tail_t *btp=NULL; /* block tail */ |
55 | int count; /* count of entries found */ | 55 | int count; /* count of entries found */ |
56 | xfs_dir2_data_t *d; /* data block pointer */ | ||
57 | xfs_dir2_data_hdr_t *hdr; /* data block header */ | 56 | xfs_dir2_data_hdr_t *hdr; /* data block header */ |
58 | xfs_dir2_data_entry_t *dep; /* data entry */ | 57 | xfs_dir2_data_entry_t *dep; /* data entry */ |
59 | xfs_dir2_data_free_t *dfp; /* bestfree entry */ | 58 | xfs_dir2_data_free_t *dfp; /* bestfree entry */ |
@@ -70,10 +69,9 @@ xfs_dir2_data_check( | |||
70 | struct xfs_name name; | 69 | struct xfs_name name; |
71 | 70 | ||
72 | mp = dp->i_mount; | 71 | mp = dp->i_mount; |
73 | d = bp->data; | 72 | hdr = bp->data; |
74 | hdr = &d->hdr; | ||
75 | bf = hdr->bestfree; | 73 | bf = hdr->bestfree; |
76 | p = (char *)d->u; | 74 | p = (char *)(hdr + 1); |
77 | 75 | ||
78 | if (be32_to_cpu(hdr->magic) == XFS_DIR2_BLOCK_MAGIC) { | 76 | if (be32_to_cpu(hdr->magic) == XFS_DIR2_BLOCK_MAGIC) { |
79 | btp = xfs_dir2_block_tail_p(mp, hdr); | 77 | btp = xfs_dir2_block_tail_p(mp, hdr); |
@@ -336,7 +334,6 @@ xfs_dir2_data_freescan( | |||
336 | xfs_dir2_data_hdr_t *hdr, /* data block header */ | 334 | xfs_dir2_data_hdr_t *hdr, /* data block header */ |
337 | int *loghead) /* out: log data header */ | 335 | int *loghead) /* out: log data header */ |
338 | { | 336 | { |
339 | xfs_dir2_data_t *d = (xfs_dir2_data_t *)hdr; | ||
340 | xfs_dir2_block_tail_t *btp; /* block tail */ | 337 | xfs_dir2_block_tail_t *btp; /* block tail */ |
341 | xfs_dir2_data_entry_t *dep; /* active data entry */ | 338 | xfs_dir2_data_entry_t *dep; /* active data entry */ |
342 | xfs_dir2_data_unused_t *dup; /* unused data entry */ | 339 | xfs_dir2_data_unused_t *dup; /* unused data entry */ |
@@ -355,7 +352,7 @@ xfs_dir2_data_freescan( | |||
355 | /* | 352 | /* |
356 | * Set up pointers. | 353 | * Set up pointers. |
357 | */ | 354 | */ |
358 | p = (char *)d->u; | 355 | p = (char *)(hdr + 1); |
359 | if (be32_to_cpu(hdr->magic) == XFS_DIR2_BLOCK_MAGIC) { | 356 | if (be32_to_cpu(hdr->magic) == XFS_DIR2_BLOCK_MAGIC) { |
360 | btp = xfs_dir2_block_tail_p(mp, hdr); | 357 | btp = xfs_dir2_block_tail_p(mp, hdr); |
361 | endp = (char *)xfs_dir2_block_leaf_p(btp); | 358 | endp = (char *)xfs_dir2_block_leaf_p(btp); |
@@ -398,7 +395,6 @@ xfs_dir2_data_init( | |||
398 | xfs_dabuf_t **bpp) /* output block buffer */ | 395 | xfs_dabuf_t **bpp) /* output block buffer */ |
399 | { | 396 | { |
400 | xfs_dabuf_t *bp; /* block buffer */ | 397 | xfs_dabuf_t *bp; /* block buffer */ |
401 | xfs_dir2_data_t *d; /* pointer to block */ | ||
402 | xfs_dir2_data_hdr_t *hdr; /* data block header */ | 398 | xfs_dir2_data_hdr_t *hdr; /* data block header */ |
403 | xfs_inode_t *dp; /* incore directory inode */ | 399 | xfs_inode_t *dp; /* incore directory inode */ |
404 | xfs_dir2_data_unused_t *dup; /* unused entry pointer */ | 400 | xfs_dir2_data_unused_t *dup; /* unused entry pointer */ |
@@ -424,8 +420,7 @@ xfs_dir2_data_init( | |||
424 | /* | 420 | /* |
425 | * Initialize the header. | 421 | * Initialize the header. |
426 | */ | 422 | */ |
427 | d = bp->data; | 423 | hdr = bp->data; |
428 | hdr = &d->hdr; | ||
429 | hdr->magic = cpu_to_be32(XFS_DIR2_DATA_MAGIC); | 424 | hdr->magic = cpu_to_be32(XFS_DIR2_DATA_MAGIC); |
430 | hdr->bestfree[0].offset = cpu_to_be16(sizeof(*hdr)); | 425 | hdr->bestfree[0].offset = cpu_to_be16(sizeof(*hdr)); |
431 | for (i = 1; i < XFS_DIR2_DATA_FD_COUNT; i++) { | 426 | for (i = 1; i < XFS_DIR2_DATA_FD_COUNT; i++) { |
@@ -436,7 +431,7 @@ xfs_dir2_data_init( | |||
436 | /* | 431 | /* |
437 | * Set up an unused entry for the block's body. | 432 | * Set up an unused entry for the block's body. |
438 | */ | 433 | */ |
439 | dup = &d->u[0].unused; | 434 | dup = (xfs_dir2_data_unused_t *)(hdr + 1); |
440 | dup->freetag = cpu_to_be16(XFS_DIR2_DATA_FREE_TAG); | 435 | dup->freetag = cpu_to_be16(XFS_DIR2_DATA_FREE_TAG); |
441 | 436 | ||
442 | t = mp->m_dirblksize - (uint)sizeof(*hdr); | 437 | t = mp->m_dirblksize - (uint)sizeof(*hdr); |