• Andrew Morton's avatar
    [PATCH] Make msync(MS_ASYNC) no longer start the I/O · a300bad2
    Andrew Morton authored
    MS_ASYNC will currently wait on previously-submitted I/O, then start new I/O
    and not wait on it.  This can cause undesirable blocking if msync is called
    rapidly against the same memory.
    
    So instead, change msync(MS_ASYNC) to not start any IO at all.  Just flush
    the pte dirty bits into the pageframe and leave it at that.
    
    The IO _will_ happen within a kupdate period.  And the application can use
    fsync() or fadvise(FADV_DONTNEED) if it actually wants to schedule the IO
    immediately.
    
    (This has triggered an ext3 bug - the page's buffers get dirtied so fast
    that kjournald keeps writing the buffers over and over for 10-20 seconds
    before deciding to give up for some reason)
    a300bad2
msync.c 5.26 KB