[sheepdog] Sheepdog initialize issue

Jinzhi Chen nxtjinzhi at gmail.com
Tue Oct 28 10:07:22 CET 2014


hi, I'm current using sheepdog v0.8.3, with journal enable
When configure with --enable-debug and start sheep with journal ,
one of sheep's thread [journal commit] goes into infinite loop in function
`trace_set_tid_map`

lib/work.c
static void trace_set_tid_map(int tid)
{
        sd_mutex_lock(&tid_map_lock);
        if (tid > tid_max) {
                size_t old_tid_max = tid_max;

                /* enlarge bitmap size */

                while (tid > tid_max)
                        tid_max *= 2;

                tid_map = alloc_bitmap(tid_map, old_tid_max, tid_max);
        }
        set_bit(tid, tid_map);
        sd_mutex_unlock(&tid_map_lock);
}

because `tid_max` is not initialized until function `wq_trace_init` which
is called
by 'create_work_queues` after journal initialize progress.

I think maybe we can just set the tid_max to TID_MAX_DEFAULT
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.wpkg.org/pipermail/sheepdog/attachments/20141028/66935ff6/attachment-0003.html>


More information about the sheepdog mailing list