Did you modify Claudio's patch or write a totally new one?
I wrote completely new patch. I tried multiple techniques like using a list instead of fixed size array which I thought was most suitable here, but leave that because of conflict with Parallel Vacuum.
In either case, why did you choose that approach?
This is the simplest technique. I just divided the maintenance_work_mem in chunks and allocate chunks as needed. This technique change minimum code and do what we want to achieve.
If you wrote a totally new one, have you compared your work with Claudio's, to see if he covered anything you might need to cover?
No, this part I missed, I will do that and will share my thoughts.
Please explain why your patch is better/different than his.