[dm-devel] [PATCH 42/42] multipathd: lock vectors during initial configuration

Hannes Reinecke hare at suse.de
Wed Jan 9 07:01:17 UTC 2013


On 01/09/2013 12:37 AM, Christophe Varoqui wrote:
> On mar., 2013-01-08 at 14:54 +0100, Hannes Reinecke wrote:
>> During initial configuration the CLI thread is already running,
>> so we need to lock the vectors here to not race with the
>> 'reconfigure' CLI command.
>>
> Are you sure of the 41 - 42 patches ?
>
> - 41 moves the vecs locking from reconfigure caller to reconfigure
> - 42 removes the locking from reconfigure
>
> Regards,
> Christophe Varoqui
> www.opensvc.com
>
>> Signed-off-by: Hannes Reinecke <hare at suse.de>
>> ---
>>   multipathd/main.c |    4 +---
>>   1 files changed, 1 insertions(+), 3 deletions(-)
>>
>> diff --git a/multipathd/main.c b/multipathd/main.c
>> index 395307e..8917499 100644
>> --- a/multipathd/main.c
>> +++ b/multipathd/main.c
>> @@ -1389,7 +1389,6 @@ reconfigure (struct vectors * vecs)
>>   	struct config * old = conf;
>>   	int retval = 1;
>>
>> -	lock(vecs->lock);
>>   	/*
>>   	 * free old map and path vectors ... they use old conf state
>>   	 */
>> @@ -1410,7 +1409,6 @@ reconfigure (struct vectors * vecs)
>>   		retval = 0;
>>   	}
>>
>> -	unlock(vecs->lock);
>>   	return retval;
>>   }
>>
>> @@ -1641,9 +1639,9 @@ child (void * param)
>>   	/*
>>   	 * fetch and configure both paths and multipaths
>>   	 */
>> -	lock(vecs->lock);
>>   	running_state = DAEMON_CONFIGURE;
>>
>> +	lock(vecs->lock);
>>   	if (configure(vecs, 1)) {
>>   		unlock(vecs->lock);
>>   		condlog(0, "failure during configuration");
>
>
>
Yes.

Problem is we're already taking the lock prior to running any CLI
commands in multipathd/main.c:uxsock_trigger().
So we cannot take the lock in reconfigure().

We also should not take the lock from the interrupt handler,
as we might be in god knows which state.

If you're bothered by this I'd rather remove the SIGHUP signal 
handler; we can achieve very much the same with the 'reconfigure'
CLI command.

Cheers,

Hannes
-- 
Dr. Hannes Reinecke		      zSeries & Storage
hare at suse.de			      +49 911 74053 688
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: J. Hawn, J. Guild, F. Imendörffer, HRB 16746 (AG Nürnberg)




More information about the dm-devel mailing list