[Dnode] Table driven method to init and cleanup dnode components.
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?
Showing
想要评论请 注册 或 登录