lkml.org 
[lkml]   [2013]   [Jul]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH RFC 3/4] xen-blkfront: prevent hoarding all grants
    Date
    Prevent blkfront from hoarding all grants by adding a minimum number
    of grants that must be free at all times. We still need a way to free
    unused grants in blkfront, but this patch will mitigate the problem
    in the meantime.

    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    ---
    drivers/block/xen-blkfront.c | 10 ++++++++--
    1 files changed, 8 insertions(+), 2 deletions(-)

    diff --git a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c
    index 187a437..3d445c0 100644
    --- a/drivers/block/xen-blkfront.c
    +++ b/drivers/block/xen-blkfront.c
    @@ -101,6 +101,12 @@ MODULE_PARM_DESC(max, "Maximum amount of segments in indirect requests (default
    #define BLK_RING_SIZE __CONST_RING_SIZE(blkif, PAGE_SIZE)

    /*
    + * Make sure there are at least MIN_FREE_GRANTS at all times, preventing
    + * blkfront from hoarding all grants
    + */
    +#define MIN_FREE_GRANTS 512
    +
    +/*
    * We have one of these per vbd, whether ide, scsi or 'other'. They
    * hang in private_data off the gendisk structure. We may end up
    * putting all kinds of interesting stuff here :-)
    @@ -412,13 +418,13 @@ static int blkif_queue_request(struct request *req)
    if (info->persistent_gnts_c < max_grefs) {
    new_persistent_gnts = 1;
    if (gnttab_alloc_grant_references(
    - max_grefs - info->persistent_gnts_c,
    + max_grefs - info->persistent_gnts_c + MIN_FREE_GRANTS,
    &gref_head) < 0) {
    gnttab_request_free_callback(
    &info->callback,
    blkif_restart_queue_callback,
    info,
    - max_grefs);
    + max_grefs + MIN_FREE_GRANTS);
    return 1;
    }
    } else
    --
    1.7.7.5 (Apple Git-26)
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2013-07-10 23:15    [W:2.832 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site