From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1ffrfd-0000za-7z for mharc-grub-devel@gnu.org; Wed, 18 Jul 2018 14:59:29 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40099) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ffrfa-0000zS-CL for Grub-devel@gnu.org; Wed, 18 Jul 2018 14:59:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ffrfW-00065C-Fd for Grub-devel@gnu.org; Wed, 18 Jul 2018 14:59:26 -0400 Received: from mail-wm0-x242.google.com ([2a00:1450:400c:c09::242]:54010) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ffrfW-00064P-4L for Grub-devel@gnu.org; Wed, 18 Jul 2018 14:59:22 -0400 Received: by mail-wm0-x242.google.com with SMTP id s9-v6so3787326wmh.3 for ; Wed, 18 Jul 2018 11:59:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:subject:reply-to:to:references:openpgp:autocrypt:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=x/+PNKvuxKlpcaqjHTkf9K1flSI4fGX/gNSqlO/6WVc=; b=mMk1MZU9kEnpemSQBBzRGN+YAUw2DVnoejU/ofJxkFdjbp124/v+KKPt1jKOLNieeS enSPl0fOJ5MOhHcddRbg33OJJPZFxZ+QMzzqbczteIpNCP6LLyNWae2Zevj/XaadNMS3 yLnVZNUg9JaHGSFk6xRBdSENNNiP/MOTD6tfM13YmgWYgY3IXnteKtNHXhIo1NzrYFHS 4K5gnMcGomk0D8gbd4t0/yhkD5+LxdNJPWXItsSU1M2fl3xcf281bKxqQCGL2k+V1p+E Kq3G04Le/5s5j2TsZbUsIAYaEkJp6ec512CUNzrPZG8G81Qdvi1PwS+ox+vXuI09HguQ oVew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:subject:reply-to:to:references:openpgp :autocrypt:message-id:date:user-agent:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=x/+PNKvuxKlpcaqjHTkf9K1flSI4fGX/gNSqlO/6WVc=; b=sxcBf8UUM3MClC10hAb0BEoz+4qymUz+JQ3pS9QU3ODjP4q9GDIP/C0/aOqqVXHivv 3zZT7mbvsjOCKnLG7DwZQ2LSAZJLEat5iEBrgfjs/EbQQ1zfhx3DJW0O3Fvb9GKC+Be6 JNAnG8MmKjs36L0F+lggOct29OvTpsNKNmjwaCJTWrMrZ6PSssvqROgFH44wrqeMcr3t sVilsWioe5ZadRekY3UbfknOnS9SI2akM5O5GVwz0xUttG4c0+eJoMI/e2QcAEpocVK+ ENNdJXMlx/zWnLnyCRN9oD/lQG59mZXMW8KudhSfhy2oBIyF2o8Gwu5VhCCCEnllTLXq 2sdQ== X-Gm-Message-State: AOUpUlE6h6KkKkZc2M+cOpU/bnMan6JvUB5+YUqniDrAH6sNyJLb5YKt ReqpWZsMXsBef6Bp4Jx3NK2w5A== X-Google-Smtp-Source: AAOMgpct9bUtZN0vRFjDvPUgP3fBMauoksh8N74blkkn3U9BcUd9q/F0XsSeK9qoN1C2RgkFxI/C/Q== X-Received: by 2002:a1c:1f87:: with SMTP id f129-v6mr2228996wmf.154.1531940360394; Wed, 18 Jul 2018 11:59:20 -0700 (PDT) Received: from venice.bhome (94-38-19-11.adsl-ull.clienti.tiscali.it. [94.38.19.11]) by smtp.googlemail.com with ESMTPSA id n198-v6sm3903273wmd.33.2018.07.18.11.59.18 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 18 Jul 2018 11:59:19 -0700 (PDT) From: Goffredo Baroncelli Subject: [PATCH 4/9] btrfs: Avoid a rescan for a device which was already not found. Reply-To: kreijack@inwind.it To: The development of GNU GRUB References: <20180619173956.7356-1-kreijack@inwind.it> <72ce5fd6-c2ec-d5fb-f59d-5523e3805913@gmail.com> <20180712140218.GD7005@router-fw-old.local.net-space.pl> Openpgp: preference=signencrypt Autocrypt: addr=kreijack@gmail.com; prefer-encrypt=mutual; keydata= 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 Message-ID: <2ab1fbce-6a2c-eeef-8e65-ce0f207d1823@gmail.com> Date: Wed, 18 Jul 2018 20:59:17 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <20180712140218.GD7005@router-fw-old.local.net-space.pl> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::242 X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jul 2018 18:59:27 -0000 Resend because I forgot to put grub-devel in cc ------------------------------------------------------------- On 07/12/2018 04:02 PM, Daniel Kiper wrote: > On Tue, Jun 19, 2018 at 08:22:19PM +0200, Goffredo Baroncelli wrote: >> Forward because this patch still doesn't reach the mailing list > > Could you fix that somehow? It is confusing. I don't know which could be the problem. The only idea which I have, is that the patch #4 is the only one which was never changed; gmail prevent two equal emails to reach the inbox two times. I suspect that these two thing are related > >> -------------------------------------- >> >> If a device is not found, record this failure by storing NULL in >> data->devices_attached[]. This way we avoid unnecessary devices rescan, >> and speedup the reads in case of a degraded array. >> >> Signed-off-by: Goffredo Baroncelli >> --- >> grub-core/fs/btrfs.c | 19 +++++++++---------- >> 1 file changed, 9 insertions(+), 10 deletions(-) >> >> diff --git a/grub-core/fs/btrfs.c b/grub-core/fs/btrfs.c >> index 8d07e2d72..70bcb0fdc 100644 >> --- a/grub-core/fs/btrfs.c >> +++ b/grub-core/fs/btrfs.c >> @@ -588,7 +588,7 @@ find_device_iter (const char *name, void *data) >> } >> >> static grub_device_t >> -find_device (struct grub_btrfs_data *data, grub_uint64_t id, int do_rescan) >> +find_device (struct grub_btrfs_data *data, grub_uint64_t id) >> { >> struct find_device_ctx ctx = { >> .data = data, >> @@ -600,12 +600,9 @@ find_device (struct grub_btrfs_data *data, grub_uint64_t id, int do_rescan) >> for (i = 0; i < data->n_devices_attached; i++) >> if (id == data->devices_attached[i].id) >> return data->devices_attached[i].dev; >> - if (do_rescan) >> - grub_device_iterate (find_device_iter, &ctx); >> - if (!ctx.dev_found) >> - { >> - return NULL; >> - } >> + >> + grub_device_iterate (find_device_iter, &ctx); >> + [...] > > The commit message or code is wrong. NULL is never stored into > data->devices_attached[]. Am I missing something? The original code searches a device (using 'id' as key) in the array data->devices_attached[]; if the device is found, the device info are returned. Otherwise find_device() searches the device using grub_device_iterate(). If ctx.dev_found is NULL, the device is not found and the function returns NULL. Otherwise find_device() stores the pair "ctx.dev_found" and "id" in data->devices_attached[] array for further searches. Finally find_device() returns the value found. My patch removes the check: if the device is not found, find_devices() stores the pair "NULL" and "id". So data->devices_attached[] array acts as cache both for the "founded" and "not founded" devices. > > Daniel > > _______________________________________________ > Grub-devel mailing list > Grub-devel@gnu.org > https://lists.gnu.org/mailman/listinfo/grub-devel > -- gpg @keyserver.linux.it: Goffredo Baroncelli Key fingerprint BBF5 1610 0B64 DAC6 5F7D 17B2 0EDA 9B37 8B82 E0B5