Jeremy Jackson wrote:
Is there anything in the new 2.6 bio and queueing code that could
replace pagebufs entirely? That would seem ideal.
They are at a different level, bio's are a mechanism for
reading and writing from block devices, pagebufs are the
units of caching and locking metadata in xfs. Pagebufs
are pushed on and off disk using bio's in 2.6
The tricky part of xfs on linux is that not all the metadata
is the same size, and some is larger than a page. xfs needs to
be able to lock metadata, prevent it from being flushed to
disk at certain times, and look it up in these chunks rather
than in pages or in even subunits of a page. This is why
pagebuf exists.
Note that the blockdev mapping and the xfs metadata are the same
memory, its just they do not cooperate on the locking correctly,
so if you access both at once, you end up trashing on or the other.
Steve
|