<feed xmlns='http://www.w3.org/2005/Atom'>
<title>glusterfs.git/xlators/storage, branch v3.3.0qa29</title>
<subtitle></subtitle>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/'/>
<entry>
<title>storage/posix: don't allow rmdir()/lookup() on HIDDEN_DIRECTORY</title>
<updated>2012-03-14T10:21:03+00:00</updated>
<author>
<name>Amar Tumballi</name>
<email>amarts@redhat.com</email>
</author>
<published>2012-03-13T11:56:13+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=90333660ce4dd1fc94aa8f6b30c085d354f6693e'/>
<id>90333660ce4dd1fc94aa8f6b30c085d354f6693e</id>
<content type='text'>
so that we won't even have a GFID set on the GFID dir itself.

Change-Id: I65be7d675a308f51f4c62a86499341412b20c47f
Signed-off-by: Amar Tumballi &lt;amarts@redhat.com&gt;
BUG: 802726
Reviewed-on: http://review.gluster.com/2936
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>
so that we won't even have a GFID set on the GFID dir itself.

Change-Id: I65be7d675a308f51f4c62a86499341412b20c47f
Signed-off-by: Amar Tumballi &lt;amarts@redhat.com&gt;
BUG: 802726
Reviewed-on: http://review.gluster.com/2936
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>posix_fill_readdir: Using strcmp to compare GF_HIDDEN_PATH with entry-&gt;d_name instead of strncmp.</title>
<updated>2012-03-12T06:00:05+00:00</updated>
<author>
<name>M S Vishwanath Bhat</name>
<email>vishwanath@gluster.com</email>
</author>
<published>2012-03-10T10:21:22+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=7157a2cf42c4cf7c2ec2805e0732b49ebabd975e'/>
<id>7157a2cf42c4cf7c2ec2805e0732b49ebabd975e</id>
<content type='text'>
Change-Id: I29b6fc81213e52a697ed96559c3216c5512799ed
BUG: 802005
Signed-off-by: M S Vishwanath Bhat &lt;vishwanath@gluster.com&gt;
Reviewed-on: http://review.gluster.com/2910
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>
Change-Id: I29b6fc81213e52a697ed96559c3216c5512799ed
BUG: 802005
Signed-off-by: M S Vishwanath Bhat &lt;vishwanath@gluster.com&gt;
Reviewed-on: http://review.gluster.com/2910
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>glusterd/rebalance: Bring in support for parallel rebalance</title>
<updated>2012-03-08T05:14:27+00:00</updated>
<author>
<name>shishirng</name>
<email>shishirng@gluster.com</email>
</author>
<published>2012-03-06T13:25:37+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=33e9f9da8546dc57ecf6b3705f6b6474150ec78c'/>
<id>33e9f9da8546dc57ecf6b3705f6b6474150ec78c</id>
<content type='text'>
This patch, enables rebalance processes to be started on all
nodes where the volume is spread across (1 process per node)

node-uuid xattr identifies which node takes ownership of the
task to migrate the file. The model employed is push (src pushes
to dst)

Change-Id: Ieacd46a6216cf6ded841bbaebd10cfaea51c16d6
BUG: 763844
Signed-off-by: shishirng &lt;shishirng@gluster.com&gt;
Reviewed-on: http://review.gluster.com/2873
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Amar Tumballi &lt;amarts@redhat.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 patch, enables rebalance processes to be started on all
nodes where the volume is spread across (1 process per node)

node-uuid xattr identifies which node takes ownership of the
task to migrate the file. The model employed is push (src pushes
to dst)

