writeback: improve readability of the wb_writeback() continue/break logic
authorJens Axboe <jens.axboe@oracle.com>
Wed, 23 Sep 2009 17:32:26 +0000 (19:32 +0200)
committerJens Axboe <jens.axboe@oracle.com>
Fri, 25 Sep 2009 16:08:25 +0000 (18:08 +0200)
And throw some comments in there, too.

Reviewed-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
fs/fs-writeback.c

index 916e83489caa8fef98684f4a7fce532c7cb454f5..15e375bf93e6d4fbf1f4bb977d78c83a62a96f85 100644 (file)
@@ -750,29 +750,32 @@ static long wb_writeback(struct bdi_writeback *wb,
                wrote += MAX_WRITEBACK_PAGES - wbc.nr_to_write;
 
                /*
-                * If we ran out of stuff to write, bail unless more_io got set
+                * If we consumed everything, see if we have more
                 */
-               if (wbc.nr_to_write > 0) {
-                       if (wbc.more_io) {
-                               if (wbc.nr_to_write < MAX_WRITEBACK_PAGES)
-                                       continue;
-                               /*
-                                * Nothing written. Wait for some inode to
-                                * become available for writeback. Otherwise
-                                * we'll just busyloop.
-                                */
-                               spin_lock(&inode_lock);
-                               if (!list_empty(&wb->b_more_io))  {
-                                       inode = list_entry(
-                                                       wb->b_more_io.prev,
-                                                       struct inode, i_list);
-                                       inode_wait_for_writeback(inode);
-                               }
-                               spin_unlock(&inode_lock);
-                               continue;
-                       }
+               if (wbc.nr_to_write <= 0)
+                       continue;
+               /*
+                * Didn't write everything and we don't have more IO, bail
+                */
+               if (!wbc.more_io)
                        break;
+               /*
+                * Did we write something? Try for more
+                */
+               if (wbc.nr_to_write < MAX_WRITEBACK_PAGES)
+                       continue;
+               /*
+                * Nothing written. Wait for some inode to
+                * become available for writeback. Otherwise
+                * we'll just busyloop.
+                */
+               spin_lock(&inode_lock);
+               if (!list_empty(&wb->b_more_io))  {
+                       inode = list_entry(wb->b_more_io.prev,
+                                               struct inode, i_list);
+                       inode_wait_for_writeback(inode);
                }
+               spin_unlock(&inode_lock);
        }
 
        return wrote;