• Kirill Smelkov's avatar
    bigfile/virtmem: Don't forget to release fileh->writeout_inprogress on storeblk error · 87bf4908
    Kirill Smelkov authored
    Commit fb4bfb32 (bigfile/virtmem: Do storeblk() with virtmem lock
    released) added bug-protection to fileh_dirty_writeout() so that it could
    not be called twice at the same time or in parallel with other functions
    which modify pages.
    
    However it missed the code path when storeblk() call returned with error
    and whole writeout was thus erroring out, but with fileh->writeout_inprogress
    still left set to 1 incorrectly.
    
    This was leading to things like
    
        bigfile/virtmem.c:419: fileh_dirty_discard: Assertion `!(fileh->writeout_inprogress)' failed.
    
    and crashes.
    
    Fix it.
    87bf4908
virtmem.c 27.7 KB