- Journaled block device
JBD, or journaling block device, is a generic block device journaling layer in the
Linux kernel written by Stephen C. Tweedie fromRed Hat .Overview
JBD provides an abstract interface that can be used by any file systems to provide journaling. Up to date, only
ext3 ,ext4 (JBD2), andOCFS2 are known to use JBD.JBD structures
Atomic handle
An atomic handle as basically a collection of all the low-level changes that occur during a single high-level atomic update to the file system. The atomic handle guarantees that the high-level update either happens or not, because the actual changes to the file system are flushed only after logging the atomic handle in the journal.
Transaction
For the sake of efficiency and performance, JBD groups several atomic handles into a single transaction, which is written to the journal after a fixed amount of time elapses or there is no free space left on the journal to fit it.
The transaction has several states:
* Running - it means that the transaction is still live and can accept more handles
* Locked - not accepting new handles, but the existing ones are still unfinished
* Flush - the transaction is complete and is being written to the journal
* Commit - the transaction is written to the journal and now the changes are being applied to the file system
* Finished - the transaction has been fully written to the journal and the block device. It can be deleted from the journal.Recovery
Based on the transaction states, the JBD is able to determine which transactions need to be replayed (or reapplied) to the file system.
ources
* [http://kerneltrap.org/node/6741 Linux: The Journaling Block Device] (Kedar Sovani, "KernelTrap", June 20, 2006)
* Linux kernel v2.6.19.1 source
Wikimedia Foundation. 2010.