117b11469SPeter Avalos#------------------------------------------------------------------------------ 217b11469SPeter Avalos# zfs: file(1) magic for ZFS dumps 317b11469SPeter Avalos# 417b11469SPeter Avalos# From <rea-fbsd@codelabs.ru> 517b11469SPeter Avalos# ZFS dump header has the following structure (as per zfs_ioctl.h 617b11469SPeter Avalos# in FreeBSD with drr_type is set to DRR_BEGIN) 717b11469SPeter Avalos# 817b11469SPeter Avalos# enum { 917b11469SPeter Avalos# DRR_BEGIN, DRR_OBJECT, DRR_FREEOBJECTS, 1017b11469SPeter Avalos# DRR_WRITE, DRR_FREE, DRR_END, 1117b11469SPeter Avalos# } drr_type; 1217b11469SPeter Avalos# uint32_t drr_pad; 1317b11469SPeter Avalos# uint64_t drr_magic; 1417b11469SPeter Avalos# uint64_t drr_version; 1517b11469SPeter Avalos# uint64_t drr_creation_time; 1617b11469SPeter Avalos# dmu_objset_type_t drr_type; 1717b11469SPeter Avalos# uint32_t drr_pad; 1817b11469SPeter Avalos# uint64_t drr_toguid; 1917b11469SPeter Avalos# uint64_t drr_fromguid; 2017b11469SPeter Avalos# char drr_toname[MAXNAMELEN]; 2117b11469SPeter Avalos# 2217b11469SPeter Avalos# Backup magic is 0x00000002f5bacbac (quad word) 2317b11469SPeter Avalos# The drr_type is defined as 2417b11469SPeter Avalos# typedef enum dmu_objset_type { 2517b11469SPeter Avalos# DMU_OST_NONE, 2617b11469SPeter Avalos# DMU_OST_META, 2717b11469SPeter Avalos# DMU_OST_ZFS, 2817b11469SPeter Avalos# DMU_OST_ZVOL, 2917b11469SPeter Avalos# DMU_OST_OTHER, /* For testing only! */ 3017b11469SPeter Avalos# DMU_OST_ANY, /* Be careful! */ 3117b11469SPeter Avalos# DMU_OST_NUMTYPES 3217b11469SPeter Avalos# } dmu_objset_type_t; 3317b11469SPeter Avalos# 3417b11469SPeter Avalos# Almost all uint64_t fields are printed as the 32-bit ones (with high 3517b11469SPeter Avalos# 32 bits zeroed), because there is no simple way to print them as the 3617b11469SPeter Avalos# full 64-bit values. 3717b11469SPeter Avalos 3817b11469SPeter Avalos# Big-endian values 39*614728caSSascha Wildner8 string \000\000\000\002\365\272\313\254 ZFS snapshot (big-endian machine), 4082c5fa3eSPeter Avalos>20 belong x version %u, 4117b11469SPeter Avalos>32 belong 0 type: NONE, 4217b11469SPeter Avalos>32 belong 1 type: META, 4317b11469SPeter Avalos>32 belong 2 type: ZFS, 4417b11469SPeter Avalos>32 belong 3 type: ZVOL, 4517b11469SPeter Avalos>32 belong 4 type: OTHER, 4617b11469SPeter Avalos>32 belong 5 type: ANY, 4782c5fa3eSPeter Avalos>32 belong >5 type: UNKNOWN (%u), 4817b11469SPeter Avalos>40 byte x destination GUID: %02X 4917b11469SPeter Avalos>41 byte x %02X 5017b11469SPeter Avalos>42 byte x %02X 5117b11469SPeter Avalos>43 byte x %02X 5217b11469SPeter Avalos>44 byte x %02X 5317b11469SPeter Avalos>45 byte x %02X 5417b11469SPeter Avalos>46 byte x %02X 5517b11469SPeter Avalos>47 byte x %02X, 5617b11469SPeter Avalos>48 ulong >0 5717b11469SPeter Avalos>>52 ulong >0 5817b11469SPeter Avalos>>>48 byte x source GUID: %02X 5917b11469SPeter Avalos>>>49 byte x %02X 6017b11469SPeter Avalos>>>50 byte x %02X 6117b11469SPeter Avalos>>>51 byte x %02X 6217b11469SPeter Avalos>>>52 byte x %02X 6317b11469SPeter Avalos>>>53 byte x %02X 6417b11469SPeter Avalos>>>54 byte x %02X 6517b11469SPeter Avalos>>>55 byte x %02X, 6617b11469SPeter Avalos>56 string >\0 name: '%s' 6717b11469SPeter Avalos 6817b11469SPeter Avalos# Little-endian values 69*614728caSSascha Wildner8 string \254\313\272\365\002\000\000\000 ZFS snapshot (little-endian machine), 7082c5fa3eSPeter Avalos>16 lelong x version %u, 7117b11469SPeter Avalos>32 lelong 0 type: NONE, 7217b11469SPeter Avalos>32 lelong 1 type: META, 7317b11469SPeter Avalos>32 lelong 2 type: ZFS, 7417b11469SPeter Avalos>32 lelong 3 type: ZVOL, 7517b11469SPeter Avalos>32 lelong 4 type: OTHER, 7617b11469SPeter Avalos>32 lelong 5 type: ANY, 7782c5fa3eSPeter Avalos>32 lelong >5 type: UNKNOWN (%u), 7817b11469SPeter Avalos>47 byte x destination GUID: %02X 7917b11469SPeter Avalos>46 byte x %02X 8017b11469SPeter Avalos>45 byte x %02X 8117b11469SPeter Avalos>44 byte x %02X 8217b11469SPeter Avalos>43 byte x %02X 8317b11469SPeter Avalos>42 byte x %02X 8417b11469SPeter Avalos>41 byte x %02X 8517b11469SPeter Avalos>40 byte x %02X, 8617b11469SPeter Avalos>48 ulong >0 8717b11469SPeter Avalos>>52 ulong >0 8817b11469SPeter Avalos>>>55 byte x source GUID: %02X 8917b11469SPeter Avalos>>>54 byte x %02X 9017b11469SPeter Avalos>>>53 byte x %02X 9117b11469SPeter Avalos>>>52 byte x %02X 9217b11469SPeter Avalos>>>51 byte x %02X 9317b11469SPeter Avalos>>>50 byte x %02X 9417b11469SPeter Avalos>>>49 byte x %02X 9517b11469SPeter Avalos>>>48 byte x %02X, 9617b11469SPeter Avalos>56 string >\0 name: '%s' 97