Am 12.03.2013 um 09:30 hat Wenchao Xia geschrieben:
I redesigned the structure, Following is the fake code:
typedef struct BdrvActionOps {
/* check the request's validation, allocate p_opaque if needed */
int (*check)(BlockdevAction *action, void **p_opaque, Error **errp);
/* take the action */
int (*submit)(BlockdevAction *action, void *opaque, Error **errp);
/* update emulator */
int (*commit)(BlockdevAction *action, void *opaque, Error **errp);
/* cancel the action */
int (*rollback)(BlockdevAction *action, void *opaque, Error **errp);
} BdrvActionOps;
Why do you need the split of prepare into check/submit?
If you have prepare/commit/abort, everybody will recognise this as the
standard transaction pattern because this is just how it's done.
Deviating from it needs a good justification in my opinion.
Kevin