<feed xmlns='http://www.w3.org/2005/Atom'>
<title>glusterfs.git/libglusterfs/src/options.c, branch v3.5.0beta2</title>
<subtitle></subtitle>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/'/>
<entry>
<title>features/quota: Improvements to quota</title>
<updated>2013-11-26T18:24:02+00:00</updated>
<author>
<name>Raghavendra G</name>
<email>rgowdapp@redhat.com</email>
</author>
<published>2013-09-16T12:16:50+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=ab3ab1978a4768e9eed8e23b47e72b25046e607a'/>
<id>ab3ab1978a4768e9eed8e23b47e72b25046e607a</id>
<content type='text'>
* Two stages of quota enforcement is done:

  Soft and hard quota Upon reaching soft quota limit on the directory
  it logs/alerts in the quota daemon log (ie DEFAULT_LOG_DIR/quotad.log)
  and no more writes allowed after hard
  quota limit. After reaching the soft-limit the daemon alerts the
  user/admin repeatively for every 'alert-time', which is
  configurable.

* Quota enforcer is moved to server-side.

  It  takes care of enforcing quota. Since enforcer doesn't have the
  cluster view, it relies on another service called
  quota-aggregator. Aggregator, on query can return the size of a
  directory based on the cluster view.

  Enforcer is always loaded in the server graph and is by passed if
  the feature is not enabled.

  Options specific to enforcer:

  server-quota - Specifies whether the feature is on/off. It is used
  to by pass the quota if turned off.

  deem-statfs - If set to on, it takes quota limits into consideration
  while estimating fs size. (df command). The algorithm followed is,
  i.   Adjust statvfs based on limit configured on root.
  ii.  If limit is set on the inode passed, use size/limits on that inode to
       populate statvfs. Otherwise, use size/limits configured on root.
  iii. Upon statvfs, update the ctx-&gt;size on the inode.
  iv.  Don't let DHT aggregate, instead take the maximum of the usages from the
       subvols of the DHT, since each of it contains the complete information.

  Enforcer also makes use of gfid-to-path conversion functionality to
  work correctly when a client like nfs predominently relies on
  nameless lookups.

* Quota Aggregator acts as a thin client to provide cluster view

  Its a lightweight *gluster client* process with no mount point,
  started upon enabling quota or restarting the volume. This is a
  single process run on each brick, which can answer queries on all
  volumes in the cluster. Its volfile stored in
  GLUSTERD_DEFAULT_WORKING_DIR/quotad/quotad.vol.

Credits:
Raghavendra Bhat        &lt;rabhat@redhat.com&gt;
Varun Shastry           &lt;vshastry@redhat.com&gt;
Shishir Gowda           &lt;sgowda@redhat.com&gt;
Kruthika Dhananjay      &lt;kdhananj@redhat.com&gt;
Brian Foster            &lt;bfoster@redhat.com&gt;
Krishnan Parthasarathi  &lt;kparthas@redhat.com&gt;

Change-Id: Id1cb25b414951da34c665a55f77385d482e0f9de
BUG: 969461
Signed-off-by: Raghavendra G &lt;rgowdapp@redhat.com&gt;
Reviewed-on: http://review.gluster.org/5952
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Anand Avati &lt;avati@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Two stages of quota enforcement is done:

  Soft and hard quota Upon reaching soft quota limit on the directory
  it logs/alerts in the quota daemon log (ie DEFAULT_LOG_DIR/quotad.log)
  and no more writes allowed after hard
  quota limit. After reaching the soft-limit the daemon alerts the
  user/admin repeatively for every 'alert-time', which is
  configurable.

