diff options
author | Amar Tumballi <amarts@redhat.com> | 2018-07-27 23:11:51 +0530 |
---|---|---|
committer | Amar Tumballi <amarts@redhat.com> | 2018-09-04 09:15:49 +0000 |
commit | a105b25915a2b9c900957c71443e0be2ef5fa9ec (patch) | |
tree | 78861ad2ca826c2bef34c1e5e875d8ae68da52e5 /libglusterfs | |
parent | 53e6e621408bca1e053caa2f93af84788edb2dfa (diff) |
classification: provide infra to start labelling features/components
`doc/xlator-classification.md` talks about the reasoning and expectations
Reviewers are expected to check the 'category' of new
option / translator added in the codebase, and make sure the flag
is always properly set. It helps to keep the 'expectation' proper
on the codebase.
updates: #430
Change-Id: I2bfc9934a5f6eed77fcc3e20364046242decc82c
Signed-off-by: Amar Tumballi <amarts@redhat.com>
Diffstat (limited to 'libglusterfs')
-rw-r--r-- | libglusterfs/src/glusterfs.h | 29 | ||||
-rw-r--r-- | libglusterfs/src/options.h | 12 | ||||
-rw-r--r-- | libglusterfs/src/xlator.c | 2 | ||||
-rw-r--r-- | libglusterfs/src/xlator.h | 6 |
4 files changed, 45 insertions, 4 deletions
diff --git a/libglusterfs/src/glusterfs.h b/libglusterfs/src/glusterfs.h index 423804300a3..31fb65b8660 100644 --- a/libglusterfs/src/glusterfs.h +++ b/libglusterfs/src/glusterfs.h @@ -390,6 +390,35 @@ typedef enum { GF_FOP_PRI_MAX, /* Highest */ } gf_fop_pri_t; +typedef enum { + /* The 'component' (xlator / option) is not yet setting the flag */ + GF_UNCLASSIFIED = 0, + /* The 'component' is experimental, should not be recommened + in production mode */ + GF_EXPERIMENTAL, + /* The 'component' is tech preview, ie, it is 'mostly' working as + expected, but can have some of the corner cases, which is not + handled. */ + GF_TECH_PREVIEW, + /* The 'component' is good to run. Has good enough test and + documentation coverage. */ + GF_MAINTAINED, + /* The component is: + - no more a focus + - no more solving a valid use case + - no more maintained, no volunteers to maintain + - there is 'maintained' or 'tech-preview' feature, + which does the same thing, better. + */ + GF_DEPRECATED, + /* The 'component' is no more 'built'. */ + GF_OBSOLETE, + /* The 'component' exist for Documentation purposes. + No real usecase */ + GF_DOCUMENT_PURPOSE, +} gf_category_t; + + static const char * const FOP_PRI_STRINGS[] = { "HIGH", "NORMAL", diff --git a/libglusterfs/src/options.h b/libglusterfs/src/options.h index 1aa27341624..1ce8975e799 100644 --- a/libglusterfs/src/options.h +++ b/libglusterfs/src/options.h @@ -134,9 +134,15 @@ typedef struct volume_options { */ char *setkey; - /* The level at which the option is classified - */ - opt_level_t level; + /* A 'level' is about the technical depth / understanding one + needs to handle the option. 'category' is based on + quality (ie, tests, people behind it, documentation available) */ + + /* The level at which the option is classified */ + opt_level_t level; + + /* Flag to understand how this option is categorized */ + gf_category_t category; } volume_option_t; diff --git a/libglusterfs/src/xlator.c b/libglusterfs/src/xlator.c index 22e3e041fd9..d3c134ba903 100644 --- a/libglusterfs/src/xlator.c +++ b/libglusterfs/src/xlator.c @@ -417,6 +417,8 @@ int xlator_dynload_newway (xlator_t *xl) xl->id = xlapi->xlator_id; xl->flags = xlapi->flags; xl->identifier = xlapi->identifier; + xl->category = xlapi->category; + memcpy (xl->op_version, xlapi->op_version, sizeof (uint32_t) * GF_MAX_RELEASES); diff --git a/libglusterfs/src/xlator.h b/libglusterfs/src/xlator.h index d476cf26442..e0b8207444c 100644 --- a/libglusterfs/src/xlator.h +++ b/libglusterfs/src/xlator.h @@ -1051,7 +1051,8 @@ struct _xlator { /* flag to avoid recall of xlator_mem_cleanup for xame xlator */ uint32_t call_cleanup; - + /* Flag to understand how this xlator is categorized */ + gf_category_t category; }; typedef struct { @@ -1092,6 +1093,9 @@ typedef struct { volume file, then that should be defined here. optional. */ volume_option_t *options; + /* Flag to understand how this xlator is categorized */ + gf_category_t category; + /* XXX: GD2MARKER * If a new member that needs to be visible to GD2 is introduced, * add it above this comment. |