From: Kirill Tkhai <ktk...@parallels.com> It is not obvious, but delalloc makes data=writeback mode safer. This is because actual data allocation happens inside writepages, So stale blocks after unclean umount no longer an issue.
So in order to make data=writeback mode reliable we can not temporarily disable delalloc in case of low diskspace. It must be enabled permanently. Original discussion: http://thread.gmane.org/gmane.comp.file-systems.ext4/19527 https://jira.sw.ru:9443/browse/PCLIN-299 diff-ms-ext4-safe-writeback Signed-off-by: Dmitry Monakhov <dmonak...@openvz.org> Signed-off-by: Kirill Tkhai <ktk...@parallels.com> (cherry picked from vz7 commit 025b3611cf3eba7f1a83bf34c05ea439c4ade410) Signed-off-by: Konstantin Khorenko <khore...@virtuozzo.com> Signed-off-by: Kirill Tkhai <ktk...@virtuozzo.com> --- fs/ext4/inode.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index d8de607849df..0d2268ead3e7 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -2915,8 +2915,15 @@ static int ext4_nonda_switch(struct super_block *sb) if (dirty_clusters && (free_clusters < 2 * dirty_clusters)) try_to_writeback_inodes_sb(sb, WB_REASON_FS_FREE_SPACE); - if (2 * free_clusters < 3 * dirty_clusters || - free_clusters < (dirty_clusters + EXT4_FREECLUSTERS_WATERMARK)) { + /* + * NOTE: Delalloc make data=writeback mode safer, similar to ordered + * mode, so stale blocks after power failure no longer an issue Do not + * disable delalloc to guarantee data security on data=writeback mode. + * -dmon + */ + if (test_opt(sb, DATA_FLAGS) != EXT4_MOUNT_WRITEBACK_DATA && + (2 * free_clusters < 3 * dirty_clusters || + free_clusters < (dirty_clusters + EXT4_FREECLUSTERS_WATERMARK))) { /* * free block count is less than 150% of dirty blocks * or free blocks is less than watermark _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel