On 12/18/20 4:26 AM, Nikolay Borisov wrote:
On 17.12.20 г. 16:36 ч., Josef Bacik wrote:
This was added a very long time ago to work around issues with delayed
refs and with qgroups. Both of these issues have since been properly
fixed, so all this does is cause a lot of lock contention with anybody
else who is running delayed refs.
Signed-off-by: Josef Bacik <[email protected]>
Codewise it's ok, however I would have liked a better reference to the 2
problems being fixed, I'd assume same applies to David. SO it seems the
first delayed refs run was added due to :
361048f586f5 ("Btrfs: fix full backref problem when inserting shared
block reference") and the 2nd one by d67263354541 ("btrfs: qgroup: Make
snapshot accounting work with new extent-oriented qgroup.")
However there is no indication what code superseded the need for those 2
commits.
For 361048f586f5 it's because we now do #2 as described in that commit, which is
to make sure we insert the actual extent entry first, and then deal with all
subsequent extent reference modifications. The delayed refs code was quite
fragile before, but we've gotten it into a good spot now so we no longer have
this class of issues.
And you bring up a good point for the second one, now that I look at the code.
It appeared to me at first glance that the qgroup stuff had been reworked to no
longer require the delayed refs flush, but it still does require it, so I'll
rework this to move it into the appropriate helper and I'll update this commit
message. Thanks,
Josef