|
@@ -743,8 +743,10 @@ static int fsync_buffers_list(spinlock_t *lock, struct list_head *list)
|
|
struct list_head tmp;
|
|
struct list_head tmp;
|
|
struct address_space *mapping;
|
|
struct address_space *mapping;
|
|
int err = 0, err2;
|
|
int err = 0, err2;
|
|
|
|
+ struct blk_plug plug;
|
|
|
|
|
|
INIT_LIST_HEAD(&tmp);
|
|
INIT_LIST_HEAD(&tmp);
|
|
|
|
+ blk_start_plug(&plug);
|
|
|
|
|
|
spin_lock(lock);
|
|
spin_lock(lock);
|
|
while (!list_empty(list)) {
|
|
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)) {
|
|
while (!list_empty(&tmp)) {
|
|
bh = BH_ENTRY(tmp.prev);
|
|
bh = BH_ENTRY(tmp.prev);
|
|
get_bh(bh);
|
|
get_bh(bh);
|