Upstream: zdb inode mapping
Unfortunately macOS reserves inode ID numbers 0-15, and we can not used them. In macOS port we simply map them really high IDs. Normally this is hidden inside the _os implementation, but this is the one place in the common source files. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Jorgen Lundman <lundman@lundman.net> Closes #12530
This commit is contained in:
parent
c634320e51
commit
49d8a99a4d
|
@ -94,6 +94,13 @@
|
||||||
(idx) == DMU_OTN_UINT64_DATA || (idx) == DMU_OTN_UINT64_METADATA ? \
|
(idx) == DMU_OTN_UINT64_DATA || (idx) == DMU_OTN_UINT64_METADATA ? \
|
||||||
DMU_OT_UINT64_OTHER : DMU_OT_NUMTYPES)
|
DMU_OT_UINT64_OTHER : DMU_OT_NUMTYPES)
|
||||||
|
|
||||||
|
/* Some platforms require part of inode IDs to be remapped */
|
||||||
|
#ifdef __APPLE__
|
||||||
|
#define ZDB_MAP_OBJECT_ID(obj) INO_XNUTOZFS(obj, 2)
|
||||||
|
#else
|
||||||
|
#define ZDB_MAP_OBJECT_ID(obj) (obj)
|
||||||
|
#endif
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
zdb_ot_name(dmu_object_type_t type)
|
zdb_ot_name(dmu_object_type_t type)
|
||||||
{
|
{
|
||||||
|
@ -3631,6 +3638,7 @@ parse_object_range(char *range, zopt_object_range_t *zor, char **msg)
|
||||||
*msg = "Invalid characters in object ID";
|
*msg = "Invalid characters in object ID";
|
||||||
rc = 1;
|
rc = 1;
|
||||||
}
|
}
|
||||||
|
zor->zor_obj_start = ZDB_MAP_OBJECT_ID(zor->zor_obj_start);
|
||||||
zor->zor_obj_end = zor->zor_obj_start;
|
zor->zor_obj_end = zor->zor_obj_start;
|
||||||
return (rc);
|
return (rc);
|
||||||
}
|
}
|
||||||
|
@ -3709,6 +3717,9 @@ parse_object_range(char *range, zopt_object_range_t *zor, char **msg)
|
||||||
}
|
}
|
||||||
zor->zor_flags = flags;
|
zor->zor_flags = flags;
|
||||||
|
|
||||||
|
zor->zor_obj_start = ZDB_MAP_OBJECT_ID(zor->zor_obj_start);
|
||||||
|
zor->zor_obj_end = ZDB_MAP_OBJECT_ID(zor->zor_obj_end);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
free(dup);
|
free(dup);
|
||||||
return (rc);
|
return (rc);
|
||||||
|
|
Loading…
Reference in New Issue