[Ocfs2-devel] ocfs2: Question for ocfs2_recovery_thread

shencanquan shencanquan at huawei.com
Thu May 23 02:37:14 PDT 2013


On 2013/5/23 7:00, Sunil Mushran wrote:
> True. The function could do with a little bit of cleanup. Feel free to 
> send a patch.

  from ocfs2 code , I don't found that dlm_recovery_thread always prior to
ocfs2_recovery_thread? please tell me,thanks.
>
>
> On Sun, May 19, 2013 at 7:49 PM, Joseph Qi <joseph.qi at huawei.com 
> <mailto:joseph.qi at huawei.com>> wrote:
>
>     On 2013/5/19 10:25, Joseph Qi wrote:
>     > On 2013/5/18 21:26, Sunil Mushran wrote:
>     >> The first node that gets the lock will do the actual recovery.
>     The others will get the lock and see a clean journal and skip the
>     recovery. A thread should never error out if it fails to get the
>     lock. It should try and try again.
>     >>
>     >> On May 17, 2013, at 11:27 PM, Joseph Qi <joseph.qi at huawei.com
>     <mailto:joseph.qi at huawei.com>> wrote:
>     >>
>     >>> Hi,
>     >>> Once there is node down in the cluster, ocfs2_recovery_thread
>     will be
>     >>> triggered on each node. These threads then do the down node
>     recovery by
>     >>> get super lock.
>     >>> I have several questions on this:
>     >>> 1) Why each node has to run such a thread? We know at last one
>     node can
>     >>> get the super lock and do the actual recovery.
>     >>> 2) If this thread is running but something error occurred, take
>     >>> ocfs2_super_lock failed for example, the thread will exit without
>     >>> clearing recovery map, will it cause other threads still
>     waiting for
>     >>> recovery in ocfs2_wait_for_recovery?
>     >>>
>     >>
>     >>
>     > But when error occurs and goes to bail, and the restart logic
>     will not
>     > run. Codes like below:
>     > ...
>     >       status = ocfs2_wait_on_mount(osb);
>     >       if (status < 0) {
>     >               goto bail;
>     >       }
>     >
>     >       rm_quota = kzalloc(osb->max_slots * sizeof(int), GFP_NOFS);
>     >       if (!rm_quota) {
>     >               status = -ENOMEM;
>     >               goto bail;
>     >       }
>     > restart:
>     >       status = ocfs2_super_lock(osb, 1);
>     >       if (status < 0) {
>     >               mlog_errno(status);
>     >               goto bail;
>     >       }
>     > ...
>     >       if (!status && !ocfs2_recovery_completed(osb)) {
>     >               mutex_unlock(&osb->recovery_lock);
>     >               goto restart;
>     >       }
>     >
>     >
>     > _______________________________________________
>     > Ocfs2-devel mailing list
>     > Ocfs2-devel at oss.oracle.com <mailto:Ocfs2-devel at oss.oracle.com>
>     > https://oss.oracle.com/mailman/listinfo/ocfs2-devel
>     >
>     >
>     One more question, do we make sure dlm_recovery_thread always prior to
>     ocfs2_recovery_thread?
>
>
>
>
> _______________________________________________
> Ocfs2-devel mailing list
> Ocfs2-devel at oss.oracle.com
> https://oss.oracle.com/mailman/listinfo/ocfs2-devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://oss.oracle.com/pipermail/ocfs2-devel/attachments/20130523/42aef9be/attachment.html 


More information about the Ocfs2-devel mailing list