• Stefan Bader's avatar
    xen/blkback: Use physical sector size for setup · 7c4d7d71
    Stefan Bader authored
    Currently xen-blkback passes the logical sector size over xenbus and
    xen-blkfront sets up the paravirt disk with that logical block size.
    But newer drives usually have the logical sector size set to 512 for
    compatibility reasons and would show the actual sector size only in
    physical sector size.
    This results in the device being partitioned and accessed in dom0 with
    the correct sector size, but the guest thinks 512 bytes is the correct
    block size. And that results in poor performance.
    
    To fix this, blkback gets modified to pass also physical-sector-size
    over xenbus and blkfront to use both values to set up the paravirt
    disk. I did not just change the passed in sector-size because I am
    not sure having a bigger logical sector size than the physical one
    is valid (and that would happen if a newer dom0 kernel hits an older
    domU kernel). Also this way a domU set up before should still be
    accessible (just some tools might detect the unaligned setup).
    
    [v2: Make xenbus write failure non-fatal]
    [v3: Use xenbus_scanf instead of xenbus_gather]
    [v4: Rebased against segment changes]
    Signed-off-by: default avatarStefan Bader <stefan.bader@canonical.com>
    Signed-off-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    7c4d7d71
xen-blkfront.c 53.2 KB