• NeilBrown's avatar
    NFS: avoid waiting at all in nfs_release_page when congested. · 353db796
    NeilBrown authored
    If nfs_release_page() is called on a sequence of pages which are all
    in the same file which is blocked on COMMIT, each page could
    contribute a 1 second delay which could be come excessive.  I have
    seen delays of as much as 208 seconds.
    
    To keep the delay to one second, mark the bdi as write-congested
    if the commit didn't finished.  Once it does finish, the
    write-congested flag will be cleared by nfs_commit_release_pages().
    
    With this, the longest total delay in try_to_free_pages that I have
    seen is under 3 seconds.  With no waiting in nfs_release_page at all
    I have seen delays of nearly 1.5 seconds.
    Signed-off-by: default avatarNeilBrown <neilb@suse.de>
    Acked-by: default avatarJeff Layton <jlayton@primarydata.com>
    Signed-off-by: default avatarTrond Myklebust <trond.myklebust@primarydata.com>
    353db796
write.c 51 KB