* Quota enforcer is moved to server-side.

  It  takes care of enforcing quota. Since enforcer doesn't have the
  cluster view, it relies on another service called
  quota-aggregator. Aggregator, on query can return the size of a
  directory based on the cluster view.

  Enforcer is always loaded in the server graph and is by passed if
  the feature is not enabled.

  Options specific to enforcer:

  server-quota - Specifies whether the feature is on/off. It is used
  to by pass the quota if turned off.

  deem-statfs - If set to on, it takes quota limits into consideration
  while estimating fs size. (df command). The algorithm followed is,
  i.   Adjust statvfs based on limit configured on root.
  ii.  If limit is set on the inode passed, use size/limits on that inode to
       populate statvfs. Otherwise, use size/limits configured on root.
  iii. Upon statvfs, update the ctx-&gt;size on the inode.
  iv.  Don't let DHT aggregate, instead take the maximum of the usages from the
       subvols of the DHT, since each of it contains the complete information.

  Enforcer also makes use of gfid-to-path conversion functionality to
  work correctly when a client like nfs predominently relies on
  nameless lookups.

* Quota Aggregator acts as a thin client to provide cluster view

  Its a lightweight *gluster client* process with no mount point,
  started upon enabling quota or restarting the volume. This is a
  single process run on each brick, which can answer queries on all
  volumes in the cluster. Its volfile stored in
  GLUSTERD_DEFAULT_WORKING_DIR/quotad/quotad.vol.

Credits:
Raghavendra Bhat        &lt;rabhat@redhat.com&gt;
Varun Shastry           &lt;vshastry@redhat.com&gt;
Shishir Gowda           &lt;sgowda@redhat.com&gt;
Kruthika Dhananjay      &lt;kdhananj@redhat.com&gt;
Brian Foster            &lt;bfoster@redhat.com&gt;
Krishnan Parthasarathi  &lt;kparthas@redhat.com&gt;

Change-Id: Id1cb25b414951da34c665a55f77385d482e0f9de
BUG: 969461
Signed-off-by: Raghavendra G &lt;rgowdapp@redhat.com&gt;
Reviewed-on: http://review.gluster.org/5952
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Anand Avati &lt;avati@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>glusterd-volgen: Improve volume op-versions calculation</title>
<updated>2013-05-31T13:43:42+00:00</updated>
<author>
<name>Kaushal M</name>
<email>kaushal@redhat.com</email>
</author>
<published>2013-04-30T07:33:08+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=599c6b472869cfaf0058e7b169de204450a41948'/>
<id>599c6b472869cfaf0058e7b169de204450a41948</id>
<content type='text'>
Volume op-versions calculations now take into account if an option,
 a. enables/disables an xlator, or
 b. is a boolean option.
This prevents op-versions from being updated when a feature is disabled.

Also, correctly close the dynamically loaded xlators in
xlator_volopt_dynload() and prevent leaks.

Change-Id: I895ddeeec6f6a33e509325f0ce6f01b7aad3cf5c
BUG: 954256
Signed-off-by: Kaushal M &lt;kaushal@redhat.com&gt;
Reviewed-on: http://review.gluster.org/4952
Reviewed-by: Krishnan Parthasarathi &lt;kparthas@redhat.com&gt;
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Vijay Bellur &lt;vbellur@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Volume op-versions calculations now take into account if an option,
 a. enables/disables an xlator, or
 b. is a boolean option.
This prevents op-versions from being updated when a feature is disabled.

Also, correctly close the dynamically loaded xlators in
xlator_volopt_dynload() and prevent leaks.

Change-Id: I895ddeeec6f6a33e509325f0ce6f01b7aad3cf5c
BUG: 954256
Signed-off-by: Kaushal M &lt;kaushal@redhat.com&gt;
Reviewed-on: http://review.gluster.org/4952
Reviewed-by: Krishnan Parthasarathi &lt;kparthas@redhat.com&gt;
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Vijay Bellur &lt;vbellur@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>glusterd: fail vol set when value = empty string/string with all whitespaces</title>
<updated>2012-12-10T22:18:17+00:00</updated>
<author>
<name>Krutika Dhananjay</name>
<email>kdhananj@redhat.com</email>
</author>
<published>2012-11-23T05:03:12+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=845aba3ddcfaf7bcef283002b7b5bbf2075d4539'/>
<id>845aba3ddcfaf7bcef283002b7b5bbf2075d4539</id>
<content type='text'>
PROBLEM:

