Re: [PATCH] z3fold: the 3-fold allocator for compressed pages

From: Vitaly Wool
Date: Thu Apr 14 2016 - 14:21:42 EST


>> On Thu, Apr 14, 2016 at 5:53 PM, Seth Jennings <sjenning@xxxxxxxxxx> wrote:

<snip>
>>> This also means that the unbuddied list is broken in this
>>> implementation. num_free_chunks() is calculating the _total_ free
>>> space in the page. But that is not that the _usable_ free space by a
>>> single object, if the middle object has partitioned that free space.
>>
>> Once again, there is the code in z3fold_free() that makes sure the
>> free space within the page is contiguous so I don't think the
>> unbuddied list is, or will be, broken.
>
> Didn't see the relocation before. However, that brings up another
> question. How is the code moving objects when the location of that
> object is encoded in the handle that has already been given to the
> user?

Relocation is only necessary when there is one remaining object and it
is in the middle. In that case the 'first_num' variable is incremented
so its handle already given to user will be resolved as the first
object and not the middle.

~vitaly