This series cleans up the buffer cache API to use daddr formats for block numbers and basic blocks for lengths when trying to get or read a buffer and from there cleans up the internal usage of the same thing. Essentially we end up with tracking buffers by their daddr blkno, and BB based length, including the length of the IO needed to do out of the buffer. The b_offset field is still in bytes, as that is mostly used as a byte offset into the allocated memory that the buffer holds, rather than a disk based offset. Version 2: - new patch 1, fixes hang in log reading code when trying to find the head and IO dispatch returns EIO. Generic fix for the same problem for all IO dispatched via xfsbdstrat() and then waited on via xfs_buf_iowait(). - new patch 2, fixes EIO during IO dispatch reading uncached buffers when page size unaligned, subpage-sized multi-block buffers are incorrectly required to need multiple pages due to invalid b_offset. This was triggered by log recovery when finding the head of the log, and caused the hang fixed in patch 1. Problem was reliably triggered by patch 5, though there is no obvious reason that I can find for any of those changes to have tripped over this landmine. - new patch 3, clean, noticed when trying to work out why b_offset wasn't zero find the problem fixed in patch 2. - patch 4-7, updated according to Christoph's comments - new patch 8, kills the xfs_buf_btoc (and related) macros as suggested by Christoph. _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs