Re: [PATCH 03/11] attr: don't recompute default attribute source
On 24/04/19 11:51AM, Patrick Steinhardt wrote:
Show 7 quoted lines
> The `default_attr_source()` function lazily computes the attr source
> supposedly once, only. This is done via a static variable `attr_source`
> that contains the resolved object ID of the attr source's tree. If the
> variable is the null object ID then we try to look up the attr source,
> otherwise we skip over it.
>
> This has approach is flawed though: the variable will never be set to
Show 13 quoted lines
> anything else but the null object ID in case there is no attr source.
> Consequently, we re-compute the information on every call. And in the
> worst case, when we silently ignore bad trees, this will cause us to try
> and look up the treeish every single time.
>
> Improve this by introducing a separate variable `has_attr_source` to
> track whether we already computed the attr source and, if so, whether we
> have an attr source or not.
>
> This also allows us to convert the `ignore_bad_attr_tree` to not be
> static anymore as the code will only be executed once anyway.
>
> Signed-off-by: Patrick Steinhardt <ps@pks.im>