<feed xmlns='http://www.w3.org/2005/Atom'>
<title>glusterfs.git/xlators/features, branch v3.2.4qa3</title>
<subtitle></subtitle>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/'/>
<entry>
<title>Revert "cluster/afr: eager locking of FD writes"</title>
<updated>2011-09-22T15:42:01+00:00</updated>
<author>
<name>Vijay Bellur</name>
<email>vijay@gluster.com</email>
</author>
<published>2011-09-22T15:30:48+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=9564e09e5315846a38ed18e05630ef73be5b2adb'/>
<id>9564e09e5315846a38ed18e05630ef73be5b2adb</id>
<content type='text'>
This reverts commit 81456ec2dfb312ae60c5c4e6f960a3cbf8aaaa4c.

Change-Id: Id03335117f5137f5d09781850bf4fba6eca0f73d
Reviewed-on: http://review.gluster.com/492
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Vijay Bellur &lt;vijay@gluster.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit 81456ec2dfb312ae60c5c4e6f960a3cbf8aaaa4c.

Change-Id: Id03335117f5137f5d09781850bf4fba6eca0f73d
Reviewed-on: http://review.gluster.com/492
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Vijay Bellur &lt;vijay@gluster.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>features/marker: Use appropriate loc struct to do removexattr on newpath after rename.</title>
<updated>2011-09-20T08:41:01+00:00</updated>
<author>
<name>Raghavendra G</name>
<email>raghavendra@gluster.com</email>
</author>
<published>2011-09-10T09:47:49+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=8c5237bbd3a580c9287d18a3e71808e87f1edf9e'/>
<id>8c5237bbd3a580c9287d18a3e71808e87f1edf9e</id>
<content type='text'>
Change-Id: Idb31e845bc876f46b476d8fa769d67d8db89e4a1
BUG: 3493
Reviewed-on: http://review.gluster.com/389
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Vijay Bellur &lt;vijay@gluster.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change-Id: Idb31e845bc876f46b476d8fa769d67d8db89e4a1
BUG: 3493
Reviewed-on: http://review.gluster.com/389
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Vijay Bellur &lt;vijay@gluster.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title> features/quota: explicitly create xattrs in marker_create_cbk</title>
<updated>2011-09-20T06:09:32+00:00</updated>
<author>
<name>Raghavendra G</name>
<email>raghavendra@gluster.com</email>
</author>
<published>2011-09-13T06:45:49+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=2e90cfb9f481f359726321148c9bff582b07dbc4'/>
<id>2e90cfb9f481f359726321148c9bff582b07dbc4</id>
<content type='text'>
 - the earlier approach of creating quota related xattrs through
   side-effect of updating size and contribution values won't work,
   since when no contribution xattr is present, the updation process
   treats contribution value as zero and hence will be equal to size
   of freshly created files

Change-Id: If9b2063b1ac3a4cf50d3fe2c81e907bc8eccb677
BUG: 3531
Reviewed-on: http://review.gluster.com/383
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Mohammed Junaid &lt;junaid@gluster.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 - the earlier approach of creating quota related xattrs through
   side-effect of updating size and contribution values won't work,
   since when no contribution xattr is present, the updation process
   treats contribution value as zero and hence will be equal to size
   of freshly created files

