• Vivek Goyal's avatar
    virtiofs: add logic to free up a memory range · 9a752d18
    Vivek Goyal authored
    Add logic to free up a busy memory range. Freed memory range will be
    returned to free pool. Add a worker which can be started to select
    and free some busy memory ranges.
    
    Process can also steal one of its busy dax ranges if free range is not
    available. I will refer it to as direct reclaim.
    
    If free range is not available and nothing can't be stolen from same
    inode, caller waits on a waitq for free range to become available.
    
    For reclaiming a range, as of now we need to hold following locks in
    specified order.
    
    	down_write(&fi->i_mmap_sem);
    	down_write(&fi->dax->sem);
    
    We look for a free range in following order.
    
    A. Try to get a free range.
    B. If not, try direct reclaim.
    C. If not, wait for a memory range to become free
    Signed-off-by: default avatarVivek Goyal <vgoyal@redhat.com>
    Signed-off-by: default avatarLiu Bo <bo.liu@linux.alibaba.com>
    Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
    9a752d18
dax.c 35.2 KB