The outcome of one Linx.Cgroup.Reconcile.reconcile/4 pass.
cgroup limit writes are independent per interface file, so the pass is
best-effort: every op is attempted, and any that error land in :failed
rather than aborting the rest. (It shares the report shape of
Linx.Sysctl.Reconcile.Report and Linx.Netlink.Rtnl.Reconcile.Report; the
struct is uniform, the strategy is per subsystem — see the reconcile design
notes.)
Fields:
:converged?—trueiff nothing was left undone: no ops were needed, or every op applied.:applied— ops that succeeded this pass, in attempt order.:failed—{op, %Linx.Cgroup.Error{}}pairs for ops that errored.:pending— always[]for cgroup (best-effort attempts everything); the field exists for shape-parity with fail-fast subsystems.:last_applied— the updated ownership map to thread into the next pass (seeLinx.Cgroup.Reconcile). Carrying it here lets a loop do{:ok, report} = reconcile(cg, desired, report.last_applied)each tick.
Inspect
#Linx.Cgroup.Reconcile.Report<converged: 2 applied>
#Linx.Cgroup.Reconcile.Report<1 applied, 1 failed>
Summary
Types
@type t() :: %Linx.Cgroup.Reconcile.Report{ applied: [Linx.Cgroup.Reconcile.op()], converged?: boolean(), failed: [{Linx.Cgroup.Reconcile.op(), Linx.Cgroup.Error.t()}], last_applied: Linx.Cgroup.Reconcile.last_applied(), pending: [Linx.Cgroup.Reconcile.op()] }