These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / fs / hpfs / map.c
index 442770e..a69bbc1 100644 (file)
@@ -130,6 +130,32 @@ __le32 *hpfs_load_bitmap_directory(struct super_block *s, secno bmp)
        return b;
 }
 
+void hpfs_load_hotfix_map(struct super_block *s, struct hpfs_spare_block *spareblock)
+{
+       struct quad_buffer_head qbh;
+       u32 *directory;
+       u32 n_hotfixes, n_used_hotfixes;
+       unsigned i;
+
+       n_hotfixes = le32_to_cpu(spareblock->n_spares);
+       n_used_hotfixes = le32_to_cpu(spareblock->n_spares_used);
+
+       if (n_hotfixes > 256 || n_used_hotfixes > n_hotfixes) {
+               hpfs_error(s, "invalid number of hotfixes: %u, used: %u", n_hotfixes, n_used_hotfixes);
+               return;
+       }
+       if (!(directory = hpfs_map_4sectors(s, le32_to_cpu(spareblock->hotfix_map), &qbh, 0))) {
+               hpfs_error(s, "can't load hotfix map");
+               return;
+       }
+       for (i = 0; i < n_used_hotfixes; i++) {
+               hpfs_sb(s)->hotfix_from[i] = le32_to_cpu(directory[i]);
+               hpfs_sb(s)->hotfix_to[i] = le32_to_cpu(directory[n_hotfixes + i]);
+       }
+       hpfs_sb(s)->n_hotfixes = n_used_hotfixes;
+       hpfs_brelse4(&qbh);
+}
+
 /*
  * Load fnode to memory
  */