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?

> +             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.

                                                                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