OSDN Git Service

crypto: cleanup comments
[uclinux-h8/linux.git] / fs / fs-writeback.c
index 4f680f8..f8d7fe6 100644 (file)
@@ -1668,6 +1668,13 @@ __writeback_single_inode(struct inode *inode, struct writeback_control *wbc)
 
        if (mapping_tagged(mapping, PAGECACHE_TAG_DIRTY))
                inode->i_state |= I_DIRTY_PAGES;
+       else if (unlikely(inode->i_state & I_PINNING_FSCACHE_WB)) {
+               if (!(inode->i_state & I_DIRTY_PAGES)) {
+                       inode->i_state &= ~I_PINNING_FSCACHE_WB;
+                       wbc->unpinned_fscache_wb = true;
+                       dirty |= I_PINNING_FSCACHE_WB; /* Cause write_inode */
+               }
+       }
 
        spin_unlock(&inode->i_lock);
 
@@ -1677,6 +1684,7 @@ __writeback_single_inode(struct inode *inode, struct writeback_control *wbc)
                if (ret == 0)
                        ret = err;
        }
+       wbc->unpinned_fscache_wb = false;
        trace_writeback_single_inode(inode, wbc, nr_to_write);
        return ret;
 }