Wei Wang wrote: > > But passing GFP_NOWAIT means that we can handle allocation failure. There is > > no need to use preload approach when we can handle allocation failure. > > I think the reason we need xb_preload is because radix tree insertion > needs the memory being preallocated already (it couldn't suffer from > memory failure during the process of inserting, probably because > handling the failure there isn't easy, Matthew may know the backstory of > this) According to https://lwn.net/Articles/175432/ , I think that preloading is needed only when failure to insert an item into a radix tree is a significant problem. That is, when failure to insert an item into a radix tree is not a problem, I think that we don't need to use preloading. > > So, I think we can handle the memory failure with xb_preload, which > stops going into the radix tree APIs, but shouldn't call radix tree APIs > without the related memory preallocated. It seems to me that virtio-ballon case has no problem without using preloading.