xref: /dflybsd-src/contrib/file/magic/Magdir/zfs (revision 7b80531f545c7d3c51c1660130c71d01f6bccbe0)
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