'volume set' operation accepts empty strings and strings containing
all whitespaces for value. The result - subsequent attempts to start
glusterd fail.

FIX:

Added relevant checks in xlator_option_validate_* functions in options.c
and in conversion functions in common-utils.c to invalidate wrong option
values.

Change-Id: I33232c6b42ab4fcce85c2d0e0b0da145fc9232c3
BUG: 859927
Signed-off-by: Krutika Dhananjay &lt;kdhananj@redhat.com&gt;
Reviewed-on: http://review.gluster.org/4033
Reviewed-by: Pranith Kumar Karampuri &lt;pkarampu@redhat.com&gt;
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Anand Avati &lt;avati@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
PROBLEM:

'volume set' operation accepts empty strings and strings containing
all whitespaces for value. The result - subsequent attempts to start
glusterd fail.

FIX:

Added relevant checks in xlator_option_validate_* functions in options.c
and in conversion functions in common-utils.c to invalidate wrong option
values.

Change-Id: I33232c6b42ab4fcce85c2d0e0b0da145fc9232c3
BUG: 859927
Signed-off-by: Krutika Dhananjay &lt;kdhananj@redhat.com&gt;
Reviewed-on: http://review.gluster.org/4033
Reviewed-by: Pranith Kumar Karampuri &lt;pkarampu@redhat.com&gt;
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Anand Avati &lt;avati@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>libglusterfs: Implement float percentage</title>
<updated>2012-11-24T07:13:39+00:00</updated>
<author>
<name>Pranith Kumar K</name>
<email>pranithk@gluster.com</email>
</author>
<published>2012-11-06T06:49:47+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=76a4afec6e03d15cb442e819f6fe7b94d6f9f487'/>
<id>76a4afec6e03d15cb442e819f6fe7b94d6f9f487</id>
<content type='text'>
Change-Id: Ia7ea63471f0bbd74686873f5f6f183475880f1a0
BUG: 839595
Signed-off-by: Pranith Kumar K &lt;pranithk@gluster.com&gt;
Reviewed-on: http://review.gluster.org/4162
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Vijay Bellur &lt;vbellur@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change-Id: Ia7ea63471f0bbd74686873f5f6f183475880f1a0
BUG: 839595
Signed-off-by: Pranith Kumar K &lt;pranithk@gluster.com&gt;
Reviewed-on: http://review.gluster.org/4162
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Vijay Bellur &lt;vbellur@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>libglusterfs/dict: make 'dict_t' a opaque object</title>
<updated>2012-09-06T07:34:15+00:00</updated>
<author>
<name>Amar Tumballi</name>
<email>amarts@redhat.com</email>
</author>
<published>2012-09-05T18:43:04+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=d6c99b6134f1eb90b3a8020c3538101df266e9b5'/>
<id>d6c99b6134f1eb90b3a8020c3538101df266e9b5</id>
<content type='text'>
* ie, don't dereference dict_t pointer, instead use APIs everywhere
* other than dict_t only 'data_t' should be the valid export from dict.h

* added 'dict_foreach_fnmatch()' API
* changed dict_lookup() to use data_t, instead of data_pair_t

Change-Id: I400bb0dd55519a7c5d2a107e67c8e7a7207228dc
Signed-off-by: Amar Tumballi &lt;amarts@redhat.com&gt;
BUG: 850917
Reviewed-on: http://review.gluster.org/3829
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Anand Avati &lt;avati@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* ie, don't dereference dict_t pointer, instead use APIs everywhere
* other than dict_t only 'data_t' should be the valid export from dict.h

* added 'dict_foreach_fnmatch()' API
* changed dict_lookup() to use data_t, instead of data_pair_t

