Merge branch 'irq-threaded-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[pandora-kernel.git] / fs / ubifs / budget.c
index af19144..1c8991b 100644 (file)
 static int shrink_liability(struct ubifs_info *c, int nr_to_write)
 {
        int nr_written;
-       struct writeback_control wbc = {
-               .sync_mode   = WB_SYNC_NONE,
-               .range_end   = LLONG_MAX,
-               .nr_to_write = nr_to_write,
-       };
-
-       generic_sync_sb_inodes(c->vfs_sb, &wbc);
-       nr_written = nr_to_write - wbc.nr_to_write;
 
+       nr_written = writeback_inodes_sb(c->vfs_sb);
        if (!nr_written) {
                /*
                 * Re-try again but wait on pages/inodes which are being
                 * written-back concurrently (e.g., by pdflush).
                 */
-               memset(&wbc, 0, sizeof(struct writeback_control));
-               wbc.sync_mode   = WB_SYNC_ALL;
-               wbc.range_end   = LLONG_MAX;
-               wbc.nr_to_write = nr_to_write;
-               generic_sync_sb_inodes(c->vfs_sb, &wbc);
-               nr_written = nr_to_write - wbc.nr_to_write;
+               nr_written = sync_inodes_sb(c->vfs_sb);
        }
 
        dbg_budg("%d pages were written back", nr_written);
        return nr_written;
 }
 
-
 /**
  * run_gc - run garbage collector.
  * @c: UBIFS file-system description object
@@ -628,7 +615,7 @@ void ubifs_convert_page_budget(struct ubifs_info *c)
  *
  * This function releases budget corresponding to a dirty inode. It is usually
  * called when after the inode has been written to the media and marked as
- * clean.
+ * clean. It also causes the "no space" flags to be cleared.
  */
 void ubifs_release_dirty_inode_budget(struct ubifs_info *c,
                                      struct ubifs_inode *ui)
@@ -636,6 +623,7 @@ void ubifs_release_dirty_inode_budget(struct ubifs_info *c,
        struct ubifs_budget_req req;
 
        memset(&req, 0, sizeof(struct ubifs_budget_req));
+       /* The "no space" flags will be cleared because dd_growth is > 0 */
        req.dd_growth = c->inode_budget + ALIGN(ui->data_len, 8);
        ubifs_release_budget(c, &req);
 }