Change-Id: Ieacd46a6216cf6ded841bbaebd10cfaea51c16d6
BUG: 763844
Signed-off-by: shishirng &lt;shishirng@gluster.com&gt;
Reviewed-on: http://review.gluster.com/2873
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Amar Tumballi &lt;amarts@redhat.com&gt;
Reviewed-by: Vijay Bellur &lt;vijay@gluster.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>storage/posix: In lookup check for buf-&gt;gfid being NULL</title>
<updated>2012-02-29T10:09:59+00:00</updated>
<author>
<name>shishir gowda</name>
<email>shishirng@gluster.com</email>
</author>
<published>2012-02-28T12:33:29+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=5ad1c2caed743fc10a0645055a825252dfbf77ba'/>
<id>5ad1c2caed743fc10a0645055a825252dfbf77ba</id>
<content type='text'>
There are few cases where create and lookup race.
Lookup ends up getting a valid struct iatt, but with no gfid set.
We need to check for gfid being 0, and handle it as an error.

Signed-off-by: shishir gowda &lt;shishirng@gluster.com&gt;
Change-Id: I36ae1978b325aff964cbc3b24730c1e993666267
BUG: 797167
Reviewed-on: http://review.gluster.com/2832
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Amar Tumballi &lt;amarts@redhat.com&gt;
Reviewed-by: Vijay Bellur &lt;vijay@gluster.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There are few cases where create and lookup race.
Lookup ends up getting a valid struct iatt, but with no gfid set.
We need to check for gfid being 0, and handle it as an error.

Signed-off-by: shishir gowda &lt;shishirng@gluster.com&gt;
Change-Id: I36ae1978b325aff964cbc3b24730c1e993666267
BUG: 797167
Reviewed-on: http://review.gluster.com/2832
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Amar Tumballi &lt;amarts@redhat.com&gt;
Reviewed-by: Vijay Bellur &lt;vijay@gluster.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>glusterfsd: unref the dict and free the memory to avoid memleak</title>
<updated>2012-02-27T10:17:34+00:00</updated>
<author>
<name>Raghavendra Bhat</name>
<email>raghavendrabhat@gluster.com</email>
</author>
<published>2012-02-23T17:28:44+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=85471322df9676cc344cc2b03627c02ed90da3cd'/>
<id>85471322df9676cc344cc2b03627c02ed90da3cd</id>
<content type='text'>
Change-Id: Ib7a1f8cbab039fefb73dc35560a035d5688b0e32
BUG: 796186
Signed-off-by: Raghavendra Bhat &lt;raghavendrabhat@gluster.com&gt;
Reviewed-on: http://review.gluster.com/2808
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Amar Tumballi &lt;amarts@redhat.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: Ib7a1f8cbab039fefb73dc35560a035d5688b0e32
BUG: 796186
Signed-off-by: Raghavendra Bhat &lt;raghavendrabhat@gluster.com&gt;
Reviewed-on: http://review.gluster.com/2808
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Amar Tumballi &lt;amarts@redhat.com&gt;
Reviewed-by: Vijay Bellur &lt;vijay@gluster.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Introduce new extended attribute: node-uuid</title>
<updated>2012-02-23T07:19:44+00:00</updated>
<author>
<name>Venky Shankar</name>
<email>vshankar@redhat.com</email>
</author>
<published>2012-02-21T08:53:13+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=5842656feba99a239b922f8099fb336c66b61929'/>
<id>5842656feba99a239b922f8099fb336c66b61929</id>
<content type='text'>
Request for trusted.glusterfs.node-uuid returns pathinfo
like string but containing the UUID of glusterd instead
of the backend path for the requested file. This info
is benificial for tasks like parallel rebalance that will
make use of the UUID for data locality.

Change-Id: I766a09cc4a5f63aebd11c73107924a1b29242dcf
BUG: 772610
Signed-off-by: Venky Shankar &lt;vshankar@redhat.com&gt;
Reviewed-on: http://review.gluster.com/2614
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Shishir Gowda &lt;shishirng@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>
Request for trusted.glusterfs.node-uuid returns pathinfo
like string but containing the UUID of glusterd instead
of the backend path for the requested file. This info
is benificial for tasks like parallel rebalance that will
make use of the UUID for data locality.

