[lvm-devel] master - lvmetad: Wait at least 80s for the initial scan.

Hannes Reinecke hare at suse.de
Tue Mar 25 16:00:46 UTC 2014


On 03/25/2014 08:39 AM, Petr Rockai wrote:
> Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=c13f5dbb2521901f723d4c40fd5992ee0b992d8d
> Commit:        c13f5dbb2521901f723d4c40fd5992ee0b992d8d
> Parent:        65bbfdf74ddbb16579c4fa5fc76e1f51aee0da22
> Author:        Petr Rockai <prockai at redhat.com>
> AuthorDate:    Tue Mar 25 15:53:36 2014 +0100
> Committer:     Petr Rockai <prockai at redhat.com>
> CommitterDate: Tue Mar 25 16:38:35 2014 +0100
>
> lvmetad: Wait at least 80s for the initial scan.
>
> ---
>   lib/cache/lvmetad.c |   14 +++++++++-----
>   1 files changed, 9 insertions(+), 5 deletions(-)
>
> diff --git a/lib/cache/lvmetad.c b/lib/cache/lvmetad.c
> index 040a790..3ee850c 100644
> --- a/lib/cache/lvmetad.c
> +++ b/lib/cache/lvmetad.c
> @@ -142,6 +142,7 @@ static daemon_reply _lvmetad_send(const char *id, ...)
>   	daemon_reply repl;
>   	daemon_request req;
>   	int try = 0;
> +	int time = 0, wait;
>
>   retry:
>   	req = daemon_request_make(id);
> @@ -158,7 +159,7 @@ retry:
>   	daemon_request_destroy(req);
>
>   	if (!repl.error && !strcmp(daemon_reply_str(repl, "response", ""), "token_mismatch") &&
> -	    try < 60 && !test_mode()) {
> +	    try < 10 && time < 80000000 && !test_mode()) {
>   		/*
>   		 * If another process is trying to scan, they might have the
>   		 * same future token id and it's better to wait and avoid doing
> @@ -171,12 +172,15 @@ retry:
>   		 * the update, we back off for a short while (0.2-2 seconds) and
>   		 * try again.
>   		 */
> -		if (!strcmp(daemon_reply_str(repl, "expected", ""), "update in progress") || try % 5)
> -			usleep( 50000 + random() % 450000 ); /* 0.05 - 0.5s */
> -		else
> +		if (!strcmp(daemon_reply_str(repl, "expected", ""), "update in progress") || try % 5) {
> +			wait = 50000 + random() % 450000; /* 0.05 - 0.5s */
> +			time += wait;
> +			usleep( wait );
> +		} else {
>   			/* If the re-scan fails here, we try again later. */
>   			lvmetad_pvscan_all_devs(_lvmetad_cmd, NULL);
> -		++ try;
> +			++ try;
> +		}
>   		daemon_reply_destroy(repl);
>   		goto retry;
>   	}
>
Can't we have a configuration setting for this?
I can imagine plenty of scenarios where the default value might not be 
applicable, being either to short or too long.

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 lvm-devel mailing list