The first two patches are cleanups for the compaction and the second patch is updated as per Vlastimil's feedback. I didn't add his Acked-by because I have added COMPACT_SHOULD_RETRY to make the retry logic in the page allocator more robust for future changes.
Hugh has still reported this is not sufficient but I would prefer to handle the issue he is seeing in a separate patch once we understand what is going on there. The second patch sounds like a reasonable starting point to me.