<feed xmlns='http://www.w3.org/2005/Atom'>
<title>glusterfs.git, branch v3.3.0qa20</title>
<subtitle></subtitle>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/'/>
<entry>
<title>cluster/afr: set loc-&gt;gfid for building root loc</title>
<updated>2012-01-24T07:25:31+00:00</updated>
<author>
<name>Shylesh Kumar</name>
<email>shylesh@gluster.com</email>
</author>
<published>2012-01-24T06:44:36+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=0694749c3e5039be327110a64dd66619b5d9121c'/>
<id>0694749c3e5039be327110a64dd66619b5d9121c</id>
<content type='text'>
Change-Id: Icb902846d243df0502f664bfd187280cecd4397c
BUG: 784176
Signed-off-by: Shylesh Kumar &lt;shylesh@gluster.com&gt;
Reviewed-on: http://review.gluster.com/2681
Reviewed-by: Pranith Kumar Karampuri &lt;pranithk@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: Icb902846d243df0502f664bfd187280cecd4397c
BUG: 784176
Signed-off-by: Shylesh Kumar &lt;shylesh@gluster.com&gt;
Reviewed-on: http://review.gluster.com/2681
Reviewed-by: Pranith Kumar Karampuri &lt;pranithk@gluster.com&gt;
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>glusterd: fix transpose of memset arguments</title>
<updated>2012-01-24T07:24:49+00:00</updated>
<author>
<name>Rajesh Amaravathi</name>
<email>rajesh@redhat.com</email>
</author>
<published>2012-01-24T06:33:56+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=e04d45facc722d944d51439f4ae57b2af2a03d3e'/>
<id>e04d45facc722d944d51439f4ae57b2af2a03d3e</id>
<content type='text'>
a fix for transposed arguments to memset in glusterd_get_all_volnames
function introduced in volume status enhancement.

Change-Id: Iaea60c7d19b23992684f91b016b0841e2153b0a9
BUG: 765464
Signed-off-by: Rajesh Amaravathi &lt;rajesh@redhat.com&gt;
Reviewed-on: http://review.gluster.com/2680
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>
a fix for transposed arguments to memset in glusterd_get_all_volnames
function introduced in volume status enhancement.

Change-Id: Iaea60c7d19b23992684f91b016b0841e2153b0a9
BUG: 765464
Signed-off-by: Rajesh Amaravathi &lt;rajesh@redhat.com&gt;
Reviewed-on: http://review.gluster.com/2680
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>Revert "distribute: utilize new 'fremovexattr()' fop for rebalance"</title>
<updated>2012-01-24T06:37:32+00:00</updated>
<author>
<name>Harshavardhana</name>
<email>fharshav@redhat.com</email>
</author>
<published>2012-01-23T21:20:04+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=aecc9f52647e0ebc89cc5ca56a9f5182b7feb594'/>
<id>aecc9f52647e0ebc89cc5ca56a9f5182b7feb594</id>
<content type='text'>
This reverts commit c4e4be31ec2783b984e7dbb9ecbc1eea84044ad0 .. 

There is a problem here. syncop_fremovexattr doesn't exist in the codebase yet. Have a dependency merge for this. No other patches can be uploaded without a build failure now.

Change-Id: Ic2c6194d905ffcfa7cbdc29c9bc8739f628d404e
Reviewed-on: http://review.gluster.com/2679
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 reverts commit c4e4be31ec2783b984e7dbb9ecbc1eea84044ad0 .. 

There is a problem here. syncop_fremovexattr doesn't exist in the codebase yet. Have a dependency merge for this. No other patches can be uploaded without a build failure now.

Change-Id: Ic2c6194d905ffcfa7cbdc29c9bc8739f628d404e
Reviewed-on: http://review.gluster.com/2679
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>pump: move internal pump xattrs out of trusted domain</title>
<updated>2012-01-23T17:46:43+00:00</updated>
<author>
<name>Rajesh Amaravathi</name>
<email>rajesh@redhat.com</email>
</author>
<published>2012-01-19T12:39:34+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=54b8d503dd23e72ed3076988c52e689f3554ebc8'/>
<id>54b8d503dd23e72ed3076988c52e689f3554ebc8</id>
<content type='text'>
* the trusted.glusterfs.pump.{start|pause|commit|status|abort} xattrs
  have been moved out of trusted domain. This enables separation of
  xattrs used as gluster-internal commands (handled by pump) for
  replace-brick, which are not set in the back-end, from xattrs set
  on the replace-brick source and destinations bricks.

* macros definitions from pump.h and glusterd.h, #defining these xattrs
  have been merged and put into libglusterfs/src/glusterfs.h

