<HTML><BODY><div><blockquote style="border-left:1px solid #0857A6; margin:10px; padding:0 0 0 10px;">Вторник, 22 декабря 2020, 16:28 +03:00 от Vladislav Shpilevoy <v.shpilevoy@tarantool.org>:<br> <div id=""><div class="js-helper js-readmsg-msg"><div><div id="style_16086437120800875225_BODY">> Also I don't understand why can't you do that on the slab arena<div class="mail-quote-collapse">> level. Start allocating only 'huge' slabs if the quota is full, but<br>> disabled.<br>><br>> Yes, allocation in case of out of quota can be done on more<br>> internal level.<br>> But the problem is exactly in freeing you mentioned further.<br>> We need to free in the right way: If we are allocating with<br>> mempool, we need to use mempool_find() properly, while<br>> if we are allocating ‘huge’ slab, we need to free it accordingly.<br>> So the information about the allocation has to be stored<br>> somehow in case we are going to alter it depending on the<br>> current state. I don’t see convenient place where we can store<br>> it, looks like it will be even worse to store such information<br>> in struct tuple itself.</div><br>I don't understand why do you need to store any info. Huge slabs<br>existed and were freed before your patch, and all worked fine here.<br>How are they found and freed with quota enabled?</div></div></div></div></blockquote></div><div>Proper huge slabs are actually huge and mempool_find() thus</div><div>returns NULL for them and they are freed properly. Here we are</div><div>allocating «huge» slabs of the size which is the size of actual</div><div>truncate tuples, and it is not really huge. Thus we need specific</div><div>info to free it in the right way.</div><div> </div><div><div> </div><div data-signature-widget="container"><div data-signature-widget="content"><div>--<br>Ilya Kosarev</div></div></div><div> </div></div></BODY></HTML>