Goldwyn Rodrigues
2010-Oct-08 19:03 UTC
[Ocfs2-devel] Question: recovery map vs replay map
I was reading through the recovery code and got confused with recovery and replay maps. What is the function of recovery maps and replay maps? Is a replay map generated for each entry in the recovery map? Is there a situation where a replay map is created without a recovery map entry? Thanks, -- Goldwyn
On 10/08/2010 12:03 PM, Goldwyn Rodrigues wrote:> I was reading through the recovery code and got confused with recovery > and replay maps. > > What is the function of recovery maps and replay maps? Is a replay map > generated for each entry in the recovery map? Is there a situation > where a replay map is created without a recovery map entry? >During recovery, we need to recover the slot used by the dead node (including journal replay) and clean up the unused orphaned inodes. The recovery map refers to the nodes whose slot needs recovery. The replay map (confusing name, in hindsight) refers to unused slots whose orphaned inodes need to be cleaned up. Consider the case of a 4 node cluster having nodes 0, 1, 2, 3. Say node 0 removes a file that is in-use on node 1. Node 0 will move the inode to its orphan directory. Then say it umounts. At this stage, say node 1 dies. One of the surviving nodes will recover the node 1's slot. That includes replaying its journal and cleaning up its orphan directory. But what about the orphan directory that node 0 used that has that inode that was in use on node 1. That needs to be cleaned up too. The replay map, populated with unused slots, will contain the slot used by node 0. Yes, this code is now superfluous since we now have a orphan scan timer that fires periodically to clean up the inodes for all slots. Sunil