diff options
author | Anuradha Talur <atalur@redhat.com> | 2016-03-17 15:40:50 +0530 |
---|---|---|
committer | Niels de Vos <ndevos@redhat.com> | 2016-04-01 02:48:22 -0700 |
commit | bc520eb3f3ee6072dcd557e7604c4a27096460e9 (patch) | |
tree | 19aee1a902bbd1497d0eda46f2340a05d2d8c2f2 | |
parent | 5706601e64d1b010828c5673b3bc7a44819372b3 (diff) |
feature page for compound fops
Change-Id: Icd84e5c52396214b745bbb44f51cb7e6fed883e7
Signed-off-by: Anuradha Talur <atalur@redhat.com>
Reviewed-on: http://review.gluster.org/13761
Reviewed-by: Niels de Vos <ndevos@redhat.com>
Tested-by: Niels de Vos <ndevos@redhat.com>
-rw-r--r-- | under_review/compound-fops.md | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/under_review/compound-fops.md b/under_review/compound-fops.md new file mode 100644 index 0000000..3cbbaa6 --- /dev/null +++ b/under_review/compound-fops.md @@ -0,0 +1,135 @@ +## Compound fops + +### Summary : +A compound fop provides a mechanism to combine two or more fops together. +The main motivation for introducing compound fops is to reduce network +round trips by sending multiple fops in one network operation. + +--------- + +### Owners : +Anuradha Talur +Pranith Kumar Karampuri + +-------- +### Current status : +Under development. + +---------------- +### Design discussions : +http://www.gluster.org/pipermail/gluster-devel/2015-December/047297.html + +--------------------- +### Related Feature Requests and Bugs : + +https://bugzilla.redhat.com/show_bug.cgi?id=1303829 + +----------------------------------- + +### Detailed Description : + +How are fops compounded? +Each xlator on the client stack that needs to combine two or more fops, +compounds the fop itself using the API provided. +The arguments required to perform both the fops are given to the API, +which does the job of populating them +in a common structure used for compound fops. +A compound structure would look like : + +```C +typedef struct { + int fop_enum; + int fop_length; + int *fop_enum; + default_args_t *args; +} compound_args_t; + +typedef struct { + int fop_enum; + int fop_length; + default_args_cbk_t *rsp_list; +} compound_args_cbk_t; +``` + +Decompounder : +A decompounder xlator lies in the server stack. +Once protocol server passes the request structure to decompounder, it serially +processes the fops enlisted in the compound fop. The results provided by each +fop is stored in compound response structure. Once all the fops are processed +the compound response is returned. If any fop in the compound fop fails, next +fops in the list are not executed; appropriate error numbers are returned. + +---------------------- + +### Benefit to GlusterFS : + +Reducing network roundtrips will reduce the latency and increase the +throughput of fops. + +---------------------- +### Scope : + +------- + +#### Nature of proposed change : + +- New fop called compound. +- New xlator called decompounder on the brick which should be loaded under + protocol server. +- API's for packing compound fops. +- Introducing new RPC XDR's to support compound fops. + +------------------------------- + +#### Implications on manageability : + +NONE + +------------------------------- +#### Implications on presentation layer : + +NONE + +------------------------------- +#### Implications on persistence layer : + +NONE + +------------------------------- +#### Implications on 'GlusterFS' backend : + +NONE + +------------------------------- +#### Modification to GlusterFS metadata : + +NONE + +------------------------------- +#### Implications on glusterd : +Changes related to adding decompounder in server-stack volfiles. + +------------------------------- + +#### Dependencies : + +NONE + +------------------------------- +#### Documentation : + +TBD. + +------------------------------- +### Status : + +In development. + +------------------------------- + +### Comments and Discussion : + +See http://www.gluster.org/pipermail/gluster-devel/2015-December/047297.html . + +-------------------------- + |