Re: [PATCH v2] hfs: fix not erasing deleted b-tree node issue

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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;





[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [NTFS 3]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [NTFS 3]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux