]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
fs: make fsync_buffers_list() plug
authorJens Axboe <jaxboe@fusionio.com>
Thu, 17 Mar 2011 09:51:40 +0000 (10:51 +0100)
committerJens Axboe <jaxboe@fusionio.com>
Thu, 17 Mar 2011 09:51:40 +0000 (10:51 +0100)
It used WRITE_SYNC_PLUG before and potentially submits a batch
of IO, so lets enable plugging for this case.

Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
fs/buffer.c

index 42534f67d71b23514d9c9c20724b420039f5b860..2e6b1a387b7eb136870ee0ab38c9bc86a794264a 100644 (file)
@@ -743,8 +743,10 @@ static int fsync_buffers_list(spinlock_t *lock, struct list_head *list)
        struct list_head tmp;
        struct address_space *mapping;
        int err = 0, err2;
+       struct blk_plug plug;
 
        INIT_LIST_HEAD(&tmp);
+       blk_start_plug(&plug);
 
        spin_lock(lock);
        while (!list_empty(list)) {
@@ -781,6 +783,10 @@ static int fsync_buffers_list(spinlock_t *lock, struct list_head *list)
                }
        }
 
+       spin_unlock(lock);
+       blk_finish_plug(&plug);
+       spin_lock(lock);
+
        while (!list_empty(&tmp)) {
                bh = BH_ENTRY(tmp.prev);
                get_bh(bh);