0x09 / hfsfuse

FUSE driver for HFS+ filesystems
Other
77 stars 13 forks source link

"could not read catalogue header node" when opening a Time Machine Volume #15

Closed MarPlu closed 3 years ago

MarPlu commented 3 years ago

Used hfsfuse for backing up a Time Machine backup to AWS. Until recently, this was running fine in most cases with a buidl somewhere around Oct 2019. After having issues with accessing the "Latest" backup directory (recursive loop) I built the latest version, resulting in above error.

Setup: TimeMachine --> NFS --> Raspbian --> sparsebundlefs --> losetup --> hfsfuse Linux RASPI3 4.19.66-v7+ #1253 SMP Thu Aug 15 11:49:46 BST 2019 armv7l GNU/Linux

parted on dmg created by sparsebundlefs shows proper Disk: Number Start End Size File system Name Flags 1 20,5kB 210MB 210MB fat32 EFI System Partition boot, esp 2 210MB 2951GB 2951GB hfsx disk image

parted on loop device seems to find a proper file system: Number Start End Size File system Flags 1 0,00B 2951GB 2951GB hfsx

hfsfuse call: sudo hfsfuse "$LO" "$TM_MNT" --force -o ro,uid=$(id -u $USER),gid=$(id -g $USER),allow_other,rsrc_ext=.rsrc

hfsfuse throws "could not read catalogue header node"

0x09 commented 3 years ago

Hi @MarPlu Assuming you have hfsfuse built with ublio support, can you try mounting again with -o noublio and see if that results in the same error?
It looks like pread itself may be failing to read from your loopback device , so I'll push up something to print the actual posix error in that event as well.

edit: if you pull and rebuild now this will include a message like: read of 512 bytes at offset 1024 failed (block size 512): <error message> just before the catalog header message, which should help indicate what's going on here.

MarPlu commented 3 years ago

Built a new version hfsfuse version 0.110-427b7bf Built with: FUSE API v2.9 libhfs RCSID $NetBSD: libhfs.c,v 1.15 2018/12/30 22:40:00 sevan Exp $ ublio v0.1 utf8proc v1.3.0

Output: read of 512 bytes at offset 4195311616 failed (block size 512): Invalid argument could not read catalog header node Couldn't open volume: Invalid argument

same with -o noublio

0x09 commented 3 years ago

OK, I see the issue here. Since armv7 is a 32 bit architecture we're getting 32 bit file offsets by default, which is overflowing in the call to pread there. You can rebuild with CFLAGS=-D_FILE_OFFSET_BITS=64 make to fix it right now, but I'll add that back to the default configuration as well. This was the case previously but was broken in 606dedf5205f2953f5e55dce5ca5fddfbcee7eef.

Thanks for reporting this.