Revision 466ad822 block.c

b/block.c
489 489

  
490 490
    memset(&bs->bl, 0, sizeof(bs->bl));
491 491

  
492
    if (drv && drv->bdrv_refresh_limits) {
492
    if (!drv) {
493
        return 0;
494
    }
495

  
496
    /* Take some limits from the children as a default */
497
    if (bs->file) {
498
        bdrv_refresh_limits(bs->file);
499
        bs->bl.opt_transfer_length = bs->file->bl.opt_transfer_length;
500
    }
501

  
502
    if (bs->backing_hd) {
503
        bdrv_refresh_limits(bs->backing_hd);
504
        bs->bl.opt_transfer_length =
505
            MAX(bs->bl.opt_transfer_length,
506
                bs->backing_hd->bl.opt_transfer_length);
507
    }
508

  
509
    /* Then let the driver override it */
510
    if (drv->bdrv_refresh_limits) {
493 511
        return drv->bdrv_refresh_limits(bs);
494 512
    }
495 513

  

Also available in: Unified diff