• J
    storage: Fix regression cloning volume into a logical pool · 2c52ec43
    John Ferlan 提交于
    https://bugzilla.redhat.com/show_bug.cgi?id=1318993
    
    Commit id 'dd519a29' caused a regression cloning a volume into a
    logical pool by removing just the 'allocation' adjustment during
    storageVolCreateXMLFrom. Combined with the change to not require the
    new volume input XML to have a capacity listed (commit id 'e3f1d2a8')
    left the possibility that a zero allocation value (e.g., not provided)
    would create a thin/sparse logical volume. When a thin lv becomes fully
    populated, then LVM sets the partition 'inactive' and the subsequent
    fdatasync() fails.
    
    Add a new 'has_allocation' flag to be set at XML parse time to indicate
    that allocation was provided. This is done so that if it's not provided
    the create-from code uses the capacity value since we document that if
    omitted, the volume will be fully allocated at time of creation.
    
    For a logical backend, that creation time is 'createVol', while for a
    file backend, creation doesn't set the size, but the 'createRaw' called
    during buildVolFrom will decide whether the file is sparse or not based
    on the provided capacity and allocation value.
    
    For volume clones that provide different allocation and capacity values
    to allow for sparse files, there is no change.
    2c52ec43
virstoragefile.c 79.1 KB