Change-Id: I87b8bfbf045aa140f5d3f0c9baa9b2e79f87b67b
BUG: 783049
Signed-off-by: Rajesh Amaravathi &lt;rajesh@redhat.com&gt;
Reviewed-on: http://review.gluster.com/2663
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>
* the trusted.glusterfs.pump.{start|pause|commit|status|abort} xattrs
  have been moved out of trusted domain. This enables separation of
  xattrs used as gluster-internal commands (handled by pump) for
  replace-brick, which are not set in the back-end, from xattrs set
  on the replace-brick source and destinations bricks.

* macros definitions from pump.h and glusterd.h, #defining these xattrs
  have been merged and put into libglusterfs/src/glusterfs.h

Change-Id: I87b8bfbf045aa140f5d3f0c9baa9b2e79f87b67b
BUG: 783049
Signed-off-by: Rajesh Amaravathi &lt;rajesh@redhat.com&gt;
Reviewed-on: http://review.gluster.com/2663
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>distribute: utilize new 'fremovexattr()' fop for rebalance</title>
<updated>2012-01-23T17:43:32+00:00</updated>
<author>
<name>Amar Tumballi</name>
<email>amar@gluster.com</email>
</author>
<published>2011-12-16T12:57:52+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=4e2a26eb285de9e0a5836ad5e2edbc14eb9adc80'/>
<id>4e2a26eb285de9e0a5836ad5e2edbc14eb9adc80</id>
<content type='text'>
instead of existing 'syncop_removexattr()' which is not rename proof
for now.

Change-Id: I3b2afbe58ce90658100cc56b01e23bed672854e8
Signed-off-by: Amar Tumballi &lt;amar@gluster.com&gt;
BUG: 766571
Reviewed-on: http://review.gluster.com/803
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Jeff Darcy &lt;jdarcy@redhat.com&gt;
Reviewed-by: Shishir Gowda &lt;shishirng@gluster.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
instead of existing 'syncop_removexattr()' which is not rename proof
for now.

Change-Id: I3b2afbe58ce90658100cc56b01e23bed672854e8
Signed-off-by: Amar Tumballi &lt;amar@gluster.com&gt;
BUG: 766571
Reviewed-on: http://review.gluster.com/803
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Jeff Darcy &lt;jdarcy@redhat.com&gt;
Reviewed-by: Shishir Gowda &lt;shishirng@gluster.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>storage/posix: Pass correct size to sys_lgetxattr</title>
<updated>2012-01-23T17:42:39+00:00</updated>
<author>
<name>root</name>
<email>shishirng@gluster.com</email>
</author>
<published>2012-01-23T09:02:31+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=366c98afe6d8ec1e69d33baad5e914fa3229f2a1'/>
<id>366c98afe6d8ec1e69d33baad5e914fa3229f2a1</id>
<content type='text'>
We were passing op_ret (0), instead of size variable obtained by previous
sys_lgetxattr to determine the  size

Signed-off-by: root &lt;shishirng@gluster.com&gt;
Change-Id: I886dedc2ab752ac1feabe7a79725ea5f069d6865
BUG: 783916
Reviewed-on: http://review.gluster.com/2676
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Rahul C S &lt;rahulcs@redhat.com&gt;
Reviewed-by: Amar Tumballi &lt;amar@gluster.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We were passing op_ret (0), instead of size variable obtained by previous
sys_lgetxattr to determine the  size

Signed-off-by: root &lt;shishirng@gluster.com&gt;
Change-Id: I886dedc2ab752ac1feabe7a79725ea5f069d6865
BUG: 783916
Reviewed-on: http://review.gluster.com/2676
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Rahul C S &lt;rahulcs@redhat.com&gt;
Reviewed-by: Amar Tumballi &lt;amar@gluster.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>rpc: extend actors with flag signing if privilege is required</title>
<updated>2012-01-21T13:33:19+00:00</updated>
<author>
<name>Csaba Henk</name>
<email>csaba@gluster.com</email>
</author>
<published>2012-01-13T05:12:11+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=4e92c58d27b5cea9d7346d6dd88be9b3479c9e3b'/>
<id>4e92c58d27b5cea9d7346d6dd88be9b3479c9e3b</id>
<content type='text'>
Currently we allow the following RPC messages for unprivileged users:
GLUSTER_CLI_GETWD, GLUSTER_CLI_MOUNT, GLUSTER_CLI_UMOUNT

Change-Id: I05414f3ca7cbe47de45c5e5cfba1537efc774e6c
BUG: 781256
Signed-off-by: Csaba Henk &lt;csaba@gluster.com&gt;
Reviewed-on: http://review.gluster.com/2641
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>
Currently we allow the following RPC messages for unprivileged users:
GLUSTER_CLI_GETWD, GLUSTER_CLI_MOUNT, GLUSTER_CLI_UMOUNT

