1234250Sobrien#------------------------------------------------------------------------------ 2234250Sobrien# zfs: file(1) magic for ZFS dumps 3234250Sobrien# 4234250Sobrien# From <rea-fbsd@codelabs.ru> 5234250Sobrien# ZFS dump header has the following structure (as per zfs_ioctl.h 6234250Sobrien# in FreeBSD with drr_type is set to DRR_BEGIN) 7234250Sobrien# 8234250Sobrien# enum { 9234250Sobrien# DRR_BEGIN, DRR_OBJECT, DRR_FREEOBJECTS, 10234250Sobrien# DRR_WRITE, DRR_FREE, DRR_END, 11234250Sobrien# } drr_type; 12234250Sobrien# uint32_t drr_pad; 13234250Sobrien# uint64_t drr_magic; 14234250Sobrien# uint64_t drr_version; 15234250Sobrien# uint64_t drr_creation_time; 16234250Sobrien# dmu_objset_type_t drr_type; 17234250Sobrien# uint32_t drr_pad; 18234250Sobrien# uint64_t drr_toguid; 19234250Sobrien# uint64_t drr_fromguid; 20234250Sobrien# char drr_toname[MAXNAMELEN]; 21234250Sobrien# 22234250Sobrien# Backup magic is 0x00000002f5bacbac (quad word) 23234250Sobrien# The drr_type is defined as 24234250Sobrien# typedef enum dmu_objset_type { 25234250Sobrien# DMU_OST_NONE, 26234250Sobrien# DMU_OST_META, 27234250Sobrien# DMU_OST_ZFS, 28234250Sobrien# DMU_OST_ZVOL, 29234250Sobrien# DMU_OST_OTHER, /* For testing only! */ 30234250Sobrien# DMU_OST_ANY, /* Be careful! */ 31234250Sobrien# DMU_OST_NUMTYPES 32234250Sobrien# } dmu_objset_type_t; 33234250Sobrien# 34234250Sobrien# Almost all uint64_t fields are printed as the 32-bit ones (with high 35234250Sobrien# 32 bits zeroed), because there is no simple way to print them as the 36234250Sobrien# full 64-bit values. 37234250Sobrien 38234250Sobrien# Big-endian values 39234250Sobrien8 string \000\000\000\002\365\272\313\254 ZFS shapshot (big-endian machine), 40267843Sdelphij>20 belong x version %u, 41234250Sobrien>32 belong 0 type: NONE, 42234250Sobrien>32 belong 1 type: META, 43234250Sobrien>32 belong 2 type: ZFS, 44234250Sobrien>32 belong 3 type: ZVOL, 45234250Sobrien>32 belong 4 type: OTHER, 46234250Sobrien>32 belong 5 type: ANY, 47267843Sdelphij>32 belong >5 type: UNKNOWN (%u), 48234250Sobrien>40 byte x destination GUID: %02X 49234250Sobrien>41 byte x %02X 50234250Sobrien>42 byte x %02X 51234250Sobrien>43 byte x %02X 52234250Sobrien>44 byte x %02X 53234250Sobrien>45 byte x %02X 54234250Sobrien>46 byte x %02X 55234250Sobrien>47 byte x %02X, 56234250Sobrien>48 ulong >0 57234250Sobrien>>52 ulong >0 58234250Sobrien>>>48 byte x source GUID: %02X 59234250Sobrien>>>49 byte x %02X 60234250Sobrien>>>50 byte x %02X 61234250Sobrien>>>51 byte x %02X 62234250Sobrien>>>52 byte x %02X 63234250Sobrien>>>53 byte x %02X 64234250Sobrien>>>54 byte x %02X 65234250Sobrien>>>55 byte x %02X, 66234250Sobrien>56 string >\0 name: '%s' 67234250Sobrien 68234250Sobrien# Little-endian values 69234250Sobrien8 string \254\313\272\365\002\000\000\000 ZFS shapshot (little-endian machine), 70267843Sdelphij>16 lelong x version %u, 71234250Sobrien>32 lelong 0 type: NONE, 72234250Sobrien>32 lelong 1 type: META, 73234250Sobrien>32 lelong 2 type: ZFS, 74234250Sobrien>32 lelong 3 type: ZVOL, 75234250Sobrien>32 lelong 4 type: OTHER, 76234250Sobrien>32 lelong 5 type: ANY, 77267843Sdelphij>32 lelong >5 type: UNKNOWN (%u), 78234250Sobrien>47 byte x destination GUID: %02X 79234250Sobrien>46 byte x %02X 80234250Sobrien>45 byte x %02X 81234250Sobrien>44 byte x %02X 82234250Sobrien>43 byte x %02X 83234250Sobrien>42 byte x %02X 84234250Sobrien>41 byte x %02X 85234250Sobrien>40 byte x %02X, 86234250Sobrien>48 ulong >0 87234250Sobrien>>52 ulong >0 88234250Sobrien>>>55 byte x source GUID: %02X 89234250Sobrien>>>54 byte x %02X 90234250Sobrien>>>53 byte x %02X 91234250Sobrien>>>52 byte x %02X 92234250Sobrien>>>51 byte x %02X 93234250Sobrien>>>50 byte x %02X 94234250Sobrien>>>49 byte x %02X 95234250Sobrien>>>48 byte x %02X, 96234250Sobrien>56 string >\0 name: '%s' 97