Revision 46a4e4e6
b/block.c | ||
---|---|---|
1161 | 1161 |
if (!drv) |
1162 | 1162 |
return -ENOMEDIUM; |
1163 | 1163 |
|
1164 |
/* Fixed size devices use the total_sectors value for speed instead of |
|
1165 |
issuing a length query (like lseek) on each call. Also, legacy block |
|
1166 |
drivers don't provide a bdrv_getlength function and must use |
|
1167 |
total_sectors. */ |
|
1168 |
if (!bs->growable || !drv->bdrv_getlength) { |
|
1169 |
return bs->total_sectors * BDRV_SECTOR_SIZE; |
|
1170 |
} |
|
1171 |
return drv->bdrv_getlength(bs); |
|
1164 |
if (bs->growable || bs->removable) { |
|
1165 |
if (drv->bdrv_getlength) { |
|
1166 |
return drv->bdrv_getlength(bs); |
|
1167 |
} |
|
1168 |
} |
|
1169 |
return bs->total_sectors * BDRV_SECTOR_SIZE; |
|
1172 | 1170 |
} |
1173 | 1171 |
|
1174 | 1172 |
/* return 0 as number of sectors if no device present or error */ |
Also available in: Unified diff