aboutsummaryrefslogtreecommitdiffstats
path: root/fs/sync.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/sync.c')
-rw-r--r--fs/sync.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/fs/sync.c b/fs/sync.c
index 0b166f26362d..131ddae87a1d 100644
--- a/fs/sync.c
+++ b/fs/sync.c
@@ -85,14 +85,14 @@ static void sync_fs_one_sb(struct super_block *sb, void *arg)
85 sb->s_op->sync_fs(sb, *(int *)arg); 85 sb->s_op->sync_fs(sb, *(int *)arg);
86} 86}
87 87
88static void flush_one_bdev(struct block_device *bdev, void *arg) 88static void fdatawrite_one_bdev(struct block_device *bdev, void *arg)
89{ 89{
90 __sync_blockdev(bdev, 0); 90 filemap_fdatawrite(bdev->bd_inode->i_mapping);
91} 91}
92 92
93static void sync_one_bdev(struct block_device *bdev, void *arg) 93static void fdatawait_one_bdev(struct block_device *bdev, void *arg)
94{ 94{
95 sync_blockdev(bdev); 95 filemap_fdatawait(bdev->bd_inode->i_mapping);
96} 96}
97 97
98/* 98/*
@@ -106,10 +106,10 @@ SYSCALL_DEFINE0(sync)
106 wakeup_flusher_threads(0, WB_REASON_SYNC); 106 wakeup_flusher_threads(0, WB_REASON_SYNC);
107 iterate_supers(writeback_inodes_one_sb, NULL); 107 iterate_supers(writeback_inodes_one_sb, NULL);
108 iterate_supers(sync_fs_one_sb, &nowait); 108 iterate_supers(sync_fs_one_sb, &nowait);
109 iterate_bdevs(flush_one_bdev, NULL);
110 iterate_supers(sync_inodes_one_sb, NULL); 109 iterate_supers(sync_inodes_one_sb, NULL);
111 iterate_supers(sync_fs_one_sb, &wait); 110 iterate_supers(sync_fs_one_sb, &wait);
112 iterate_bdevs(sync_one_bdev, NULL); 111 iterate_bdevs(fdatawrite_one_bdev, NULL);
112 iterate_bdevs(fdatawait_one_bdev, NULL);
113 if (unlikely(laptop_mode)) 113 if (unlikely(laptop_mode))
114 laptop_sync_completion(); 114 laptop_sync_completion();
115 return 0; 115 return 0;
@@ -125,10 +125,10 @@ static void do_sync_work(struct work_struct *work)
125 */ 125 */
126 iterate_supers(sync_inodes_one_sb, &nowait); 126 iterate_supers(sync_inodes_one_sb, &nowait);
127 iterate_supers(sync_fs_one_sb, &nowait); 127 iterate_supers(sync_fs_one_sb, &nowait);
128 iterate_bdevs(flush_one_bdev, NULL); 128 iterate_bdevs(fdatawrite_one_bdev, NULL);
129 iterate_supers(sync_inodes_one_sb, &nowait); 129 iterate_supers(sync_inodes_one_sb, &nowait);
130 iterate_supers(sync_fs_one_sb, &nowait); 130 iterate_supers(sync_fs_one_sb, &nowait);
131 iterate_bdevs(flush_one_bdev, NULL); 131 iterate_bdevs(fdatawrite_one_bdev, NULL);
132 printk("Emergency Sync complete\n"); 132 printk("Emergency Sync complete\n");
133 kfree(work); 133 kfree(work);
134} 134}