diff options
Diffstat (limited to 'fs/hpfs/super.c')
-rw-r--r-- | fs/hpfs/super.c | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/fs/hpfs/super.c b/fs/hpfs/super.c index 68a9bed05628..a561591896bd 100644 --- a/fs/hpfs/super.c +++ b/fs/hpfs/super.c | |||
@@ -628,6 +628,9 @@ static int hpfs_fill_super(struct super_block *s, void *options, int silent) | |||
628 | goto bail4; | 628 | goto bail4; |
629 | } | 629 | } |
630 | 630 | ||
631 | if (spareblock->n_spares_used) | ||
632 | hpfs_load_hotfix_map(s, spareblock); | ||
633 | |||
631 | /* Load bitmap directory */ | 634 | /* Load bitmap directory */ |
632 | if (!(sbi->sb_bmp_dir = hpfs_load_bitmap_directory(s, le32_to_cpu(superblock->bitmaps)))) | 635 | if (!(sbi->sb_bmp_dir = hpfs_load_bitmap_directory(s, le32_to_cpu(superblock->bitmaps)))) |
633 | goto bail4; | 636 | goto bail4; |
@@ -647,18 +650,6 @@ static int hpfs_fill_super(struct super_block *s, void *options, int silent) | |||
647 | mark_buffer_dirty(bh2); | 650 | mark_buffer_dirty(bh2); |
648 | } | 651 | } |
649 | 652 | ||
650 | if (spareblock->hotfixes_used || spareblock->n_spares_used) { | ||
651 | if (errs >= 2) { | ||
652 | pr_err("Hotfixes not supported here, try chkdsk\n"); | ||
653 | mark_dirty(s, 0); | ||
654 | goto bail4; | ||
655 | } | ||
656 | hpfs_error(s, "hotfixes not supported here, try chkdsk"); | ||
657 | if (errs == 0) | ||
658 | pr_err("Proceeding, but your filesystem will be probably corrupted by this driver...\n"); | ||
659 | else | ||
660 | pr_err("This driver may read bad files or crash when operating on disk with hotfixes.\n"); | ||
661 | } | ||
662 | if (le32_to_cpu(spareblock->n_dnode_spares) != le32_to_cpu(spareblock->n_dnode_spares_free)) { | 653 | if (le32_to_cpu(spareblock->n_dnode_spares) != le32_to_cpu(spareblock->n_dnode_spares_free)) { |
663 | if (errs >= 2) { | 654 | if (errs >= 2) { |
664 | pr_err("Spare dnodes used, try chkdsk\n"); | 655 | pr_err("Spare dnodes used, try chkdsk\n"); |