• Trond Myklebust's avatar
    NFS: Fix unstable write completion · c4f24df9
    Trond Myklebust authored
    We do want to respect the FLUSH_SYNC argument to nfs_commit_inode() to
    ensure that all outstanding COMMIT requests to the inode in question are
    complete. Currently we may exit early from both nfs_commit_inode() and
    nfs_write_inode() even if there are COMMIT requests in flight, or unstable
    writes on the commit list.
    
    In order to get the right semantics w.r.t. sync_inode(), we don't need
    to have nfs_commit_inode() reset the inode dirty flags when called from
    nfs_wb_page() and/or nfs_wb_all(). We just need to ensure that
    nfs_write_inode() leaves them in the right state if there are outstanding
    commits, or stable pages.
    Reported-by: default avatarScott Mayhew <smayhew@redhat.com>
    Fixes: dc4fd9ab ("nfs: don't wait on commit in nfs_commit_inode()...")
    Cc: stable@vger.kernel.org # v4.14+
    Signed-off-by: default avatarTrond Myklebust <trond.myklebust@primarydata.com>
    c4f24df9
write.c 56.3 KB