Change-Id: I766a09cc4a5f63aebd11c73107924a1b29242dcf
BUG: 772610
Signed-off-by: Venky Shankar &lt;vshankar@redhat.com&gt;
Reviewed-on: http://review.gluster.com/2614
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Shishir Gowda &lt;shishirng@gluster.com&gt;
Reviewed-by: Vijay Bellur &lt;vijay@gluster.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>storage/posix: Add xattr for gfid2path</title>
<updated>2012-02-20T18:05:38+00:00</updated>
<author>
<name>Pranith Kumar K</name>
<email>pranithk@gluster.com</email>
</author>
<published>2012-02-20T14:18:07+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=dfc88bf3727fb33e2fc273bd7f24401e0209f39e'/>
<id>dfc88bf3727fb33e2fc273bd7f24401e0209f39e</id>
<content type='text'>
Change-Id: I1fe987d255bf50e8433043749b482b67554a0ac3
BUG: 763820
Signed-off-by: Pranith Kumar K &lt;pranithk@gluster.com&gt;
Reviewed-on: http://review.gluster.com/2774
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: I1fe987d255bf50e8433043749b482b67554a0ac3
BUG: 763820
Signed-off-by: Pranith Kumar K &lt;pranithk@gluster.com&gt;
Reviewed-on: http://review.gluster.com/2774
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>glusterd: auth allow enhancements</title>
<updated>2012-02-20T08:30:54+00:00</updated>
<author>
<name>Rajesh Amaravathi</name>
<email>rajesh@redhat.com</email>
</author>
<published>2012-02-20T07:01:10+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=975933a25d14cbac861e809b40c6edd01acaa28d'/>
<id>975933a25d14cbac861e809b40c6edd01acaa28d</id>
<content type='text'>
* PROBLEM:

  When address-based authentication is enabled on a volume,
  the gNfs server, self-heal daemon (shd), and other operations
  such as quota, rebalance, replace-brick and geo-replication
  either stop working or the services are not started if all
  the peers' ipv{4,6} addresses or hostnames are not added in
  the "set auth.allow" operation, breaking the functionality
  of several operations.

  E.g:
    volume vol in a cluster of two peers:
    /mnt/brick1 in 192.168.1.4
    /mnt/brick2 in 192.168.1.5

    option auth.allow 192.168.1.6
    (allow connection requests only from 192.168.1.6)

    This will disrupt the nfs servers on 192.168.1.{4,5}.
    brick server processes reject connection requests from both
    nfs servers (on 4,5), because the peer addresses are not in
    the auth.allow list.

    Same holds true for local mounts (on peer machines),
    self-heal daemon, and other operations which perform
    a glusterfs mount on one of the peers.

* SOLUTION:

  Login-based authentication (username/password pairs,
  henceforth referred to as "keys") for gluster services and
  operations.

  These *per-volume* keys can be used to by-pass the addr-based
  authentication, provided none of the peers' addresses are put
  in the auth.reject list, to enable gluster services like gNfs,
  self-heal daemon and internal operations on volumes when
  auth.allow option is exercised.

* IMPLEMENTATION:

  1. Glusterd generates keys for each volume and stores it in
     memory as well as in respective volfiles.
     A new TRUSTED-FUSE volfile is generated which is
     fuse volfile + keys in protocol/client,
     and is named trusted-&lt;volname&gt;-fuse.vol.
     This is used by all local mounts. ANY local mount (on any peer)
     is granted the trusted-fuse volfile instead of fuse volfile
     via getspec. non-local mounts are NOT granted the trusted fuse
     volfile.

  2. The keys generated for the volume is written to each server
     volfile telling servers to allow users with these keys.

  3. NFS, self-heal daemon and replace-brick volfiles are updated
     with the volume's authentication keys.

  4. The keys are NOT written to fuse volfiles for obvious reasons.

  5. The ownership of volfiles and logfiles is restricted to root users.

  6. Merging two identical definitions of peer_info_t in auth/addr
     and rpc-lib, throwing away the one in auth/addr.

  7. Code cleanup in numerous places as appropriate.

