Hi Christian, Could you please pick up the patch? Thanks, Slava. On Tue, 2025-04-29 at 17:12 -0700, Viacheslav Dubeyko wrote: > The generic/001 test of xfstests suite fails and corrupts > the HFS volume: > > sudo ./check generic/001 > FSTYP -- hfs > PLATFORM -- Linux/x86_64 hfsplus-testing-0001 6.15.0-rc2+ #3 SMP > PREEMPT_DYNAMIC Fri Apr 25 17:13:00 PDT 2> > MKFS_OPTIONS -- /dev/loop51 > MOUNT_OPTIONS -- /dev/loop51 /mnt/scratch > > generic/001 32s ... _check_generic_filesystem: filesystem on > /dev/loop50 is inconsistent > (see /home/slavad/XFSTESTS-2/xfstests-dev/results//generic/001.full > for details) > > Ran: generic/001 > Failures: generic/001 > Failed 1 of 1 tests > > fsck.hfs -d -n ./test-image.bin > ** ./test-image.bin (NO WRITE) > Using cacheBlockSize=32K cacheTotalBlock=1024 > cacheSize=32768K. > Executing fsck_hfs (version 540.1-Linux). > ** Checking HFS volume. > The volume name is untitled > ** Checking extents overflow file. > ** Checking catalog file. > Unused node is not erased (node = 2) > Unused node is not erased (node = 4) > <skipped> > Unused node is not erased (node = 253) > Unused node is not erased (node = 254) > Unused node is not erased (node = 255) > Unused node is not erased (node = 256) > ** Checking catalog hierarchy. > ** Checking volume bitmap. > ** Checking volume information. > Verify Status: VIStat = 0x0000, ABTStat = 0x0000 EBTStat = 0x0000 > CBTStat = 0x0004 CatStat = 0x00000000 > ** The volume untitled was found corrupt and needs to be repaired. > volume type is HFS > primary MDB is at block 2 0x02 > alternate MDB is at block 20971518 0x13ffffe > primary VHB is at block 0 0x00 > alternate VHB is at block 0 0x00 > sector size = 512 0x200 > VolumeObject flags = 0x19 > total sectors for volume = 20971520 0x1400000 > total sectors for embedded volume = 0 0x00 > > This patch adds logic of clearing the deleted b-tree node. > > sudo ./check generic/001 > FSTYP -- hfs > PLATFORM -- Linux/x86_64 hfsplus-testing-0001 6.15.0-rc2+ #3 SMP > PREEMPT_DYNAMIC Fri Apr 25 17:13:00 PDT 2025 > MKFS_OPTIONS -- /dev/loop51 > MOUNT_OPTIONS -- /dev/loop51 /mnt/scratch > > generic/001 9s ... 32s > Ran: generic/001 > Passed all 1 tests > > fsck.hfs -d -n ./test-image.bin > ** ./test-image.bin (NO WRITE) > Using cacheBlockSize=32K cacheTotalBlock=1024 > cacheSize=32768K. > Executing fsck_hfs (version 540.1-Linux). > ** Checking HFS volume. > The volume name is untitled > ** Checking extents overflow file. > ** Checking catalog file. > ** Checking catalog hierarchy. > ** Checking volume bitmap. > ** Checking volume information. > ** The volume untitled appears to be OK. > > Signed-off-by: Viacheslav Dubeyko <slava@xxxxxxxxxxx> > --- > fs/hfs/bnode.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/fs/hfs/bnode.c b/fs/hfs/bnode.c > index cb823a8a6ba9..50ed4c855364 100644 > --- a/fs/hfs/bnode.c > +++ b/fs/hfs/bnode.c > @@ -482,6 +482,7 @@ void hfs_bnode_put(struct hfs_bnode *node) > if (test_bit(HFS_BNODE_DELETED, &node->flags)) { > hfs_bnode_unhash(node); > spin_unlock(&tree->hash_lock); > + hfs_bnode_clear(node, 0, tree->node_size); > hfs_bmap_free(node); > hfs_bnode_free(node); > return;