3 unstable releases

0.2.1 Aug 23, 2023
0.2.0 Jan 15, 2023
0.1.0 Oct 18, 2021

#424 in #storage

Download history 10/week @ 2023-12-18 2/week @ 2023-12-25 21/week @ 2024-01-01 30/week @ 2024-01-08 23/week @ 2024-01-22 16/week @ 2024-01-29 24/week @ 2024-02-05 19/week @ 2024-02-12 32/week @ 2024-02-19 39/week @ 2024-02-26 22/week @ 2024-03-04 23/week @ 2024-03-11 21/week @ 2024-03-18 195/week @ 2024-03-25 55/week @ 2024-04-01

297 downloads per month
Used in stratisd

MPL-2.0 license

14KB
241 lines

stratisd_proc_macros

This crate is currently used to hold procedural macros for stratisd used to reduce boilerplate code through code generation.

#[strat_pool_impl_gen]

This macro is meant to be attached to an impl... StratPool item. It will add

Attributes

#[pool_rollback]: This attribute attached to a method in the impl block indicates that Stratis should monitor the return value of this method for potential rollback failures and, if detected, should put the pool in maintenance only mode until the rollback failure is corrected. All methods that need to handle a pool rollback by definition must take a &mut self reference so that the maintenance mode flag may be set on rollback failure.

#[pool_mutatating_action(STATE)]: This attribute attached to a method in the impl block indicates that this action can mutate the internal state of the pool. This includes any changes to the underlying data structures or metadata on the device. All methods that take a &mut self reference are by definition mutating actions. However, there may also be methods with a &self reference that are also mutating actions. STATE corresponds to a variant of the ActionAvailability enum such as Full, NoRequests, etc.

Dependencies

~1.5MB
~34K SLoC