Change-Id: I05414f3ca7cbe47de45c5e5cfba1537efc774e6c
BUG: 781256
Signed-off-by: Csaba Henk &lt;csaba@gluster.com&gt;
Reviewed-on: http://review.gluster.com/2641
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>cli: exit with error if connection problem occurs</title>
<updated>2012-01-21T13:28:23+00:00</updated>
<author>
<name>Csaba Henk</name>
<email>csaba@gluster.com</email>
</author>
<published>2012-01-13T05:05:34+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=d3ca9f05ec3a9881b5aeadb7b61cfcb97dbdb718'/>
<id>d3ca9f05ec3a9881b5aeadb7b61cfcb97dbdb718</id>
<content type='text'>
Change-Id: I97fc4d0a260120810b71dd5d9957a269d4550a3b
BUG: 781256
Signed-off-by: Csaba Henk &lt;csaba@gluster.com&gt;
Reviewed-on: http://review.gluster.com/2640
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>
Change-Id: I97fc4d0a260120810b71dd5d9957a269d4550a3b
BUG: 781256
Signed-off-by: Csaba Henk &lt;csaba@gluster.com&gt;
Reviewed-on: http://review.gluster.com/2640
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>nfs: changes for using nameless lookup and anonymous FDs</title>
<updated>2012-01-20T13:06:15+00:00</updated>
<author>
<name>Anand Avati</name>
<email>avati@gluster.com</email>
</author>
<published>2012-01-13T17:47:07+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=bb1e07b7f42e7db415527852e98fcc1cbf2e1285'/>
<id>bb1e07b7f42e7db415527852e98fcc1cbf2e1285</id>
<content type='text'>
- Use gfid to create filehandle instead of encoding path components
- Utilize nameless lookups of GFID for deep resolution instead of
  crawling the namespace with component hints
- Use anonymous FDs for file based operations
- Do away with fdcaching code for files and dirs

Change-Id: Ic48fb23370b25d183f7e1fc1cc5dffa9d5bab3fb
BUG: 781318
Reviewed-on: http://review.gluster.com/2645
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>
- Use gfid to create filehandle instead of encoding path components
- Utilize nameless lookups of GFID for deep resolution instead of
  crawling the namespace with component hints
- Use anonymous FDs for file based operations
- Do away with fdcaching code for files and dirs

Change-Id: Ic48fb23370b25d183f7e1fc1cc5dffa9d5bab3fb
BUG: 781318
Reviewed-on: http://review.gluster.com/2645
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>core: GFID filehandle based backend and anonymous FDs</title>
<updated>2012-01-20T13:03:42+00:00</updated>
<author>
<name>Anand Avati</name>
<email>avati@gluster.com</email>
</author>
<published>2012-01-13T07:57:15+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=7e1f8e3bac201f88e2d9ef62fc69a044716dfced'/>
<id>7e1f8e3bac201f88e2d9ef62fc69a044716dfced</id>
<content type='text'>
1. What
--------
This change introduces an infrastructure change in the filesystem
which lets filesystem operation address objects (inodes) just by its
GFID. Thus far GFID has been a unique identifier of a user-visible
inode. But in terms of addressability the only mechanism thus far has
been the backend filesystem path, which could be derived from the
GFID only if it was cached in the inode table along with the entire set
of dentry ancestry leading up to the root.

This change essentially decouples addressability from the namespace. It
is no more necessary to be aware of the parent directory to address a
file or directory.

2. Why
-------
The biggest use case for such a feature is NFS for generating
persistent filehandles. So far the technique for generating filehandles
in NFS has been to encode path components so that the appropriate
inode_t can be repopulated into the inode table by means of a recursive
lookup of each component top-down.

Another use case is the ability to perform more intelligent self-healing
and rebalancing of inodes with hardlinks and also to detect renames.

A derived feature from GFID filehandles is anonymous FDs. An anonymous FD
is an internal USABLE "fd_t" which does not map to a user opened file
descriptor or to an internal -&gt;open()'d fd. The ability to address a file
by the GFID eliminates the need to have a persistent -&gt;open()'d fd for the
purpose of avoiding the namespace. This improves NFS read/write performance
significantly eliminating open/close calls and also fixes some of today's
limitations (like keeping an FD open longer than necessary resulting
in disk space leakage)

3. How
-------

At each storage/posix translator level, every file is hardlinked inside
a hidden .glusterfs directory (under the top level export) with the name
as the ascii-encoded standard UUID format string. For reasons of performance
and scalability there is a two-tier classification of those hardlinks
under directories with the initial parts of the UUID string as the directory
names.

For directories (which cannot be hardlinked), the approach is to use a symlink
which dereferences the parent GFID path along with basename of the directory.
The parent GFID dereference will in turn be a dereference of the grandparent
with the parent's basename, and so on recursively up to the root export.

4. Development
---------------

