.\" Man page generated from reStructuredText. . .TH "CEPH-DENCODER" "8" "Aug 28, 2019" "dev" "Ceph" .SH NAME ceph-dencoder \- ceph encoder/decoder utility . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .SH SYNOPSIS .nf \fBceph\-dencoder\fP [commands...] .fi .sp .SH DESCRIPTION .sp \fBceph\-dencoder\fP is a utility to encode, decode, and dump ceph data structures. It is used for debugging and for testing inter\-version compatibility. .sp \fBceph\-dencoder\fP takes a simple list of commands and performs them in order. .SH COMMANDS .INDENT 0.0 .TP .B version Print the version string for the \fBceph\-dencoder\fP binary. .UNINDENT .INDENT 0.0 .TP .B import Read a binary blob of encoded data from the given file. It will be placed in an in\-memory buffer. .UNINDENT .INDENT 0.0 .TP .B export Write the contents of the current in\-memory buffer to the given file. .UNINDENT .INDENT 0.0 .TP .B list_types List the data types known to this build of \fBceph\-dencoder\fP\&. .UNINDENT .INDENT 0.0 .TP .B type Select the given type for future \fBencode\fP or \fBdecode\fP operations. .UNINDENT .INDENT 0.0 .TP .B skip Seek into the imported file before reading data structure, use this with objects that have a preamble/header before the object of interest. .UNINDENT .INDENT 0.0 .TP .B decode Decode the contents of the in\-memory buffer into an instance of the previously selected type. If there is an error, report it. .UNINDENT .INDENT 0.0 .TP .B encode Encode the contents of the in\-memory instance of the previously selected type to the in\-memory buffer. .UNINDENT .INDENT 0.0 .TP .B dump_json Print a JSON\-formatted description of the in\-memory object. .UNINDENT .INDENT 0.0 .TP .B count_tests Print the number of built\-in test instances of the previosly selected type that \fBceph\-dencoder\fP is able to generate. .UNINDENT .INDENT 0.0 .TP .B select_test Select the given build\-in test instance as a the in\-memory instance of the type. .UNINDENT .INDENT 0.0 .TP .B get_features Print the decimal value of the feature set supported by this version of \fBceph\-dencoder\fP\&. Each bit represents a feature. These correspond to CEPH_FEATURE_* defines in src/include/ceph_features.h. .UNINDENT .INDENT 0.0 .TP .B set_features Set the feature bits provided to \fBencode\fP to \fIf\fP\&. This allows you to encode objects such that they can be understood by old versions of the software (for those types that support it). .UNINDENT .SH EXAMPLE .sp Say you want to examine an attribute on an object stored by \fBceph\-osd\fP\&. You can do this: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C $ cd /mnt/osd.12/current/2.b_head $ attr \-l foo_bar_head_EFE6384B Attribute "ceph.snapset" has a 31 byte value for foo_bar_head_EFE6384B Attribute "ceph._" has a 195 byte value for foo_bar_head_EFE6384B $ attr foo_bar_head_EFE6384B \-g ceph._ \-q > /tmp/a $ ceph\-dencoder type object_info_t import /tmp/a decode dump_json { "oid": { "oid": "foo", "key": "bar", "snapid": \-2, "hash": 4024842315, "max": 0}, "locator": { "pool": 2, "preferred": \-1, "key": "bar"}, "category": "", "version": "9\(aq1", "prior_version": "0\(aq0", "last_reqid": "client.4116.0:1", "size": 1681, "mtime": "2012\-02\-21 08:58:23.666639", "lost": 0, "wrlock_by": "unknown.0.0:0", "snaps": [], "truncate_seq": 0, "truncate_size": 0, "watchers": {}} .ft P .fi .UNINDENT .UNINDENT .sp Alternatively, perhaps you wish to dump an internal CephFS metadata object, you might do that like this: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C $ rados \-p metadata get mds_snaptable mds_snaptable.bin $ ceph\-dencoder type SnapServer skip 8 import mds_snaptable.bin decode dump_json { "snapserver": { "last_snap": 1, "pending_noop": [], "snaps": [], "need_to_purge": {}, "pending_create": [], "pending_destroy": []}} .ft P .fi .UNINDENT .UNINDENT .SH AVAILABILITY .sp \fBceph\-dencoder\fP is part of Ceph, a massively scalable, open\-source, distributed storage system. Please refer to the Ceph documentation at \fI\%http://ceph.com/docs\fP for more information. .SH SEE ALSO .sp ceph(8) .SH COPYRIGHT 2010-2019, Inktank Storage, Inc. and contributors. Licensed under Creative Commons Attribution Share Alike 3.0 (CC-BY-SA-3.0) .\" Generated by docutils manpage writer. .