* IMPORTANT NOTES:

  1. One SHOULD NOT put any of the peer addresses in the auth.reject
     list if one wants any of the glusterd services and features
     such as gNfs, self-heal, rebalance, geo-rep and quota.

  2. If one wants to use username/password based authentication
     to volumes, one shall append to the server, nfs and shd volfiles,
     the keys one wants to use for authentication, *while_retaining
     those_generated_by_glusterd*.
     See doc/authentication.txt file for details.

Change-Id: Ie0331d625ad000d63090e2d622fe1728fbfcc453
BUG: 789942
Signed-off-by: Rajesh Amaravathi &lt;rajesh@redhat.com&gt;
Reviewed-on: http://review.gluster.com/2733
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>
* PROBLEM:

  When address-based authentication is enabled on a volume,
  the gNfs server, self-heal daemon (shd), and other operations
  such as quota, rebalance, replace-brick and geo-replication
  either stop working or the services are not started if all
  the peers' ipv{4,6} addresses or hostnames are not added in
  the "set auth.allow" operation, breaking the functionality
  of several operations.

  E.g:
    volume vol in a cluster of two peers:
    /mnt/brick1 in 192.168.1.4
    /mnt/brick2 in 192.168.1.5

    option auth.allow 192.168.1.6
    (allow connection requests only from 192.168.1.6)

    This will disrupt the nfs servers on 192.168.1.{4,5}.
    brick server processes reject connection requests from both
    nfs servers (on 4,5), because the peer addresses are not in
    the auth.allow list.

    Same holds true for local mounts (on peer machines),
    self-heal daemon, and other operations which perform
    a glusterfs mount on one of the peers.

* SOLUTION:

  Login-based authentication (username/password pairs,
  henceforth referred to as "keys") for gluster services and
  operations.

  These *per-volume* keys can be used to by-pass the addr-based
  authentication, provided none of the peers' addresses are put
  in the auth.reject list, to enable gluster services like gNfs,
  self-heal daemon and internal operations on volumes when
  auth.allow option is exercised.

* IMPLEMENTATION:

  1. Glusterd generates keys for each volume and stores it in
     memory as well as in respective volfiles.
     A new TRUSTED-FUSE volfile is generated which is
     fuse volfile + keys in protocol/client,
     and is named trusted-&lt;volname&gt;-fuse.vol.
     This is used by all local mounts. ANY local mount (on any peer)
     is granted the trusted-fuse volfile instead of fuse volfile
     via getspec. non-local mounts are NOT granted the trusted fuse
     volfile.

  2. The keys generated for the volume is written to each server
     volfile telling servers to allow users with these keys.

  3. NFS, self-heal daemon and replace-brick volfiles are updated
     with the volume's authentication keys.

  4. The keys are NOT written to fuse volfiles for obvious reasons.

  5. The ownership of volfiles and logfiles is restricted to root users.

  6. Merging two identical definitions of peer_info_t in auth/addr
     and rpc-lib, throwing away the one in auth/addr.

  7. Code cleanup in numerous places as appropriate.

* IMPORTANT NOTES:

  1. One SHOULD NOT put any of the peer addresses in the auth.reject
     list if one wants any of the glusterd services and features
     such as gNfs, self-heal, rebalance, geo-rep and quota.

  2. If one wants to use username/password based authentication
     to volumes, one shall append to the server, nfs and shd volfiles,
     the keys one wants to use for authentication, *while_retaining
     those_generated_by_glusterd*.
     See doc/authentication.txt file for details.

