• Trond Myklebust's avatar
    NFS: Fix a race when doing NFS write coalescing · c63c7b05
    Trond Myklebust authored
    Currently we do write coalescing in a very inefficient manner: one pass in
    generic_writepages() in order to lock the pages for writing, then one pass
    in nfs_flush_mapping() and/or nfs_sync_mapping_wait() in order to gather
    the locked pages for coalescing into RPC requests of size "wsize".
    
    In fact, it turns out there is actually a deadlock possible here since we
    only start I/O on the second pass. If the user signals the process while
    we're in nfs_sync_mapping_wait(), for instance, then we may exit before
    starting I/O on all the requests that have been queued up.
    Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
    c63c7b05
write.c 37.8 KB