Change-Id: If9b2063b1ac3a4cf50d3fe2c81e907bc8eccb677
BUG: 3531
Reviewed-on: http://review.gluster.com/383
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Mohammed Junaid &lt;junaid@gluster.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>features/quota: implement mknod fop.</title>
<updated>2011-09-20T06:09:18+00:00</updated>
<author>
<name>Raghavendra G</name>
<email>raghavendra@gluster.com</email>
</author>
<published>2011-09-09T11:44:41+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=cd348fa425b5f03cbed45384d26208a240cdde1f'/>
<id>cd348fa425b5f03cbed45384d26208a240cdde1f</id>
<content type='text'>
Change-Id: If8f2a0bb635160ee78f35787ee9f8a4db87ae8ac
BUG: 3531
Reviewed-on: http://review.gluster.com/382
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Mohammed Junaid &lt;junaid@gluster.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change-Id: If8f2a0bb635160ee78f35787ee9f8a4db87ae8ac
BUG: 3531
Reviewed-on: http://review.gluster.com/382
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Mohammed Junaid &lt;junaid@gluster.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>features/marker-quota: Perform xattr related operations with root permissions in rename fop.</title>
<updated>2011-09-12T12:23:06+00:00</updated>
<author>
<name>Junaid</name>
<email>junaid@gluster.com</email>
</author>
<published>2011-09-07T12:06:09+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=96ebf45d1d62c6626303727dce3ea5be3000742c'/>
<id>96ebf45d1d62c6626303727dce3ea5be3000742c</id>
<content type='text'>
Change-Id: Id9ac1ecdd9753377c9eb24464f51dcbdc0cd2821
BUG: 3194
Reviewed-on: http://review.gluster.com/366
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Vijay Bellur &lt;vijay@gluster.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change-Id: Id9ac1ecdd9753377c9eb24464f51dcbdc0cd2821
BUG: 3194
Reviewed-on: http://review.gluster.com/366
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Vijay Bellur &lt;vijay@gluster.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>features/marker-quota: Prefix the function names with mq (marker-quota).</title>
<updated>2011-09-12T10:30:52+00:00</updated>
<author>
<name>Junaid</name>
<email>junaid@gluster.com</email>
</author>
<published>2011-09-12T07:30:36+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=61fb0ceaecab8d60928e70b8c8af3583b60c6fc6'/>
<id>61fb0ceaecab8d60928e70b8c8af3583b60c6fc6</id>
<content type='text'>
This is to fix to bug marker translator and quota translator cannot co-exist in same process.

Change-Id: Ie0419e1a66d300e163d27b21441ad8d8139b6097
BUG: 30203020
Reviewed-on: http://review.gluster.com/393
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Vijay Bellur &lt;vijay@gluster.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is to fix to bug marker translator and quota translator cannot co-exist in same process.

Change-Id: Ie0419e1a66d300e163d27b21441ad8d8139b6097
BUG: 30203020
Reviewed-on: http://review.gluster.com/393
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Vijay Bellur &lt;vijay@gluster.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>memleak fixes for marker</title>
<updated>2011-09-12T04:14:21+00:00</updated>
<author>
<name>Raghavendra Bhat</name>
<email>raghavendrabhat@gluster.com</email>
</author>
<published>2011-08-21T16:33:17+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=a7dc1a97a29b29132081d8082c4c6f69f5c967f1'/>
<id>a7dc1a97a29b29132081d8082c4c6f69f5c967f1</id>
<content type='text'>
Change-Id: I33623f874fbf3a3c491322877ed54e99d3cfc623
BUG: 2784
Reviewed-on: http://review.gluster.com/298
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Amar Tumballi &lt;amar@gluster.com&gt;
Reviewed-by: Vijay Bellur &lt;vijay@gluster.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change-Id: I33623f874fbf3a3c491322877ed54e99d3cfc623
BUG: 2784
Reviewed-on: http://review.gluster.com/298
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Amar Tumballi &lt;amar@gluster.com&gt;
Reviewed-by: Vijay Bellur &lt;vijay@gluster.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cluster/afr: eager locking of FD writes</title>
<updated>2011-09-08T14:07:45+00:00</updated>
<author>
<name>Anand Avati</name>
<email>avati@gluster.com</email>
</author>
<published>2011-08-16T07:26:21+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=f421ca932152c3a6102b19607d789dafdbe87ef1'/>
<id>f421ca932152c3a6102b19607d789dafdbe87ef1</id>
<content type='text'>
This patch is a change in the way write transactions hold a lock
which optimizes the case of sequential writes from a single writer.

Lock phase of a transaction has two sub-phases. First is an attempt
to acquire locks in parallel by broadcasting non-blocking lock
requests. If lock aquistion fails on any server, then the held locks
are unlocked and revert to a blocking locked mode sequentially on
one server after another.

The change in this patch is to make the initial broadcasting lock
request attempt to acquire lock on the entire file. If this fails,
we revert back to the sequential "regional" blocking lock as before.