Change-Id: I400bb0dd55519a7c5d2a107e67c8e7a7207228dc
Signed-off-by: Amar Tumballi &lt;amarts@redhat.com&gt;
BUG: 850917
Reviewed-on: http://review.gluster.org/3829
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Anand Avati &lt;avati@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>libglusterfs/options: enable validator macros for type 'double'</title>
<updated>2012-07-19T16:06:18+00:00</updated>
<author>
<name>Anand Avati</name>
<email>avati@redhat.com</email>
</author>
<published>2012-07-18T23:12:01+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=20f8dc8ba11321a37437e4286f61be72de5256f1'/>
<id>20f8dc8ba11321a37437e4286f61be72de5256f1</id>
<content type='text'>
Values like 'entry-timeout' and 'attribute-timeout' in FUSE are of
C type double. Enable support in the options framework for using
this type.

Change-Id: If1a619595a5925937e88540710860df27347acd0
BUG: 841417
Signed-off-by: Anand Avati &lt;avati@redhat.com&gt;
Reviewed-on: http://review.gluster.com/3697
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Amar Tumballi &lt;amarts@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Values like 'entry-timeout' and 'attribute-timeout' in FUSE are of
C type double. Enable support in the options framework for using
this type.

Change-Id: If1a619595a5925937e88540710860df27347acd0
BUG: 841417
Signed-off-by: Anand Avati &lt;avati@redhat.com&gt;
Reviewed-on: http://review.gluster.com/3697
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Amar Tumballi &lt;amarts@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>remove useless if-before-free (and free-like) functions</title>
<updated>2012-07-13T21:03:42+00:00</updated>
<author>
<name>Jim Meyering</name>
<email>meyering@redhat.com</email>
</author>
<published>2012-07-13T08:29:48+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=7820b2c1f88b207a8b1270b8c3cb3b797b7563d2'/>
<id>7820b2c1f88b207a8b1270b8c3cb3b797b7563d2</id>
<content type='text'>
See comments in http://bugzilla.redhat.com/839925 for
the code to perform this change.

Signed-off-by: Jim Meyering &lt;meyering@redhat.com&gt;
BUG: 839925
Change-Id: I10e4ecff16c3749fe17c2831c516737e08a3205a
Reviewed-on: http://review.gluster.com/3661
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Anand Avati &lt;avati@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
See comments in http://bugzilla.redhat.com/839925 for
the code to perform this change.

Signed-off-by: Jim Meyering &lt;meyering@redhat.com&gt;
BUG: 839925
Change-Id: I10e4ecff16c3749fe17c2831c516737e08a3205a
Reviewed-on: http://review.gluster.com/3661
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Anand Avati &lt;avati@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>libglusterfs: Fix sizet validation for cache-size</title>
<updated>2012-06-20T06:52:14+00:00</updated>
<author>
<name>Kaushal M</name>
<email>kaushal@redhat.com</email>
</author>
<published>2012-06-14T06:23:48+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=c7974318f09ed720471a02f3ec72569d4d7bbdfa'/>
<id>c7974318f09ed720471a02f3ec72569d4d7bbdfa</id>
<content type='text'>
Validation of 'cache-size' option will not fail when given value is greater than
max. Values lesser than min will cause validation to fail.

Change-Id: I9c744b5ace10604d5a814e6218ca0d83c796db80
BUG: 831568
Signed-off-by: Kaushal M &lt;kaushal@redhat.com&gt;
Reviewed-on: http://review.gluster.com/3570
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Jeff Darcy &lt;jdarcy@redhat.com&gt;
Reviewed-by: Anand Avati &lt;avati@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Validation of 'cache-size' option will not fail when given value is greater than
max. Values lesser than min will cause validation to fail.

