• Y
    [Dnode] Table driven method to init and cleanup dnode components. · e0613436
    yifan hao 提交于
    This patch refactors the initialization and cleanup path of dnode
    with a table driven method. This fixes the following issues:
    
    1. Before the patch, if dnodeInitRead() fails, the cleanup path
    also runs dnodeCleanupWrite(), which will free wWorkerPool.writeWorker that's
    never allocated. (The code before this patch will not crash though, because
    wWorkerPool is zero-initialized global variable and therefore the
    accidental free will be a nop).
    2. In general the order of calling cleanup function should be reverse
    to the order of calling init function, but this is not the case prior
    to this patch (see dnodeCleanupMnode() and dnodeCleanupMgmt()).
    
    * Bonus fix
    This patch also fixes a missing free for readPool.readWorker.
    
    * Testing
    I plan to run the test script ./test-all.sh, but was not able to do so.
    Is there a reference somewhere I can look up?
    e0613436
dnodeModule.c 4.1 KB