Sfoglia il codice sorgente

Fail mount when the block size changes

When the on-disk block size doesn't match the config block size, it is
possible to get file corruption. For instance, if the num blocks was
0x200 and we re-mount with 0x100 files could be corrupt.

If we re-mount with a larger number of blocks things should be safer,
but could be handled with a resize option or perhaps a mount flag to
ignore this parameter.
Colin Foster 4 anni fa
parent
commit
3efb8e44f3
1 ha cambiato i file con 6 aggiunte e 0 eliminazioni
  1. 6 0
      lfs.c

+ 6 - 0
lfs.c

@@ -3761,6 +3761,12 @@ static int lfs_rawmount(lfs_t *lfs, const struct lfs_config *cfg) {
 
                 lfs->attr_max = superblock.attr_max;
             }
+
+            if (superblock.block_count != lfs->cfg->block_count)
+            {
+                err = LFS_ERR_CORRUPT;
+                goto cleanup;
+            }
         }
 
         // has gstate?