• M
    block: New bdrv_nb_sectors() · 65a9bb25
    Markus Armbruster 提交于
    A call to retrieve the image size converts between bytes and sectors
    several times:
    
    * BlockDriver method bdrv_getlength() returns bytes.
    
    * refresh_total_sectors() converts to sectors, rounding up, and stores
      in total_sectors.
    
    * bdrv_getlength() converts total_sectors back to bytes (now rounded
      up to a multiple of the sector size).
    
    * Callers wanting sectors rather bytes convert it right back.
      Example: bdrv_get_geometry().
    
    bdrv_nb_sectors() provides a way to omit the last two conversions.
    It's exactly bdrv_getlength() with the conversion to bytes omitted.
    It's functionally like bdrv_get_geometry() without its odd error
    handling.
    
    Reimplement bdrv_getlength() and bdrv_get_geometry() on top of
    bdrv_nb_sectors().
    
    The next patches will convert some users of bdrv_getlength() to
    bdrv_nb_sectors().
    Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
    Reviewed-by: NEric Blake <eblake@redhat.com>
    Reviewed-by: NBenoit Canet <benoit@irqsave.net>
    Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
    65a9bb25
block.c 164.1 KB