diff --git a/lfs.c b/lfs.c index 3419e41..a1f2ecc 100644 --- a/lfs.c +++ b/lfs.c @@ -1503,9 +1503,13 @@ static int lfs_dir_compact(lfs_t *lfs, } } #ifdef LFS_MIGRATE - } else if (lfs_pair_cmp(dir->pair, lfs->root) == 0 && lfs->lfs1) { - // we can't relocate our root during migrations, as this would - // cause the superblock to get updated, which would clobber v1 + } else if (lfs->lfs1) { + // do not proactively relocate blocks during migrations, this + // can cause a number of failure states such: clobbering the + // v1 superblock if we relocate root, and invalidating directory + // pointers if we relocate the head of a directory. On top of + // this, relocations increase the overall complexity of + // lfs_migration, which is already a delicate operation. #endif } else { // we're writing too much, time to relocate