blktrace and xfs_db block offset mismatch
Sushma R
gsushma at gmail.com
Sat Sep 27 10:40:29 CDT 2014
Thanks Brian.
I'm trying to understand how the internal XFS structures affect this
mapping (http://oss.sgi.com/projects/xfs/papers/xfs_filesystem_structure.pdf
)
xfs_bmap on the file matches that reported by extents in the file inode
using xfs_db.
Other conversions under xfs_db
xfs_db> convert fsb 2621481 agno
0x0 (0)
xfs_db> convert fsb 2621481 agbno
0x280029 (2621481)
xfs_db> convert fsb 2621481 daddr
0x1400148 (20971848)
I tried dd command with directio option and still blktrace reports the same
raw block number as earlier.
8,17 3 1 0.000000000 6999 D R 20973896 + 1 [dd]
I'm using xfs_db with the partition i.e. "xfs_db -r /dev/sdb1"
However, if I use it on the whole disk "xfs_db -r /dev/sdb", it gives the
following error
xfs_db: cannot init perag data (117)
Does this suggest something?
Thanks,
Sushma
On Sat, Sep 27, 2014 at 7:38 AM, Brian Foster <bfoster at redhat.com> wrote:
> On Sat, Sep 27, 2014 at 12:32:21AM -0700, Sushma R wrote:
> > Hi,
> >
> > I ran blktrace while reading a file on XFS partition and here's it's
> output.
> >
> > 8,17 3 1 22.065944956 5489 D R 20973896 + 8 [cat]
> >
> > Using xfs_db, I dumped the inode for the same file and it shows the
> > following as its data extents.
> >
> > u.bmx[0] = [startoff,startblock,blockcount,extentflag] 0:[0,2621481,1,0]
> >
> > I understand that blktrace reports in 512-byte sectors while xfs_db in
> > filesystem block size (which is the default 4KB on my setup).
> > Converting blktrace offset to fs block = 2621737 which is close to the
> data
> > extent startblock (2621481), but still off by 256 fs blocks.
> >
> > Could someone please help understand the reason for this mismatch?
> >
>
> I believe you are comparing a raw read of a device to an internal XFS
> fsb, the latter of which is encoded to account for the internal
> structure of XFS (e.g., allocation groups). You might want to take a
> look at xfs_bmap on the file to see the actual disk blocks.
>
> The fsb to daddr conversion depends on the geometry of the fs, but you
> can get the various values with xfs_db as well. E.g.:
>
> convert fsb 2621481 agno # ag number
> convert fsb 2621481 agbno # relative ag block nr
> convert fsb 2621481 daddr # disk address
>
> Also, I'm not familiar enough with blktrace output off the top of my
> head so perhaps not an issue, but it's not clear to me whether the
> output above could have been converted/adjusted to a raw address based
> on a device partition.
>
> You might also want to verify you're looking at the actual file read vs.
> a directory/inode lookup or block mapping lookup or something else. I
> see you're running cat, a direct I/O read via dd might ensure you aren't
> just pulling file data from cache.
>
> Brian
>
> > Thanks,
> > Sushma
>
> > _______________________________________________
> > xfs mailing list
> > xfs at oss.sgi.com
> > http://oss.sgi.com/mailman/listinfo/xfs
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://oss.sgi.com/pipermail/xfs/attachments/20140927/477d7013/attachment.html>
More information about the xfs
mailing list