Switch xfs from using a big endian internal representation for
the in memory copy of extents to a host byte order representation.
The internal extents are read in once, then modified seperately
from the on disk ones. Since we search and manipulate the extents
multiple times, it is cheaper to convert them to host byte order
once and then keep them in that format. Worth about 5 to 10%
reduction in cpu time for some loads. Complicated by the fact
that the in memory extents are written out to the log sometimes,
and when expanding extents are used to write out the initial
block of extents.
There is no on disk format change here.
Steve
Date: Thu Oct 10 12:09:44 PDT 2002
Workarea: jen.americas.sgi.com:/src/lord/xfs-vanilla
The following file(s) were checked into:
bonnie.engr.sgi.com:/isms/slinx/2.4.x-xfs
Modid: 2.4.x-xfs:slinx:129646a
linux/fs/xfs/xfsidbg.c - 1.204
- use disk based extent functions
linux/fs/xfs/xfs_inode_item.c - 1.105
- when formating an inode item with extents in the inode, endian
flip the extents before they go out to the log. Doing this here
rather than in recovery avoids us having to version the log.
linux/fs/xfs/xfs_inode_item.h - 1.40
- extend inode_item structure to contain an attribute extents buffer
linux/fs/xfs/xfs_bmap_btree.h - 1.53
- prototypes for disk format extent functions
linux/fs/xfs/xfs_bmap_btree.c - 1.127
- define and use different bmbt functions depending on if we are
manipulating disk or host byte ordered extents. Only define the
second set of functions as different if we are on a little endian
host.
linux/fs/xfs/xfs_btree.c - 1.100
- use disk format extent functions
linux/fs/xfs/xfs_inode.c - 1.354
- in xfs_iformat_extents and xfs_iextents_copy, do endian conversion
linux/fs/xfs/xfs_inode.h - 1.172
- prototype change
linux/fs/xfs/xfs_bmap.c - 1.294
- endian flip extents when reading in from disk, and when
going from in inode extents to a leaf block of extents.
|