How do pdflush, kjournald, swapd, etc interoperate?
Recently saw a question that sparked this thought. Couldn’t really find an answer here or via the Google machine. Basically, I’m interested in knowing how the kernel I/O architecture is layered. For example, does kjournald
dispatch to pdflush
or the other way around? My assumption is that pdflush
(being more generic to mass storage I/O) would sit at a lower level and trigger the SCSI/ATA/whatever commands necessary to actually perform the writes, and kjournald
handles higher level filesystem data structures before writing. I could see it the other way around as well, though, with kjournald
directly interfacing with the filesystem data structures and pdflush
waking up every now and then to write dirty pagecache pages to the device through kjournald
. It’s also possible that the two don’t interact at all for some other reason.