xfs
[Top] [All Lists]

[PATCH 0/8] xfs: clean up unit usage in xfs_buf V2

To: xfs@xxxxxxxxxxx
Subject: [PATCH 0/8] xfs: clean up unit usage in xfs_buf V2
From: Dave Chinner <david@xxxxxxxxxxxxx>
Date: Thu, 29 Mar 2012 23:23:47 +1100
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.

<Prev in Thread] Current Thread [Next in Thread>