• Vivek Goyal's avatar
    virtiofs: Count pending forgets as in_flight forgets · c17ea009
    Vivek Goyal authored
    
    
    If virtqueue is full, we put forget requests on a list and these forgets
    are dispatched later using a worker. As of now we don't count these forgets
    in fsvq->in_flight variable. This means when queue is being drained, we
    have to have special logic to first drain these pending requests and then
    wait for fsvq->in_flight to go to zero.
    
    By counting pending forgets in fsvq->in_flight, we can get rid of special
    logic and just wait for in_flight to go to zero. Worker thread will kick
    and drain all the forgets anyway, leading in_flight to zero.
    
    I also need similar logic for normal request queue in next patch where I am
    about to defer request submission in the worker context if queue is full.
    
    This simplifies the code a bit.
    
    Also add two helper functions to inc/dec in_flight. Decrement in_flight
    helper will later used to call completion when in_flight reaches zero.
    Signed-off-by: default avatarVivek Goyal <vgoyal@redhat.com>
    Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
    c17ea009
virtio_fs.c 28.5 KB