From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hannes Reinecke Date: Tue, 25 Mar 2014 09:00:46 -0700 Subject: master - lvmetad: Wait at least 80s for the initial scan. In-Reply-To: <20140325153912.1E68F60DAA@fedorahosted.org> References: <20140325153912.1E68F60DAA@fedorahosted.org> Message-ID: <5331A82E.5000906@suse.de> List-Id: To: lvm-devel@redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 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 > AuthorDate: Tue Mar 25 15:53:36 2014 +0100 > Committer: Petr Rockai > 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)