In the case where such an "eager" lock is granted in the non-blocking
phase, it gives rise to an opportunity for optimization. i.e, if
the next write transaction on the same FD arrives before the unlock
phase of the first transaction, it "takes over" the full file lock.
Similarly if yet another transaction arrives before the unlock phase
of the "optimized" transaction, that in turn "takes over" the lock
as well. The actual unlock now happens at the end of the last
"optimzed" transaction.

Any operation which arrives before the unlock phase of the previous
transaction is a potential candidate to become an "optimized"
transaction. In cases where the previous transaction had aquired
lock as a "regional" blocking lock, and the next transaction comes
in before its unlock phase, then it would not be an "optimized"
transaction.

Implied assumption
------------------

Since two or more transactions can now operate within the same
large lock, there is a possibility that overlapping transactions
can arrive at oppoosite orders on the servers. However in the
larger picture this is not possible as write-behind already
ensures that no two overlapping writes on an inode are in transit
at the same time. Overlapping writes across clients are not a
problem as they compete at locks anyways.

Theoretical benefits and potential harms
----------------------------------------

In case of a single writer: The benefits are large for sequential
writes. In the best case the entire file write can happen with just
one lock and unlock per server, provided writes are coming in fast
enough and getting pipelined by write-behind soon enough (which is
usually the case). If the writes are not coming in fast enough, then
the optimization "kicks in" for only those subsets of writes which
are close enough to get "piggybacked". For random writes the benefits
are the same as well. In any case the overall performance is better
than or equal to the performance without this optimization for a single
writer.

In case of multiple writers: When multiple writers are not writing
concurrently, there is no negative performance impact. When multiple
writers are writing concurrently to the same region, there is no
negative impact either, as they were previously getting arbitrated
at the locks translator too. In the case of multiple writers writing
to different regions concurrently, there will be an increased number
of "failovers" from failed parallel non-blocking to sequential blocking
regional locks. This above "worst case" has a simple workaround that
as soon as we detect &gt; 1 open-fd-count in lookup xattr, we can disable
this optimization on those fds.

Beneficial side-effects
-----------------------

There is another similar optimization in AFR for changelogs which goes
by the name of "changelog-piggybacking". That works in a similar way where
pending flags get 'taken over' or 'piggybacked' by the next transaction
if its 'pre-op' phase kicks in before the 'post-op' phase of the
previous transaction. It has been observed that this changelog-piggybacking
optimization gives a saving of about ~55% savings of xattr calls hitting
the wire, measured across various types of network interfaces. The side
effect of this eager-lock optimization is that it gives an almost 100%
saving of xattr calls by making the optimistic-changelog work much more
efficiently as it gives a wider overlap of the xattr phases of two
consecutive transactions.

Change-Id: I41c02eb3b64c14c68ef66a344610ec3f024cd59d
BUG: 3409
Reviewed-on: http://review.gluster.com/243
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Anand Avati &lt;avati@gluster.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch is a change in the way write transactions hold a lock
which optimizes the case of sequential writes from a single writer.

Lock phase of a transaction has two sub-phases. First is an attempt
to acquire locks in parallel by broadcasting non-blocking lock
requests. If lock aquistion fails on any server, then the held locks
are unlocked and revert to a blocking locked mode sequentially on
one server after another.

The change in this patch is to make the initial broadcasting lock
request attempt to acquire lock on the entire file. If this fails,
we revert back to the sequential "regional" blocking lock as before.

In the case where such an "eager" lock is granted in the non-blocking
phase, it gives rise to an opportunity for optimization. i.e, if
the next write transaction on the same FD arrives before the unlock
phase of the first transaction, it "takes over" the full file lock.
Similarly if yet another transaction arrives before the unlock phase
of the "optimized" transaction, that in turn "takes over" the lock
as well. The actual unlock now happens at the end of the last
"optimzed" transaction.

Any operation which arrives before the unlock phase of the previous
transaction is a potential candidate to become an "optimized"
transaction. In cases where the previous transaction had aquired
lock as a "regional" blocking lock, and the next transaction comes
in before its unlock phase, then it would not be an "optimized"
transaction.

