aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ext4/super.c
diff options
context:
space:
mode:
authorAlex Tomas <alex@clusterfs.com>2008-07-11 19:27:31 -0400
committerTheodore Ts'o <tytso@mit.edu>2008-07-11 19:27:31 -0400
commit64769240bd07f446f83660bb143bb609d8ab4910 (patch)
treedb8bd8dda988adab6b4f6087a9b59ce504612009 /fs/ext4/super.c
parent29a814d2ee0e43c2980f33f91c1311ec06c0aa35 (diff)
ext4: Add delayed allocation support in data=writeback mode
Updated with fixes from Mingming Cao <cmm@us.ibm.com> to unlock and release the page from page cache if the delalloc write_begin failed, and properly handle preallocated blocks. Also added a fix to clear buffer_delay in block_write_full_page() after allocating a delayed buffer. Updated with fixes from Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> to update i_disksize properly and to add bmap support for delayed allocation. Updated with a fix from Valerie Clement <valerie.clement@bull.net> to avoid filesystem corruption when the filesystem is mounted with the delalloc option and blocksize < pagesize. Signed-off-by: Alex Tomas <alex@clusterfs.com> Signed-off-by: Mingming Cao <cmm@us.ibm.com> Signed-off-by: Dave Kleikamp <shaggy@linux.vnet.ibm.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Diffstat (limited to 'fs/ext4/super.c')
-rw-r--r--fs/ext4/super.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 629d0fa27e3a..de9d3d0eb203 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -898,7 +898,7 @@ enum {
898 Opt_jqfmt_vfsold, Opt_jqfmt_vfsv0, Opt_quota, Opt_noquota, 898 Opt_jqfmt_vfsold, Opt_jqfmt_vfsv0, Opt_quota, Opt_noquota,
899 Opt_ignore, Opt_barrier, Opt_err, Opt_resize, Opt_usrquota, 899 Opt_ignore, Opt_barrier, Opt_err, Opt_resize, Opt_usrquota,
900 Opt_grpquota, Opt_extents, Opt_noextents, Opt_i_version, 900 Opt_grpquota, Opt_extents, Opt_noextents, Opt_i_version,
901 Opt_mballoc, Opt_nomballoc, Opt_stripe, 901 Opt_mballoc, Opt_nomballoc, Opt_stripe, Opt_delalloc,
902}; 902};
903 903
904static match_table_t tokens = { 904static match_table_t tokens = {
@@ -957,6 +957,7 @@ static match_table_t tokens = {
957 {Opt_nomballoc, "nomballoc"}, 957 {Opt_nomballoc, "nomballoc"},
958 {Opt_stripe, "stripe=%u"}, 958 {Opt_stripe, "stripe=%u"},
959 {Opt_resize, "resize"}, 959 {Opt_resize, "resize"},
960 {Opt_delalloc, "delalloc"},
960 {Opt_err, NULL}, 961 {Opt_err, NULL},
961}; 962};
962 963
@@ -1335,6 +1336,9 @@ set_qf_format:
1335 return 0; 1336 return 0;
1336 sbi->s_stripe = option; 1337 sbi->s_stripe = option;
1337 break; 1338 break;
1339 case Opt_delalloc:
1340 set_opt(sbi->s_mount_opt, DELALLOC);
1341 break;
1338 default: 1342 default:
1339 printk (KERN_ERR 1343 printk (KERN_ERR
1340 "EXT4-fs: Unrecognized mount option \"%s\" " 1344 "EXT4-fs: Unrecognized mount option \"%s\" "