Change-Id: Ie0331d625ad000d63090e2d622fe1728fbfcc453
BUG: 789942
Signed-off-by: Rajesh Amaravathi &lt;rajesh@redhat.com&gt;
Reviewed-on: http://review.gluster.com/2733
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>cluster/dht: Support for hardlink rebalance when decommissioning</title>
<updated>2012-02-19T12:47:50+00:00</updated>
<author>
<name>shishir gowda</name>
<email>shishirng@gluster.com</email>
</author>
<published>2012-02-17T13:51:07+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=4a65356275cda45f665dfa99d3712f6fb9087aff'/>
<id>4a65356275cda45f665dfa99d3712f6fb9087aff</id>
<content type='text'>
The support for hardlink rebalance is only available for decommissioning
of a node. this can be triggered in two ways
1. remove-brick start
2. if decommission node value is set in vol file, then a normal rebalance
   command

The way we handle it is-
if (nlink &gt; 1)
do
       * if src file doesnt have linkto xattr
                * mark src's linkto to the dst
       * else
                * perform a link on the dst
                * do a look up
                * if nlinks = dst.nlinks
                        * migrate data
                * else
                        * continue crawling
done
Signed-off-by: shishir gowda &lt;shishirng@gluster.com&gt;
Change-Id: If43b5524b872fd1413e9f7aa7f436cb244e30d8d
BUG: 763844
Reviewed-on: http://review.gluster.com/2737
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>
The support for hardlink rebalance is only available for decommissioning
of a node. this can be triggered in two ways
1. remove-brick start
2. if decommission node value is set in vol file, then a normal rebalance
   command

The way we handle it is-
if (nlink &gt; 1)
do
       * if src file doesnt have linkto xattr
                * mark src's linkto to the dst
       * else
                * perform a link on the dst
                * do a look up
                * if nlinks = dst.nlinks
                        * migrate data
                * else
                        * continue crawling
done
Signed-off-by: shishir gowda &lt;shishirng@gluster.com&gt;
Change-Id: If43b5524b872fd1413e9f7aa7f436cb244e30d8d
BUG: 763844
Reviewed-on: http://review.gluster.com/2737
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>posix: handle some internal behavior in posix_mknod()</title>
<updated>2012-02-17T06:48:57+00:00</updated>
<author>
<name>Amar Tumballi</name>
<email>amar@gluster.com</email>
</author>
<published>2012-02-15T11:50:40+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=47e748fe60c46d543c87f3228eb59d6580db8cf1'/>
<id>47e748fe60c46d543c87f3228eb59d6580db8cf1</id>
<content type='text'>
assume a case of link() systemcall, which is handled in distribute by
creating a 'linkfile' in hashed subvolume, if the 'oldloc' is present
in different subvolume. we have same 'gfid' for the linkfile as that
of file for consistency. Now, a file with multiple hardlinks, we may
end up with 'hardlinked' linkfiles. dht create linkfile using 'mknod()'
fop, and as now posix_mknod() is not equipped to handle this situation.

this patch fixes the situation by looking at the 'internal' key set in
the dictionary to differentiate the call which originates from inside
with regular system calls.

Change-Id: Ibff7c31f8e0c8bdae035c705c93a295f080ff985
BUG: 763844
Signed-off-by: Amar Tumballi &lt;amar@gluster.com&gt;
Reviewed-on: http://review.gluster.com/2755
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>
assume a case of link() systemcall, which is handled in distribute by
creating a 'linkfile' in hashed subvolume, if the 'oldloc' is present
in different subvolume. we have same 'gfid' for the linkfile as that
of file for consistency. Now, a file with multiple hardlinks, we may
end up with 'hardlinked' linkfiles. dht create linkfile using 'mknod()'
fop, and as now posix_mknod() is not equipped to handle this situation.

this patch fixes the situation by looking at the 'internal' key set in
the dictionary to differentiate the call which originates from inside
with regular system calls.

Change-Id: Ibff7c31f8e0c8bdae035c705c93a295f080ff985
BUG: 763844
Signed-off-by: Amar Tumballi &lt;amar@gluster.com&gt;
Reviewed-on: http://review.gluster.com/2755
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>
