If the layout is being invalidated on the server, then we must
invoke nfs_commit_inode() to ensure any commits to the DS get
cleared out.
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
                        pnfs_mark_layout_stateid_invalid(lo, &head);
                        spin_unlock(&inode->i_lock);
                        pnfs_free_lseg_list(&head);
+                       nfs_commit_inode(inode, 0);
                } else
                        spin_unlock(&inode->i_lock);
                break;
 
                 */
                pnfs_mark_layout_stateid_invalid(lo, &head);
                spin_unlock(&inode->i_lock);
+               nfs_commit_inode(inode, 0);
                pnfs_free_lseg_list(&head);
                status = -EAGAIN;
                goto out;
 
                pnfs_layout_clear_fail_bit(lo, NFS_LAYOUT_RW_FAILED);
                spin_unlock(&nfsi->vfs_inode.i_lock);
                pnfs_free_lseg_list(&tmp_list);
+               nfs_commit_inode(&nfsi->vfs_inode, 0);
                pnfs_put_layout_hdr(lo);
        } else
                spin_unlock(&nfsi->vfs_inode.i_lock);
        spin_unlock(&ino->i_lock);
        lseg->pls_layout = lo;
        NFS_SERVER(ino)->pnfs_curr_ld->free_lseg(lseg);
+       if (!pnfs_layout_is_valid(lo))
+               nfs_commit_inode(ino, 0);
        return ERR_PTR(-EAGAIN);
 }