From ac8a6d049cec783edd687980bc0c288f31c12d15 Mon Sep 17 00:00:00 2001 From: Christoph Hellwig Date: Mon, 8 Jun 2009 10:03:58 +0200 Subject: [PATCH] --- yaml --- r: 147879 b: refs/heads/master c: 80e09fb942d38beb19dcffbeb14d496beeb0a989 h: refs/heads/master i: 147877: 1edf7141b7266ca4c00658401f2f1cc31840bbac 147875: 9d042f1e415455f11c6105f3390bad37f6132e67 147871: 42f93a47da0b124d497bf1bee1e886b3961541f0 v: v3 --- [refs] | 2 +- trunk/fs/exofs/super.c | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index f2e8f6876bef..e25d4b7414c8 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 561e47ce7244168788d4ecef9a2271df204b3c89 +refs/heads/master: 80e09fb942d38beb19dcffbeb14d496beeb0a989 diff --git a/trunk/fs/exofs/super.c b/trunk/fs/exofs/super.c index 49e16af4e619..8216c5b77b53 100644 --- a/trunk/fs/exofs/super.c +++ b/trunk/fs/exofs/super.c @@ -200,18 +200,18 @@ static const struct export_operations exofs_export_ops; /* * Write the superblock to the OSD */ -static void exofs_write_super(struct super_block *sb) +static int exofs_sync_fs(struct super_block *sb, int wait) { struct exofs_sb_info *sbi; struct exofs_fscb *fscb; struct osd_request *or; struct osd_obj_id obj; - int ret; + int ret = -ENOMEM; fscb = kzalloc(sizeof(struct exofs_fscb), GFP_KERNEL); if (!fscb) { EXOFS_ERR("exofs_write_super: memory allocation failed.\n"); - return; + return -ENOMEM; } lock_super(sb); @@ -249,6 +249,15 @@ static void exofs_write_super(struct super_block *sb) unlock_kernel(); unlock_super(sb); kfree(fscb); + return ret; +} + +static void exofs_write_super(struct super_block *sb) +{ + if (!(sb->s_flags & MS_RDONLY)) + exofs_sync_fs(sb, 1); + else + sb->s_dirt = 0; } /* @@ -493,6 +502,7 @@ static const struct super_operations exofs_sops = { .delete_inode = exofs_delete_inode, .put_super = exofs_put_super, .write_super = exofs_write_super, + .sync_fs = exofs_sync_fs, .statfs = exofs_statfs, };