On Wed, Sep 26, 2018 at 09:55:54PM +0200, Goffredo Baroncelli wrote: > On 25/09/2018 19.29, Daniel Kiper wrote: > > On Wed, Sep 19, 2018 at 08:40:35PM +0200, Goffredo Baroncelli wrote: > >> From: Goffredo Baroncelli <kreij...@inwind.it> > >> > >> If a device is not found, do not return immediately but > >> record this failure by storing NULL in data->devices_attached[]. > > > > Still the same question: Where the store happens in the code? > > I cannot find it in the patch below. This have to be clarified. > > > > Daniel > > > What about the following commit description > --------------------------------------------- > Change the behavior of find_device(): before the patch, a read of a > missed device might trigger a rescan. However, it is never recorded
s/might/may/ > that a device is missed, so each single read of a missed device might > triggers a rescan. It is the caller who decides if a rescan is > performed in case of a missed device. And it does quite often, without > considering if in the past a devices was already found as "missed" > This behavior causes a lot of unneeded rescan, causing a huge slowdown > in case of a missed device. > > After the patch, the "missed device" information is stored in the > cache (as a NULL value). A rescan is triggered only if no information What do you mean by "cache"? ctx.dev_found? If yes please use latter instead of former. Or both together if it makes sense. > at all is found in the cache. This means that only the first time a > read of a missed device triggers a rescan. > > The change in the code is done removing "return NULL" when the disk is > not found. So it is always executed the code which stores in the cache cache? > the value returned by grub_device_iterate(): NULL if the device is > missed, or a valid data otherwise. > --------------------------------------------- Otherwise it is much better than earlier one. Daniel _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel