On Wed, 30 May 2012 15:44:58 +0200, Jan Kara <[email protected]> wrote:
> On Wed 30-05-12 14:24:12, Dmitry Monakhov wrote:
> > If remount failed due to some reason we have to fallback quota to it's 
> > original state
> > otherwise it will stay in suspended state which is incorrect.
> > 
> > #TEST_CASE
> > dd if=/dev/zero of=/tmp/imgfile bs=1M count=100
> > # any fs with quota are affected
> > mkfs.ext4 -F /tmp/imgfile
> > mount /tmp/imgfile  /mnt -oloop,quota
> > quotacheck -cug /mnt
> > quotaon /mnt
> > # remount to RO state , and explicitly provide bad option
> > mount /mnt -oremount,ro,some-bad-option
> > # At this point fs is in broken state because it is RW, but quota is in
> > # suspended state. Later activity will trigger NULL pointer dereference
> > mount /mnt -oremount,ro,some-bad-option
> > 
> > Bug was silently fixed in: e0ccfd959cd890 v2.6.34-7101-ge0ccfd9, All 
> > previous
> > kernel versions are affected.
>   Ah, OK. I was wondering for a while how come your test case fails with
> current kernel ;)
> 
> > diff --git a/fs/super.c b/fs/super.c
> > index 1fb63e3..457e70d 100644
> > --- a/fs/super.c
> > +++ b/fs/super.c
> > @@ -607,8 +607,13 @@ int do_remount_sb(struct super_block *sb, int flags, 
> > void *data, int force)
> >  
> >     if (sb->s_op->remount_fs) {
> >             retval = sb->s_op->remount_fs(sb, &flags, data);
> > -           if (retval)
> > +           printk("remount_fs %s ret:%d\n", sb->s_id, retval);
>   This is a debugging leftover isn't it?
ohh.. Sorry this was left by occasion, will resend good one in a second.
> 
> > +           if (retval) {
> > +                   /* Remount failed, fallback quota to original state */
> > +                   if (remount_ro)
> > +                           vfs_dq_quota_on_remount(sb);
> >                     return retval;
> > +           }
>   Otherwise the patch looks OK. The issue doesn't seem too serious though,
> so I'm not sure how eagerly -stable maintainers will take the fix
> especially given mainline has fixed the problem differently.
IMHO the only reasonable target for this patch is 2.6.32 branch which is
base for major distros:  rhel6.x and debian6.x

> 
>                                                               Honza
> -- 
> Jan Kara <[email protected]>
> SUSE Labs, CR
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to