4a. To leverage the ability to address an inode by its GFID, the technique is
to perform a "nameless lookup". This means, to populate a loc_t structure as:

loc_t {
   pargfid: NULL
   parent: NULL
   name: NULL
   path: NULL
   gfid: GFID to be looked up [out parameter]
   inode: inode_new () result [in parameter]
}

and performing such lookup will return in its callback an inode_t
populated with the right contexts and a struct iatt which can be
used to perform an inode_link () on the inode (without a parent and
basename). The inode will now be hashed and linked in the inode table
and findable via inode_find().

A fundamental change moving forward is that the primary fields in a
loc_t structure are now going to be (pargfid, name) and (gfid) depending
on the kind of FOP. So far path had been the primary field for operations.
The remaining fields only serve as hints/helpers.

4b. If read/write is to be performed on an inode_t, the approach so far
has been to: fd_create(), STACK_WIND(open, fd), fd_bind (in callback) and
then perform STACK_WIND(read, fd) etc. With anonymous fds now you can do
fd_anonymous (inode), STACK_WIND (read, fd). This results in great boost
in performance in the inbuilt NFS server.

5. Misc
-------
The inode_ctx_put[2] has been renamed to inode_ctx_set[2] to be consistent
with the rest of the codebase.

Change-Id: Ie4629edf6bd32a595f4d7f01e90c0a01f16fb12f
BUG: 781318
Reviewed-on: http://review.gluster.com/669
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>
1. What
--------
This change introduces an infrastructure change in the filesystem
which lets filesystem operation address objects (inodes) just by its
GFID. Thus far GFID has been a unique identifier of a user-visible
inode. But in terms of addressability the only mechanism thus far has
been the backend filesystem path, which could be derived from the
GFID only if it was cached in the inode table along with the entire set
of dentry ancestry leading up to the root.

This change essentially decouples addressability from the namespace. It
is no more necessary to be aware of the parent directory to address a
file or directory.

2. Why
-------
The biggest use case for such a feature is NFS for generating
persistent filehandles. So far the technique for generating filehandles
in NFS has been to encode path components so that the appropriate
inode_t can be repopulated into the inode table by means of a recursive
lookup of each component top-down.

Another use case is the ability to perform more intelligent self-healing
and rebalancing of inodes with hardlinks and also to detect renames.

A derived feature from GFID filehandles is anonymous FDs. An anonymous FD
is an internal USABLE "fd_t" which does not map to a user opened file
descriptor or to an internal -&gt;open()'d fd. The ability to address a file
by the GFID eliminates the need to have a persistent -&gt;open()'d fd for the
purpose of avoiding the namespace. This improves NFS read/write performance
significantly eliminating open/close calls and also fixes some of today's
limitations (like keeping an FD open longer than necessary resulting
in disk space leakage)

3. How
-------

At each storage/posix translator level, every file is hardlinked inside
a hidden .glusterfs directory (under the top level export) with the name
as the ascii-encoded standard UUID format string. For reasons of performance
and scalability there is a two-tier classification of those hardlinks
under directories with the initial parts of the UUID string as the directory
names.

For directories (which cannot be hardlinked), the approach is to use a symlink
which dereferences the parent GFID path along with basename of the directory.
The parent GFID dereference will in turn be a dereference of the grandparent
with the parent's basename, and so on recursively up to the root export.

4. Development
---------------

4a. To leverage the ability to address an inode by its GFID, the technique is
to perform a "nameless lookup". This means, to populate a loc_t structure as:

loc_t {
   pargfid: NULL
   parent: NULL
   name: NULL
   path: NULL
   gfid: GFID to be looked up [out parameter]
   inode: inode_new () result [in parameter]
}

and performing such lookup will return in its callback an inode_t
populated with the right contexts and a struct iatt which can be
used to perform an inode_link () on the inode (without a parent and
basename). The inode will now be hashed and linked in the inode table
and findable via inode_find().

A fundamental change moving forward is that the primary fields in a
loc_t structure are now going to be (pargfid, name) and (gfid) depending
on the kind of FOP. So far path had been the primary field for operations.
The remaining fields only serve as hints/helpers.

4b. If read/write is to be performed on an inode_t, the approach so far
has been to: fd_create(), STACK_WIND(open, fd), fd_bind (in callback) and
then perform STACK_WIND(read, fd) etc. With anonymous fds now you can do
fd_anonymous (inode), STACK_WIND (read, fd). This results in great boost
in performance in the inbuilt NFS server.

5. Misc
-------
The inode_ctx_put[2] has been renamed to inode_ctx_set[2] to be consistent
with the rest of the codebase.

Change-Id: Ie4629edf6bd32a595f4d7f01e90c0a01f16fb12f
BUG: 781318
Reviewed-on: http://review.gluster.com/669
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Anand Avati &lt;avati@gluster.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
