Files
scoutfs/kmod
Zach Brown 7b18bce2e2 scoutfs: use buffer heads
Now that we have a fixed small block size we don't need our own code for
tracking contiguous memory for blocks that are larger than the page
size.  We can use buffer heads which support block sizes smaller than
the page size.

Our block API remains to enforce transactions, cheksumming, cow, and
eventually invalidating and retrying reads of stale bloks.

We set the logical blocksize of the bdev buffer cache to our fixed block
size.  We use a private bh state bit to indicate that the contents of a
block have had their checksum verified.  We use a small structure stored
at b_private to track dirty blocks so that we can control when they're
written.

The btree block traversal code uses the buffer_head lock to serialize
access to btree block contents now that the block rwsem has gone
away.  This isn't great but works for now.

Not being able to relocate blocks in the buffer cache (really fragments
of pages in the bdev page cache.. blkno determines memory location)
means that the cow path always has to copy.

Callers are easily translated: use struct buffer_head instead of
scoutfs_block and use a little helper instead of dereferencing ->data
directly.

I took the opportunity to clean up some of the inconsistent block
function names.  Now more of the functions follow the scoutfs_block_*()
pattern.

Signed-off-by: Zach Brown <zab@versity.com>
2016-08-02 13:28:08 -07:00
..
2016-08-02 13:28:08 -07:00
2016-03-24 21:45:08 -07:00