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