Skip to content
Snippets Groups Projects
  • Vladimir Sementsov-Ogievskiy's avatar
    8cad15b1
    util: add transactions.c · 8cad15b1
    Vladimir Sementsov-Ogievskiy authored
    
    Add simple transaction API to use in further update of block graph
    operations.
    
    Supposed usage is:
    
    - "prepare" is main function of the action and it should make the main
      effect of the action to be visible for the following actions, keeping
      possibility of roll-back, saving necessary things in action state,
      which is prepended to the action list (to do that, prepare func
      should call tran_add()). So, driver struct doesn't include "prepare"
      field, as it is supposed to be called directly.
    
    - commit/rollback is supposed to be called for the list of action
      states, to commit/rollback all the actions in reverse order
    
    - When possible "commit" should not make visible effect for other
      actions, which make possible transparent logical interaction between
      actions.
    
    Signed-off-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Reviewed-by: default avatarKevin Wolf <kwolf@redhat.com>
    Message-Id: <20210428151804.439460-9-vsementsov@virtuozzo.com>
    Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
    8cad15b1
    History
    util: add transactions.c
    Vladimir Sementsov-Ogievskiy authored
    
    Add simple transaction API to use in further update of block graph
    operations.
    
    Supposed usage is:
    
    - "prepare" is main function of the action and it should make the main
      effect of the action to be visible for the following actions, keeping
      possibility of roll-back, saving necessary things in action state,
      which is prepended to the action list (to do that, prepare func
      should call tran_add()). So, driver struct doesn't include "prepare"
      field, as it is supposed to be called directly.
    
    - commit/rollback is supposed to be called for the list of action
      states, to commit/rollback all the actions in reverse order
    
    - When possible "commit" should not make visible effect for other
      actions, which make possible transparent logical interaction between
      actions.
    
    Signed-off-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Reviewed-by: default avatarKevin Wolf <kwolf@redhat.com>
    Message-Id: <20210428151804.439460-9-vsementsov@virtuozzo.com>
    Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>