Change-Id: I9c744b5ace10604d5a814e6218ca0d83c796db80
BUG: 831568
Signed-off-by: Kaushal M &lt;kaushal@redhat.com&gt;
Reviewed-on: http://review.gluster.com/3570
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Jeff Darcy &lt;jdarcy@redhat.com&gt;
Reviewed-by: Anand Avati &lt;avati@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>libglusterfs : Fix validation for integer volume options.</title>
<updated>2012-06-07T18:42:10+00:00</updated>
<author>
<name>Kaushal M</name>
<email>kaushal@redhat.com</email>
</author>
<published>2012-04-04T06:30:30+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=81e7464a54165b5d8b40847355d3bb6fe7b6e9df'/>
<id>81e7464a54165b5d8b40847355d3bb6fe7b6e9df</id>
<content type='text'>
Integer volume options which specified only the min value as 0, would not be
validated during "volume set".
The range check for an option happened only if  both min and max were not 0. In
the above case, even though a minium was specified, the range check did not
happen as both min and max were 0.

To allow forced validation in such cases, a new member, "validate", has been
added to volume_options_t. This member takes the values GF_OPT_VALIDATE_BOTH,
GF_OPT_VALIDATE_MIN and GF_OPT_VALIDATE_MAX (GF_OPT_VALIDATE_BOTH is the
default).

Change-Id: I351de0eedb6028120e5c0b073ee5d9c141dee717
BUG: 809847
Signed-off-by: Kaushal M &lt;kaushal@redhat.com&gt;
Reviewed-on: http://review.gluster.com/3084
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Amar Tumballi &lt;amarts@redhat.com&gt;
Reviewed-by: Anand Avati &lt;avati@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Integer volume options which specified only the min value as 0, would not be
validated during "volume set".
The range check for an option happened only if  both min and max were not 0. In
the above case, even though a minium was specified, the range check did not
happen as both min and max were 0.

To allow forced validation in such cases, a new member, "validate", has been
added to volume_options_t. This member takes the values GF_OPT_VALIDATE_BOTH,
GF_OPT_VALIDATE_MIN and GF_OPT_VALIDATE_MAX (GF_OPT_VALIDATE_BOTH is the
default).

Change-Id: I351de0eedb6028120e5c0b073ee5d9c141dee717
BUG: 809847
Signed-off-by: Kaushal M &lt;kaushal@redhat.com&gt;
Reviewed-on: http://review.gluster.com/3084
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Amar Tumballi &lt;amarts@redhat.com&gt;
Reviewed-by: Anand Avati &lt;avati@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>core: xlator option framework cleanups</title>
<updated>2012-06-01T22:18:26+00:00</updated>
<author>
<name>Csaba Henk</name>
<email>csaba@redhat.com</email>
</author>
<published>2012-06-01T09:30:16+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=ed6aba9463e2d247edef0eaa6248d6036fbb810b'/>
<id>ed6aba9463e2d247edef0eaa6248d6036fbb810b</id>
<content type='text'>
- Upon init/reconf, if an option is not in the opt dict,
  and a default value is neither specified, null it out.
  With this, the xlator config data that comes
  out of init/reconf becomes deterministic in terms
  of the xlator option declarations and the incoming
  option value dictionary. (Needed for correct operation
  of volume reset.)

- We can rely bravely on the guarantee given by init/reconf
  as of which no NULL value is passed to the converter
  functions. Drop the spurious null check of not_null(),
  and rebaptize it to pass().

Change-Id: Ifa068bcc0275456c01ed00a3a315a985eb262e49
BUG: 765147
Signed-off-by: Csaba Henk &lt;csaba@redhat.com&gt;
Reviewed-on: http://review.gluster.com/3505
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Anand Avati &lt;avati@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Upon init/reconf, if an option is not in the opt dict,
  and a default value is neither specified, null it out.
  With this, the xlator config data that comes
  out of init/reconf becomes deterministic in terms
  of the xlator option declarations and the incoming
  option value dictionary. (Needed for correct operation
  of volume reset.)

- We can rely bravely on the guarantee given by init/reconf
  as of which no NULL value is passed to the converter
  functions. Drop the spurious null check of not_null(),
  and rebaptize it to pass().

Change-Id: Ifa068bcc0275456c01ed00a3a315a985eb262e49
BUG: 765147
Signed-off-by: Csaba Henk &lt;csaba@redhat.com&gt;
Reviewed-on: http://review.gluster.com/3505
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Anand Avati &lt;avati@redhat.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
