fixup for 5c87b6864
Add in missing global state xor for each sub page within a folder.
This commit is contained in:
@@ -3194,6 +3194,7 @@ static int lfs_dir_prep_removal(lfs_t *lfs, struct lfs_mlist *dir,
|
|||||||
lfs_mdir_t *newcwd, uint16_t newid, lfs_block_t *pair,
|
lfs_mdir_t *newcwd, uint16_t newid, lfs_block_t *pair,
|
||||||
lfs_gstate_t *tmp_gstate)
|
lfs_gstate_t *tmp_gstate)
|
||||||
{
|
{
|
||||||
|
lfs_gstate_t split_gstate;
|
||||||
lfs_stag_t res = lfs_dir_get(lfs, newcwd, LFS_MKTAG(0x700, 0x3ff, 0),
|
lfs_stag_t res = lfs_dir_get(lfs, newcwd, LFS_MKTAG(0x700, 0x3ff, 0),
|
||||||
LFS_MKTAG(LFS_TYPE_STRUCT, newid, 8), pair);
|
LFS_MKTAG(LFS_TYPE_STRUCT, newid, 8), pair);
|
||||||
if (res < 0) {
|
if (res < 0) {
|
||||||
@@ -3201,6 +3202,8 @@ static int lfs_dir_prep_removal(lfs_t *lfs, struct lfs_mlist *dir,
|
|||||||
}
|
}
|
||||||
lfs_pair_fromle32(pair);
|
lfs_pair_fromle32(pair);
|
||||||
|
|
||||||
|
memset(tmp_gstate, 0, sizeof(*tmp_gstate));
|
||||||
|
|
||||||
int err = lfs_dir_fetch(lfs, &dir->m, pair);
|
int err = lfs_dir_fetch(lfs, &dir->m, pair);
|
||||||
if (err) {
|
if (err) {
|
||||||
return err;
|
return err;
|
||||||
@@ -3224,7 +3227,8 @@ static int lfs_dir_prep_removal(lfs_t *lfs, struct lfs_mlist *dir,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Before we fetch the next block, update our fetched gstate xor
|
// Before we fetch the next block, update our fetched gstate xor
|
||||||
lfs_dir_getgstate(lfs, &dir->m, tmp_gstate);
|
lfs_dir_getgstate(lfs, &dir->m, &split_gstate);
|
||||||
|
lfs_gstate_xor(tmp_gstate, &split_gstate);
|
||||||
|
|
||||||
err = lfs_dir_fetch(lfs, &dir->m, dir->m.tail);
|
err = lfs_dir_fetch(lfs, &dir->m, dir->m.tail);
|
||||||
if (err) {
|
if (err) {
|
||||||
|
|||||||
Reference in New Issue
Block a user