Implied assumption
------------------

Since two or more transactions can now operate within the same
large lock, there is a possibility that overlapping transactions
can arrive at oppoosite orders on the servers. However in the
larger picture this is not possible as write-behind already
ensures that no two overlapping writes on an inode are in transit
at the same time. Overlapping writes across clients are not a
problem as they compete at locks anyways.

Theoretical benefits and potential harms
----------------------------------------

In case of a single writer: The benefits are large for sequential
writes. In the best case the entire file write can happen with just
one lock and unlock per server, provided writes are coming in fast
enough and getting pipelined by write-behind soon enough (which is
usually the case). If the writes are not coming in fast enough, then
the optimization "kicks in" for only those subsets of writes which
are close enough to get "piggybacked". For random writes the benefits
are the same as well. In any case the overall performance is better
than or equal to the performance without this optimization for a single
writer.

In case of multiple writers: When multiple writers are not writing
concurrently, there is no negative performance impact. When multiple
writers are writing concurrently to the same region, there is no
negative impact either, as they were previously getting arbitrated
at the locks translator too. In the case of multiple writers writing
to different regions concurrently, there will be an increased number
of "failovers" from failed parallel non-blocking to sequential blocking
regional locks. This above "worst case" has a simple workaround that
as soon as we detect &gt; 1 open-fd-count in lookup xattr, we can disable
this optimization on those fds.

Beneficial side-effects
-----------------------

There is another similar optimization in AFR for changelogs which goes
by the name of "changelog-piggybacking". That works in a similar way where
pending flags get 'taken over' or 'piggybacked' by the next transaction
if its 'pre-op' phase kicks in before the 'post-op' phase of the
previous transaction. It has been observed that this changelog-piggybacking
optimization gives a saving of about ~55% savings of xattr calls hitting
the wire, measured across various types of network interfaces. The side
effect of this eager-lock optimization is that it gives an almost 100%
saving of xattr calls by making the optimistic-changelog work much more
efficiently as it gives a wider overlap of the xattr phases of two
consecutive transactions.

Change-Id: I41c02eb3b64c14c68ef66a344610ec3f024cd59d
BUG: 3409
Reviewed-on: http://review.gluster.com/243
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Anand Avati &lt;avati@gluster.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>features/locks: free the string allocated by inode_path</title>
<updated>2011-08-23T17:46:07+00:00</updated>
<author>
<name>Raghavendra Bhat</name>
<email>raghavendrabhat@gluster.com</email>
</author>
<published>2011-08-22T21:04:31+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=f65668427467f07f1b7026498f739254967f5bef'/>
<id>f65668427467f07f1b7026498f739254967f5bef</id>
<content type='text'>
Change-Id: I352b155c065b10590a50a7195de2da40523f5710
BUG: 3468
Reviewed-on: http://review.gluster.com/303
Reviewed-by: Amar Tumballi &lt;amar@gluster.com&gt;
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change-Id: I352b155c065b10590a50a7195de2da40523f5710
BUG: 3468
Reviewed-on: http://review.gluster.com/303
Reviewed-by: Amar Tumballi &lt;amar@gluster.com&gt;
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>features/marker-quota: Fix invalid reads in readdir_cbk.</title>
<updated>2011-08-22T10:02:04+00:00</updated>
<author>
<name>Junaid</name>
<email>junaid@gluster.com</email>
</author>
<published>2011-08-22T06:27:46+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs.git/commit/?id=ab6494bddc6c5dcf298f04bb38ff222952eae8d2'/>
<id>ab6494bddc6c5dcf298f04bb38ff222952eae8d2</id>
<content type='text'>
Change-Id: I851de443677c02fe73c56a55a58e8b2045bff142
BUG: 3389
Reviewed-on: http://review.gluster.com/291
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Amar Tumballi &lt;amar@gluster.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change-Id: I851de443677c02fe73c56a55a58e8b2045bff142
BUG: 3389
Reviewed-on: http://review.gluster.com/291
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Amar Tumballi &lt;amar@gluster.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
