[Linux-cluster] F_SETLK fails after recovery

Neale Ferguson neale at sinenomine.net
Tue Sep 2 15:24:19 UTC 2014


Forget the snippet of code in my original posting as the code in 3.0.12-60 actually looks like this:

        if (nodes_added(ls)) {
                store_plocks(ls, &sig);
                ls->last_plock_sig = sig;
        } else {
                sig = ls->last_plock_sig;
        }
        send_plocks_stored(ls, sig);

So sig is never uninitialized. However, the question still remains - node 2 disables plocks for node 1. How are the supposed to be re-enabled?

Neale

On Sep 2, 2014, at 11:04 AM, Bob Peterson <rpeterso at redhat.com> wrote:

> ----- Original Message -----
>> 
>> Looking at the cpg.c:
>> 
>> static void prepare_plocks(struct lockspace *ls)
>> {
>> 
>> struct change *cg = list_first_entry(&ls->changes, struct change, list);
>> 
>> struct member *memb;
>> uint32_t sig;
>> 
>> :
>> :
>> :
>>      if (nodes_added(ls))
>>            store_plocks(ls, &sig);
>>      send_plocks_stored(ls, sig);
>> }
>> 
>> If nodes_added(ls) returns false then an uninitialized "sig" value will be
>> passed to send_plocks_stored(). Do the "our sig" and "sig" values in the
>> above log messages make sense?
>> 
>> If this is not the case, what is supposed to happen in order re-enable plocks
>> on the recovered node?




More information about the Linux-cluster mailing list