Bug 1445609
Summary: | [perf-xlators/write-behind] write-behind-window-size could be set greater than its allowed MAX value 1073741824 | ||
---|---|---|---|
Product: | [Community] GlusterFS | Reporter: | Csaba Henk <csaba> |
Component: | write-behind | Assignee: | Csaba Henk <csaba> |
Status: | CLOSED CURRENTRELEASE | QA Contact: | |
Severity: | medium | Docs Contact: | |
Priority: | unspecified | ||
Version: | mainline | CC: | amukherj, asrivast, bugs, nbalacha, nlevinki, pasik, rhinduja, rhs-bugs, rkavunga, sasundar, storage-qa-internal, vbellur |
Target Milestone: | --- | Keywords: | Triaged |
Target Release: | --- | ||
Hardware: | x86_64 | ||
OS: | All | ||
Whiteboard: | |||
Fixed In Version: | glusterfs-3.12.0 | Doc Type: | If docs needed, set a value |
Doc Text: | Story Points: | --- | |
Clone Of: | 1297743 | Environment: | |
Last Closed: | 2017-09-05 17:27:45 UTC | Type: | Bug |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: | |||
Bug Depends On: | |||
Bug Blocks: | 1297743 |
Description
Csaba Henk
2017-04-26 06:40:32 UTC
REVIEW: https://review.gluster.org/17124 (libglusterfs: fix overriding of standard functions) posted (#1) for review on master by Csaba Henk (csaba) REVIEW: https://review.gluster.org/17125 (libglusterfs: stop special casing "cache-size" in size_t validation) posted (#1) for review on master by Csaba Henk (csaba) REVIEW: https://review.gluster.org/17124 (libglusterfs: fix overriding of stdlib floor()) posted (#2) for review on master by Csaba Henk (csaba) REVIEW: https://review.gluster.org/17125 (libglusterfs: stop special casing "cache-size" in size_t validation) posted (#2) for review on master by Csaba Henk (csaba) REVIEW: https://review.gluster.org/17125 (libglusterfs: stop special casing "cache-size" in size_t validation) posted (#3) for review on master by Csaba Henk (csaba) REVIEW: https://review.gluster.org/17125 (libglusterfs: stop special casing "cache-size" in size_t validation) posted (#4) for review on master by Csaba Henk (csaba) COMMIT: https://review.gluster.org/17125 committed in master by Jeff Darcy (jeff.us) ------ commit 0d8923d6d70af702730a43a536a5d0b25b4061dc Author: Csaba Henk <csaba> Date: Tue Apr 25 17:01:09 2017 +0200 libglusterfs: stop special casing "cache-size" in size_t validation The original situation was as follows: The function that validates xlator options indicating a size, xlator_option_validate_sizet(), handles the case when the name of the option is "cache-size" in a special way. - Xlator options (things of type volume_option_t) has a min and max attribute of type double. - An xlator option is endowed with a gluster specific type (not C type). An instance of an xlator option goes through a validation process by a type specific validator function (which are collected in option.c). - Validators of numeric types - size being one of them - make use the min and max attributes to perform a range check, except in one case: if an option is defined with min = max = 0, then this option will be exempt of range checking. (Note: the volume_option_t definition features the following comments along the min, max fields: double min; /* 0 means no range */ double max; /* 0 means no range */ which is slightly misleading as it lets one to conclude that zeroing min or max buys exemption from low or high boundary check, which is not true -- only *both* being zero buys exemption.) - Besides this, the validator for options of size type, xlator_option_validate_sizet() special cases options named "cache-size" so that only min is enforced. (The only consequence of a value exceeding max is that glusterd logs a warning about it, but the cli user who makes such a setting gets no feedback on it.) - This was introduced because a hard coded limit is not useful for io-cache and quick-read. They rather use a runtime calculated upper limit. (See changes I7dd4d8c53051b89a293696abf1ee8dc237e39a20 I9c744b5ace10604d5a814e6218ca0d83c796db80 about the last two points.) - As an unintended consequence, the upper limit check of cache-size of write-behind, for which a conventional hard coded limit is specified, is defeated. What we do about it: - Remove the special casing clause for cache-size in xlator_option_validate_sizet. Thus the general range check policy (as described above) will apply to cache-size too. - To implement a lower bound only check by the validator for cache-size of io-cache and quick-read, change the max attribute of these options to INFINITY. The only behavioral difference is the omission of the warnings about cache-size of io-cache and quick-read exceeding the former max values. (They were rather heuristic anyway.) BUG: 1445609 Change-Id: I0bd8bd391fa7d926f76e214a2178833fe4673b4a Signed-off-by: Csaba Henk <csaba> Reviewed-on: https://review.gluster.org/17125 Smoke: Gluster Build System <jenkins.org> Reviewed-by: Amar Tumballi <amarts> Tested-by: Raghavendra G <rgowdapp> NetBSD-regression: NetBSD Build System <jenkins.org> CentOS-regression: Gluster Build System <jenkins.org> This bug is getting closed because a release has been made available that should address the reported issue. In case the problem is still not fixed with glusterfs-3.12.0, please open a new bug report. glusterfs-3.12.0 has been announced on the Gluster mailinglists [1], packages for several distributions should become available in the near future. Keep an eye on the Gluster Users mailinglist [2] and the update infrastructure for your distribution. [1] http://lists.gluster.org/pipermail/announce/2017-September/000082.html [2] https://www.gluster.org/pipermail/gluster-users/ |