|
@@ -1298,6 +1298,9 @@ int f2fs_commit_super(struct f2fs_sb_info *sbi, bool recover)
|
|
|
struct buffer_head *bh;
|
|
|
int err;
|
|
|
|
|
|
+ if (f2fs_readonly(sbi->sb) || bdev_read_only(sbi->sb->s_bdev))
|
|
|
+ return -EROFS;
|
|
|
+
|
|
|
/* write back-up superblock first */
|
|
|
bh = sb_getblk(sbi->sb, sbi->valid_super_block ? 0: 1);
|
|
|
if (!bh)
|
|
@@ -1565,7 +1568,7 @@ try_onemore:
|
|
|
kfree(options);
|
|
|
|
|
|
/* recover broken superblock */
|
|
|
- if (recovery && !f2fs_readonly(sb) && !bdev_read_only(sb->s_bdev)) {
|
|
|
+ if (recovery) {
|
|
|
err = f2fs_commit_super(sbi, true);
|
|
|
f2fs_msg(sb, KERN_INFO,
|
|
|
"Try to recover %dth superblock, ret: %ld",
|