lkml.org 
[lkml]   [2004]   [Dec]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Subjectreiserfs bug fix: do not clear MS_ACTIVE mount flag
From
Date
Hello

Andrew, please apply this reiserfs bug fix.

When CONFIG_QUOTA is defined reiserfs's finish_unfinished sets and clears
MS_ACTIVE bit in s_flags field of super block. If that bit was set already
it should not be set.


fs/reiserfs/super.c | 13 ++++++++++---
1 files changed, 10 insertions(+), 3 deletions(-)

diff -puN fs/reiserfs/super.c~reiserfs-do-not-clear-MS_ACTIVE fs/reiserfs/super.c
--- linux-2.6.10-rc3-mm1/fs/reiserfs/super.c~reiserfs-do-not-clear-MS_ACTIVE 2004-12-23 18:22:06.568755520 +0300
+++ linux-2.6.10-rc3-mm1-vs/fs/reiserfs/super.c 2004-12-23 18:22:06.576756006 +0300
@@ -158,6 +158,7 @@ static int finish_unfinished (struct sup
int truncate;
#ifdef CONFIG_QUOTA
int i;
+ int ms_active_set;
#endif


@@ -168,7 +169,12 @@ static int finish_unfinished (struct sup

#ifdef CONFIG_QUOTA
/* Needed for iput() to work correctly and not trash data */
- s->s_flags |= MS_ACTIVE;
+ if (s->s_flags & MS_ACTIVE) {
+ ms_active_set = 0;
+ } else {
+ ms_active_set = 1;
+ s->s_flags |= MS_ACTIVE;
+ }
/* Turn on quotas so that they are updated correctly */
for (i = 0; i < MAXQUOTAS; i++) {
if (REISERFS_SB(s)->s_qf_names[i]) {
@@ -276,8 +282,9 @@ static int finish_unfinished (struct sup
if (sb_dqopt(s)->files[i])
vfs_quota_off_mount(s, i);
}
- /* Restore the flag back */
- s->s_flags &= ~MS_ACTIVE;
+ if (ms_active_set)
+ /* Restore the flag back */
+ s->s_flags &= ~MS_ACTIVE;
#endif
pathrelse (&path);
if (done)
_
\
 
 \ /
  Last update: 2005-03-22 14:09    [W:0.385 / U:0.032 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site