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