• Mikulas Patocka's avatar
    dm snapshot: fix metadata corruption · 2c945820
    Mikulas Patocka authored
    Commit 55494bf2 ("dm snapshot: use dm-bufio") broke snapshots.
    Before that 3.14-rc1 commit, loading a snapshot's list of exceptions
    involved reading exception areas one by one into ps->area and inserting
    those exceptions into the hash table.  Commit 55494bf2 changed
    it so that dm-bufio with prefetch is used to load exceptions in batchs.
    Exceptions are loaded correctly, but ps->area is left uninitialized.
    When a new exception is allocated, it is stored in this uninitialized
    ps->area which will be written to the disk.  This causes metadata
    corruption.
    
    Fix this corruption by copying the last area that was read via dm-bufio
    into ps->area.
    Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
    2c945820
dm-snap-persistent.c 22.1 KB