Revision tags: v6.2.1, v6.2.0, v6.3.0, v6.0.1, v6.0.0, v6.0.0rc1, v6.1.0, v5.8.3, v5.8.2, v5.8.1, v5.8.0, v5.9.0, v5.8.0rc1, v5.6.3, v5.6.2, v5.6.1, v5.6.0, v5.6.0rc1, v5.7.0, v5.4.3, v5.4.2, v5.4.1, v5.4.0, v5.5.0, v5.4.0rc1, v5.2.2, v5.2.1, v5.2.0, v5.3.0, v5.2.0rc, v5.0.2, v5.0.1, v5.0.0, v5.0.0rc2, v5.1.0, v5.0.0rc1, v4.8.1, v4.8.0, v4.6.2, v4.9.0, v4.8.0rc, v4.6.1, v4.6.0, v4.6.0rc2, v4.6.0rc, v4.7.0, v4.4.3, v4.4.2, v4.4.1, v4.4.0, v4.5.0, v4.4.0rc, v4.2.4, v4.3.1, v4.2.3, v4.2.1, v4.2.0, v4.0.6, v4.3.0, v4.2.0rc, v4.0.5, v4.0.4, v4.0.3, v4.0.2, v4.0.1, v4.0.0, v4.0.0rc3, v4.0.0rc2, v4.0.0rc, v4.1.0, v3.8.2, v3.8.1, v3.6.3, v3.8.0, v3.8.0rc2, v3.9.0, v3.8.0rc, v3.6.2, v3.6.1, v3.6.0, v3.7.1, v3.6.0rc, v3.7.0, v3.4.3, v3.4.2, v3.4.0, v3.4.1, v3.4.0rc, v3.5.0, v3.2.2, v3.2.1, v3.2.0, v3.3.0, v3.0.3, v3.0.2, v3.0.1 |
#
db71f61f |
| 14-Feb-2012 |
Matthew Dillon <dillon@apollo.backplane.com> |
hammer2 - clean-up the chain code, first cut at the read/write/strategy code
* Do a major cleanup of the hammer2_chain handling code.
We no longer kmalloc() a local copy when a chain element is m
hammer2 - clean-up the chain code, first cut at the read/write/strategy code
* Do a major cleanup of the hammer2_chain handling code.
We no longer kmalloc() a local copy when a chain element is modified.
Instead we differentiate elements whos data is embedded (volume header, inodes) vs elements whos data is mapped to a buffer cache buffer (indirect blocks and data).
Elements with embedded data simply leave the data pointer pointing at the embedded data as before.
Elements without embedded data instantiate the newly allocated copy-on-write buffer cache buffer and bcopy() the data from the old buffer to the new buffer, replacing chain->bp and the chain->data pointer. The new bp is dirtied.
The modified data no longer needs to be retained when the chain elmeent is released, we bdwrite() the bp and thus can reinstantiate the modified data at any time in the future. This also allows the system to flush the modified data out.
* Implement hammer2_vop_read(), hammer2_vop_write(), and hammer2_vop_strategy().
Currently untested (files cannot be created yet), but fairly straight-forward. Definitely also not optimized yet.
show more ...
|