Wednesday November 6, 2019
Stratis 2.0 is a significant update for both the daemon and the CLI. The
changes to the daemon are covered first, followed by the changes to the
This release makes the D-Bus API more robust, reliable, predictable, and
extensible. There are several significant changes:
The set of D-Bus properties has been reduced to a core set of fundamental
and stable properties. Other filesystem, pool, or block devices properties are
now obtainable via methods in the
FetchProperties interface. This change
increases the robustness of the D-Bus interface to failures occurring in any
particular pool, filesystem, or block device, and decreases the computational
cost of most operations requested by the Stratis CLI. Several properties,
formerly returned as D-Bus properties, are now unavailable by means of the
D-Bus. In every case, the reason for removing the property was that it did not
represent a well-defined value. See project issue 52 for further details.
All D-Bus method calls are idempotent. This should make writing scripts
using the D-Bus API much simpler and make reasoning about the behavior
of the engine more straightforward. Henceforth, we will treat as a bug any
non-idempotent behavior in the D-Bus API. See project issue 51 for further
All D-Bus size values are now returned in bytes. Again, this should make
writing scripts against the D-Bus more straightforward, since it will be
unnecessary for the script writer to change their interpretation of the number
returned on the D-Bus depending on the value that it represents. See
stratisd issue 1243 for further details.
Future enhancements to the D-Bus API will be implemented by means of
additional versioned interfaces.
Please consult the D-Bus API Reference for the precise D-Bus specification.
This release requires stratisd 2.0.0. The user will observe the following
The CLI is significantly more robust. Previously, there was a category of
error conditions in pools, filesystems, and block devices that would make the
CLI virtually unusable; this problem has now been entirely resolved. See
project issue 52 for further details.
The CLI now reports errors consistently in conditions where a human user
would generally expect an error to be reported. Previously, many commands in
the CLI were idempotent, to facilitate scripting. Now there is a clear
distinction between the CLI behavior and the stratisd D-Bus API behavior: the
CLI behavior is designed strictly according to the expectations of a human
user, the stratisd D-Bus API is the programmable interface. See
project issue 51 for further details.
As always, anyone wishing to implement a program that uses Stratis for
storage management is strongly advised to make use of the stratisd D-Bus API
rather than the CLI.