> +static int ubifs_freeze_super(struct super_block *sb)
> +{
> +     struct ubifs_info *c = sb->s_fs_info;
> +     int err;
> +
> +     dbg_gen("starting");
> +     /* freeze_super always succeeds if file system is in read-only.
> +      * however if there are errors, UBIFS is switched to read-only mode.
> +      * so @ro_error should be checked.
> +      */
> +     err = freeze_super(sb);
> +     if (!err && c->ro_error) {
> +             thaw_super(sb);
> +             return -EIO;
> +     }
> +     return err;

This is just broken.  First ubifs should still properly propagate
the errors, and second freezing/unfreezing read only file systems is
perfectly valid, and third the freeze_super method is a special
hack for gfs2 that should not gain additional users.

Reply via email to