filemap_datawrite() and friends already deal just fine with livelock.
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
                file, mapping->host->i_ino, len, (long long) pos);
 
 start:
-       /*
-        * Prevent starvation issues if someone is doing a consistency
-        * sync-to-disk
-        */
-       ret = wait_on_bit_action(&NFS_I(mapping->host)->flags, NFS_INO_FLUSHING,
-                                nfs_wait_bit_killable, TASK_KILLABLE);
-       if (ret)
-               return ret;
        /*
         * Wait for O_DIRECT to complete
         */
 
                        { 1 << NFS_INO_ADVISE_RDPLUS, "ADVISE_RDPLUS" }, \
                        { 1 << NFS_INO_STALE, "STALE" }, \
                        { 1 << NFS_INO_INVALIDATING, "INVALIDATING" }, \
-                       { 1 << NFS_INO_FLUSHING, "FLUSHING" }, \
                        { 1 << NFS_INO_FSCACHE, "FSCACHE" }, \
                        { 1 << NFS_INO_LAYOUTCOMMIT, "NEED_LAYOUTCOMMIT" }, \
                        { 1 << NFS_INO_LAYOUTCOMMITTING, "LAYOUTCOMMIT" })
 
 int nfs_writepages(struct address_space *mapping, struct writeback_control *wbc)
 {
        struct inode *inode = mapping->host;
-       unsigned long *bitlock = &NFS_I(inode)->flags;
        struct nfs_pageio_descriptor pgio;
        int err;
 
-       /* Stop dirtying of new pages while we sync */
-       err = wait_on_bit_lock_action(bitlock, NFS_INO_FLUSHING,
-                       nfs_wait_bit_killable, TASK_KILLABLE);
-       if (err)
-               goto out_err;
-
        nfs_inc_stats(inode, NFSIOS_VFSWRITEPAGES);
 
        nfs_pageio_init_write(&pgio, inode, wb_priority(wbc), false,
        err = write_cache_pages(mapping, wbc, nfs_writepages_callback, &pgio);
        nfs_pageio_complete(&pgio);
 
-       clear_bit_unlock(NFS_INO_FLUSHING, bitlock);
-       smp_mb__after_atomic();
-       wake_up_bit(bitlock, NFS_INO_FLUSHING);
-
        if (err < 0)
                goto out_err;
        err = pgio.pg_error;
 
 #define NFS_INO_STALE          (1)             /* possible stale inode */
 #define NFS_INO_ACL_LRU_SET    (2)             /* Inode is on the LRU list */
 #define NFS_INO_INVALIDATING   (3)             /* inode is being invalidated */
-#define NFS_INO_FLUSHING       (4)             /* inode is flushing out data */
 #define NFS_INO_FSCACHE                (5)             /* inode can be cached by FS-Cache */
 #define NFS_INO_FSCACHE_LOCK   (6)             /* FS-Cache cookie management lock */
 #define NFS_INO_LAYOUTCOMMIT   (9)             /* layoutcommit required */