From 26e46dc84923b60d047495a03a754530227f24fd Mon Sep 17 00:00:00 2001 From: Frederic Weisbecker Date: Tue, 14 Apr 2009 05:34:25 +0200 Subject: [PATCH] --- yaml --- r: 173159 b: refs/heads/master c: dc8f6d8936eb244eea452af689df5ee19e635206 h: refs/heads/master i: 173157: c85b281070f5530448eff463f9c1e3a56ffa7f10 173155: 7f72d61ed8f6fd078aeda2dd8d9d89cedaf084b3 173151: f83c724728620e20ba003ae22c93da2917bfdedd v: v3 --- [refs] | 2 +- trunk/fs/reiserfs/super.c | 15 +++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index 7a511c26a296..bea3722063f1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 22c963addcf426bef97a43f6e601f985f8082ed5 +refs/heads/master: dc8f6d8936eb244eea452af689df5ee19e635206 diff --git a/trunk/fs/reiserfs/super.c b/trunk/fs/reiserfs/super.c index e1cfb80d0bf3..58727b5b4351 100644 --- a/trunk/fs/reiserfs/super.c +++ b/trunk/fs/reiserfs/super.c @@ -554,25 +554,28 @@ static void reiserfs_dirty_inode(struct inode *inode) struct reiserfs_transaction_handle th; int err = 0; + int lock_depth; + if (inode->i_sb->s_flags & MS_RDONLY) { reiserfs_warning(inode->i_sb, "clm-6006", "writing inode %lu on readonly FS", inode->i_ino); return; } - reiserfs_write_lock(inode->i_sb); + lock_depth = reiserfs_write_lock_once(inode->i_sb); /* this is really only used for atime updates, so they don't have ** to be included in O_SYNC or fsync */ err = journal_begin(&th, inode->i_sb, 1); - if (err) { - reiserfs_write_unlock(inode->i_sb); - return; - } + if (err) + goto out; + reiserfs_update_sd(&th, inode); journal_end(&th, inode->i_sb, 1); - reiserfs_write_unlock(inode->i_sb); + +out: + reiserfs_write_unlock_once(inode->i_sb, lock_depth); } #ifdef CONFIG_QUOTA