On 9/28/19 4:12 PM, Pawel Wieczorkiewicz wrote:
> This is an implementation of 4 new livepatch module vetoing hooks,
> that can be optionally supplied along with modules.
> Hooks that currently exists in the livepatch mechanism aren't agile
> enough and have various limitations:
> * run only from within a quiescing zone
> * cannot conditionally prevent applying or reverting
> * do not have access to the module context
> To address these limitations the following has been implemented:
> 1) pre-apply hook
>   runs before the apply action is scheduled for execution. Its main
>   purpose is to prevent from applying a livepatch when certain
>   expected conditions aren't met or when mutating actions implemented
>   in the hook fail or cannot be executed.
> 
> 2) post-apply hook
>   runs after the apply action has been executed and quiescing zone
>   exited. Its main purpose is to provide an ability to follow-up on
>   actions performed by the pre- hook, when module application was
>   successful or undo certain preparation steps of the pre- hook in
>   case of a failure. The success/failure error code is provided to
>   the post- hooks via the rc field of the payload structure.
> 
> 3) pre-revert hook
>   runs before the revert action is scheduled for execution. Its main
>   purpose is to prevent from reverting a livepatch when certain
>   expected conditions aren't met or when mutating actions implemented
>   in the hook fail or cannot be executed.
> 
> 4) post-revert hook
>   runs after the revert action has been executed and quiescing zone
>   exited. Its main purpose is to perform cleanup of all previously
>   executed mutating actions in order to restore the original system
>   state from before the current module application.
>   The success/failure error code is provided to the post- hooks via
>   the rc field of the payload structure.
> 
> The replace action performs atomically the following actions:
> - revert all applied modules
> - apply a single replacement module.
> With the vetoing hooks in place various inter-hook dependencies may
> arise. Also, during the revert part of the operation certain vetoing
> hooks may detect failing conditions that previously were satisfied.
> That could in turn lead to situation when the revert part must be
> rolled back with all the pre- and post- hooks re-applied, which again
> can't be guaranteed to always succeed.
> The simplest response to this complication is to disallow the replace
> action completely on modules with vetoing hooks.
> 
> Signed-off-by: Pawel Wieczorkiewicz <wipa...@amazon.de>
> Reviewed-by: Andra-Irina Paraschiv <andra...@amazon.com>
> Reviewed-by: Petre Eftime <epe...@amazon.com>
> Reviewed-by: Martin Pohlack <mpohl...@amazon.de>
> Reviewed-by: Norbert Manthey <nmant...@amazon.de>
> Signed-off-by: Konrad Rzeszutek Wilk <konrad.w...@oracle.com>
Reviewed-by: Ross Lagerwall <ross.lagerw...@citrix.com>

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Reply via email to