• H
    Btrfs: pin buffers during write_dev_supers · 4eedeb75
    Hisashi Hifumi 提交于
    write_dev_supers is called in sequence.  First is it called with wait == 0,
    which starts IO on all of the super blocks for a given device.  Then it is
    called with wait == 1 to make sure they all reach the disk.
    
    It doesn't currently pin the buffers between the two calls, and it also
    assumes the buffers won't go away between the two calls, leading to
    an oops if the VM manages to free the buffers in the middle of the sync.
    
    This fixes that assumption and updates the code to return an error if things
    are not up to date when the wait == 1 run is done.
    Signed-off-by: NHisashi Hifumi <hifumi.hisashi@oss.ntt.co.jp>
    Signed-off-by: NChris Mason <chris.mason@oracle.com>
    4eedeb75
disk-io.c 65.7 KB