On 08/07/13 14:03, Roger Pau Monne wrote:
> Improve the calculation of required grants to process a request by
> using nr_phys_segments instead of always assuming a request is going
> to use all posible segments.

This isn't obviously correct to me.  Why is this correct value for the
number of pages that need to be granted?

David

> --- a/drivers/block/xen-blkfront.c
> +++ b/drivers/block/xen-blkfront.c
> @@ -400,10 +400,13 @@ static int blkif_queue_request(struct request *req)
>       if (unlikely(info->connected != BLKIF_STATE_CONNECTED))
>               return 1;
>  
> -     max_grefs = info->max_indirect_segments ?
> -                 info->max_indirect_segments +
> -                 INDIRECT_GREFS(info->max_indirect_segments) :
> -                 BLKIF_MAX_SEGMENTS_PER_REQUEST;
> +     max_grefs = req->nr_phys_segments;
> +     if (max_grefs > BLKIF_MAX_SEGMENTS_PER_REQUEST)
> +             /*
> +              * If we are using indirect segments we need to account
> +              * for the indirect grefs used in the request.
> +              */
> +             max_grefs += INDIRECT_GREFS(req->nr_phys_segments);
>  
>       /* Check if we have enough grants to allocate a requests */
>       if (info->persistent_gnts_c < max_grefs) {

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to