<feed xmlns='http://www.w3.org/2005/Atom'>
<title>glusterfs.git/ufo, branch v3.4.6</title>
<subtitle></subtitle>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/'/>
<entry>
<title>object-storage: Store the lock file in /var/run/swift.</title>
<updated>2013-02-07T22:02:19+00:00</updated>
<author>
<name>Mohammed Junaid</name>
<email>junaid@redhat.com</email>
</author>
<published>2013-01-23T04:33:07+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=6a6ec980421a115a379aed97364817c16ce7b378'/>
<id>6a6ec980421a115a379aed97364817c16ce7b378</id>
<content type='text'>
* Openstack swift uses the /var/run/swift directory to store the pid files
  for all the servers.

* Also, added a script that would unmount the gluster client on a volume stop.

Change-Id: Ib5b9a2964987ca7696d9a2570f1f7af8490b2168
BUG: 861497
Signed-off-by: Mohammed Junaid &lt;junaid@redhat.com&gt;
Reviewed-on: http://review.gluster.org/4417
Reviewed-by: Peter Portante &lt;pportant@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>
* Openstack swift uses the /var/run/swift directory to store the pid files
  for all the servers.

* Also, added a script that would unmount the gluster client on a volume stop.

Change-Id: Ib5b9a2964987ca7696d9a2570f1f7af8490b2168
BUG: 861497
Signed-off-by: Mohammed Junaid &lt;junaid@redhat.com&gt;
Reviewed-on: http://review.gluster.org/4417
Reviewed-by: Peter Portante &lt;pportant@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>object-storage: yield during directory tree walks</title>
<updated>2013-02-04T16:44:19+00:00</updated>
<author>
<name>Peter Portante</name>
<email>peter.portante@redhat.com</email>
</author>
<published>2013-01-13T03:39:24+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=189eaecf61091145389142b961a1c9f190299f60'/>
<id>189eaecf61091145389142b961a1c9f190299f60</id>
<content type='text'>
Have the co-routine (greenlet) yield during long running directory
tree walks to avoid starving out other greenlets that might be
available to run.

A directory walk involves statting every file in the tree to get it
size. For large numbers of files, this can get expensive. So we yield
after every stat call, and after processing every directory.

Change-Id: I07f1dfeef6a09b5817e0c237ecc748c491d52a31
BUG: 894674
Signed-off-by: Peter Portante &lt;peter.portante@redhat.com&gt;
Reviewed-on: http://review.gluster.org/4380
Reviewed-by: Kaleb KEITHLEY &lt;kkeithle@redhat.com&gt;
Reviewed-by: Jeff Darcy &lt;jdarcy@redhat.com&gt;
Reviewed-by: Mohammed Junaid &lt;junaid@redhat.com&gt;
Tested-by: Mohammed Junaid &lt;junaid@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Have the co-routine (greenlet) yield during long running directory
tree walks to avoid starving out other greenlets that might be
available to run.

A directory walk involves statting every file in the tree to get it
size. For large numbers of files, this can get expensive. So we yield
after every stat call, and after processing every directory.

Change-Id: I07f1dfeef6a09b5817e0c237ecc748c491d52a31
BUG: 894674
Signed-off-by: Peter Portante &lt;peter.portante@redhat.com&gt;
Reviewed-on: http://review.gluster.org/4380
Reviewed-by: Kaleb KEITHLEY &lt;kkeithle@redhat.com&gt;
Reviewed-by: Jeff Darcy &lt;jdarcy@redhat.com&gt;
Reviewed-by: Mohammed Junaid &lt;junaid@redhat.com&gt;
Tested-by: Mohammed Junaid &lt;junaid@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>object-storage: use temp file optimization</title>
<updated>2013-01-23T03:14:30+00:00</updated>
<author>
<name>Mohammed Junaid</name>
<email>junaid@redhat.com</email>
</author>
<published>2012-12-18T05:25:24+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=16d2801f072f5eb1d2ddb56a2ab5eecd3a42010a'/>
<id>16d2801f072f5eb1d2ddb56a2ab5eecd3a42010a</id>
<content type='text'>
A file name '.&lt;FILENAME&gt;.&lt;RANDOM&gt;' will hash to the same GlusterFS node
as a file named '&lt;FILENAME&gt;', thus avoiding creation/deletion of linkfiles on a rename.

This is part of the work needed to address BZ 876660
(https://bugzilla.redhat.com/show_bug.cgi?id=876660).

Change-Id: I6f18c14b8eaa7a35c96f7e455ef3a19bee7dbde5
BUG: 876660
Signed-off-by: Mohammed Junaid &lt;junaid@redhat.com&gt;
Reviewed-on: http://review.gluster.org/4325
Reviewed-by: Kaleb KEITHLEY &lt;kkeithle@redhat.com&gt;
Reviewed-by: Peter Portante &lt;pportant@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A file name '.&lt;FILENAME&gt;.&lt;RANDOM&gt;' will hash to the same GlusterFS node
as a file named '&lt;FILENAME&gt;', thus avoiding creation/deletion of linkfiles on a rename.

This is part of the work needed to address BZ 876660
(https://bugzilla.redhat.com/show_bug.cgi?id=876660).

Change-Id: I6f18c14b8eaa7a35c96f7e455ef3a19bee7dbde5
BUG: 876660
Signed-off-by: Mohammed Junaid &lt;junaid@redhat.com&gt;
Reviewed-on: http://review.gluster.org/4325
Reviewed-by: Kaleb KEITHLEY &lt;kkeithle@redhat.com&gt;
Reviewed-by: Peter Portante &lt;pportant@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>object-storage: add UFO unit tests</title>
<updated>2013-01-17T08:08:44+00:00</updated>
<author>
<name>Peter Portante</name>
<email>peter.portante@redhat.com</email>
</author>
<published>2012-12-19T05:01:13+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=8b87819b9f374f78d13746878d6ed7a260a8ae9a'/>
<id>8b87819b9f374f78d13746878d6ed7a260a8ae9a</id>
<content type='text'>
Run the UFO unit tests following the main GlusterFS unit tests. The
UFO unit tests run under the Nose unit test running harness, requiring
the python-nose package to be installed. These unit tests run fast
enough that we could even consider running them on a commit hook run
by rfc.sh.

Note that they are not functional tests, as they don't require a real
Gluster file system to run.

Change-Id: I55972890c24be16fc588a6950cb6bfd539287bbe
Signed-off-by: Peter Portante &lt;peter.portante@redhat.com&gt;
Reviewed-on: http://review.gluster.org/4333
Reviewed-by: Kaleb KEITHLEY &lt;kkeithle@redhat.com&gt;
Reviewed-by: Anand Avati &lt;avati@redhat.com&gt;
Tested-by: Anand Avati &lt;avati@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Run the UFO unit tests following the main GlusterFS unit tests. The
UFO unit tests run under the Nose unit test running harness, requiring
the python-nose package to be installed. These unit tests run fast
enough that we could even consider running them on a commit hook run
by rfc.sh.

Note that they are not functional tests, as they don't require a real
Gluster file system to run.

Change-Id: I55972890c24be16fc588a6950cb6bfd539287bbe
Signed-off-by: Peter Portante &lt;peter.portante@redhat.com&gt;
Reviewed-on: http://review.gluster.org/4333
Reviewed-by: Kaleb KEITHLEY &lt;kkeithle@redhat.com&gt;
Reviewed-by: Anand Avati &lt;avati@redhat.com&gt;
Tested-by: Anand Avati &lt;avati@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>object-storage: only open file when requested</title>
<updated>2012-12-17T14:17:04+00:00</updated>
<author>
<name>Peter Portante</name>
<email>peter.portante@redhat.com</email>
</author>
<published>2012-12-13T02:01:09+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=cdcbc5bb3dfd2b447df0dff843d7774a1a463a09'/>
<id>cdcbc5bb3dfd2b447df0dff843d7774a1a463a09</id>
<content type='text'>
Only open a file when the caller of the constructor indicates that it
expects to have a file pointer to access in the "fp" field.

Found by Junaid during review http://review.gluster.org/4284, Patch
set 6.

We also bump the version number to mark a line in the set of changes
we want to perform a mini release with to double check for performance
regressions.

Change-Id: I13cf336bb519088890192ee111f4ece85a5982c4
BUG: 886730
Signed-off-by: Peter Portante &lt;peter.portante@redhat.com&gt;
Reviewed-on: http://review.gluster.org/4303
Reviewed-by: Mohammed Junaid &lt;junaid@redhat.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>
Only open a file when the caller of the constructor indicates that it
expects to have a file pointer to access in the "fp" field.

Found by Junaid during review http://review.gluster.org/4284, Patch
set 6.

We also bump the version number to mark a line in the set of changes
we want to perform a mini release with to double check for performance
regressions.

Change-Id: I13cf336bb519088890192ee111f4ece85a5982c4
BUG: 886730
Signed-off-by: Peter Portante &lt;peter.portante@redhat.com&gt;
Reviewed-on: http://review.gluster.org/4303
Reviewed-by: Mohammed Junaid &lt;junaid@redhat.com&gt;
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>object-storage: don't sort object list, not req'd</title>
<updated>2012-12-17T14:16:44+00:00</updated>
<author>
<name>Peter Portante</name>
<email>peter.portante@redhat.com</email>
</author>
<published>2012-12-14T03:44:27+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=a1f4a415374b4ff9afd847b7a1fbb4890c5e34a1'/>
<id>a1f4a415374b4ff9afd847b7a1fbb4890c5e34a1</id>
<content type='text'>
The REST API for listing objects in a container does not require that the list
of objects be sorted (the API for listing containers in an account does
require it). Since we can have thousands and thousands of objects in a
container, don't sort them when it is not required.

Change-Id: I6939ef3fec3ea3814a49e3a3046273304889831c
BUG: 887301
Signed-off-by: Peter Portante &lt;peter.portante@redhat.com&gt;
Reviewed-on: http://review.gluster.org/4312
Reviewed-by: Mohammed Junaid &lt;junaid@redhat.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>
The REST API for listing objects in a container does not require that the list
of objects be sorted (the API for listing containers in an account does
require it). Since we can have thousands and thousands of objects in a
container, don't sort them when it is not required.

Change-Id: I6939ef3fec3ea3814a49e3a3046273304889831c
BUG: 887301
Signed-off-by: Peter Portante &lt;peter.portante@redhat.com&gt;
Reviewed-on: http://review.gluster.org/4312
Reviewed-by: Mohammed Junaid &lt;junaid@redhat.com&gt;
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>object-storage: do not list directory for delete</title>
<updated>2012-12-17T14:12:23+00:00</updated>
<author>
<name>Peter Portante</name>
<email>peter.portante@redhat.com</email>
</author>
<published>2012-12-12T14:51:40+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=10ef8ef65a29d1ed7257c8649870b8b735fe0e10'/>
<id>10ef8ef65a29d1ed7257c8649870b8b735fe0e10</id>
<content type='text'>
Do not list the entire directory contents of the directory containing the file
before deleting it. We have already verified the files existence constructing
the Gluster_DiskFile object.

This fixes a customer issue. See 885281
(https://bugzilla.redhat.com/show_bug.cgi?id=885281).

Change-Id: I4425c42af3e03624370c779d74b7f073e6eef024
BUG: 885281
Signed-off-by: Peter Portante &lt;peter.portante@redhat.com&gt;
Reviewed-on: http://review.gluster.org/4302
Reviewed-by: Mohammed Junaid &lt;junaid@redhat.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>
Do not list the entire directory contents of the directory containing the file
before deleting it. We have already verified the files existence constructing
the Gluster_DiskFile object.

This fixes a customer issue. See 885281
(https://bugzilla.redhat.com/show_bug.cgi?id=885281).

Change-Id: I4425c42af3e03624370c779d74b7f073e6eef024
BUG: 885281
Signed-off-by: Peter Portante &lt;peter.portante@redhat.com&gt;
Reviewed-on: http://review.gluster.org/4302
Reviewed-by: Mohammed Junaid &lt;junaid@redhat.com&gt;
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>object-storage: apply upstream DiskFile refactor</title>
<updated>2012-12-17T14:11:46+00:00</updated>
<author>
<name>Peter Portante</name>
<email>peter.portante@redhat.com</email>
</author>
<published>2012-12-10T05:41:27+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=1338ad168a4a468636909322dace9dc9f750dd13'/>
<id>1338ad168a4a468636909322dace9dc9f750dd13</id>
<content type='text'>
Apply the upstream DiskFile refactoring in ahead of its use to easiliy apply
the temp file optimization.

Change-Id: I2708733eed3d87759c70eb3d9e6cd74ef91d0c7b
BUG: 876660
Signed-off-by: Peter Portante &lt;peter.portante@redhat.com&gt;
Reviewed-on: http://review.gluster.org/4288
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Mohammed Junaid &lt;junaid@redhat.com&gt;
Reviewed-by: Vijay Bellur &lt;vbellur@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Apply the upstream DiskFile refactoring in ahead of its use to easiliy apply
the temp file optimization.

Change-Id: I2708733eed3d87759c70eb3d9e6cd74ef91d0c7b
BUG: 876660
Signed-off-by: Peter Portante &lt;peter.portante@redhat.com&gt;
Reviewed-on: http://review.gluster.org/4288
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Mohammed Junaid &lt;junaid@redhat.com&gt;
Reviewed-by: Vijay Bellur &lt;vbellur@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>object-storage: a set of cleanups to DiskFile</title>
<updated>2012-12-17T14:11:18+00:00</updated>
<author>
<name>Peter Portante</name>
<email>peter.portante@redhat.com</email>
</author>
<published>2012-12-10T04:56:28+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=2fd8af2b750c43c657df9d8f9ba6fd5c1ba1f437'/>
<id>2fd8af2b750c43c657df9d8f9ba6fd5c1ba1f437</id>
<content type='text'>
Here are a set of cleanups for things noticed while working on the
unit test coverage:

  * Remove unused constants, adding a constant for default disk chunk
    size

  * Document missing logger parameter from constructor

  * Add iter_hook paramater to constructor in anticipation of 1.7.4
    support

  * Add back meta_file field even though it is not used in our version
    of the constructor for paranoid compatibility

  * Remove is_valid field as it is not referenced anywhere, and it is
    not a field of the super class

  * Rename fields only used internally by DiskFile with leading
    underscores

  * Convert to using os.path.join() instead of hard coded '/'
    references

  * Use data_file field where possible

  * Assert that put_metadata() will only work when the file exists

  * Remove update_object() method since it is identical to
    put_metadata() and a direct write will suffice

  * Create the directory object only if it does not exist when a
    marker directory is requested

Change-Id: If207fed4c0f423e6bd3232e4507f87de877057c4
BUG: 876660
Signed-off-by: Peter Portante &lt;peter.portante@redhat.com&gt;
Reviewed-on: http://review.gluster.org/4287
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Mohammed Junaid &lt;junaid@redhat.com&gt;
Reviewed-by: Vijay Bellur &lt;vbellur@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Here are a set of cleanups for things noticed while working on the
unit test coverage:

  * Remove unused constants, adding a constant for default disk chunk
    size

  * Document missing logger parameter from constructor

  * Add iter_hook paramater to constructor in anticipation of 1.7.4
    support

  * Add back meta_file field even though it is not used in our version
    of the constructor for paranoid compatibility

  * Remove is_valid field as it is not referenced anywhere, and it is
    not a field of the super class

  * Rename fields only used internally by DiskFile with leading
    underscores

  * Convert to using os.path.join() instead of hard coded '/'
    references

  * Use data_file field where possible

  * Assert that put_metadata() will only work when the file exists

  * Remove update_object() method since it is identical to
    put_metadata() and a direct write will suffice

  * Create the directory object only if it does not exist when a
    marker directory is requested

Change-Id: If207fed4c0f423e6bd3232e4507f87de877057c4
BUG: 876660
Signed-off-by: Peter Portante &lt;peter.portante@redhat.com&gt;
Reviewed-on: http://review.gluster.org/4287
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Mohammed Junaid &lt;junaid@redhat.com&gt;
Reviewed-by: Vijay Bellur &lt;vbellur@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>object-storage: Initial unittest of DiskFile class</title>
<updated>2012-12-17T14:10:54+00:00</updated>
<author>
<name>Peter Portante</name>
<email>peter.portante@redhat.com</email>
</author>
<published>2012-12-07T21:39:37+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=47e21afaaf192b03db69d8f204b3e33e5f9596cf'/>
<id>47e21afaaf192b03db69d8f204b3e33e5f9596cf</id>
<content type='text'>
If we had this ahead of time, we could have avoided the errors that
were encountered leading to the fix-account-mapping fix (see
http://review.gluster.org/4222).

This represents 100% coverage of the DiskFile module, but the coverage
report says otherwise, unfortunately. That is because the put() method
invokes eventlets during the test run, and coverage is not able to
accurately track the coverage lines properly. If one comments out the
"tpool.execute()" line in DiskFile.put() the coverage report then
reports 100% for the DiskFile module.

Additionally, we changed DiskFile.put() in four ways that should not
change its behavior:

  1. Comments were added to explain various code paths and mark
     potential issues / fixes

  2. It no longer returns a boolean value, matching the behavior of
     swift.obj.server.DiskFile.put()

  3. It no longer logs a message when it detects a directory that
     already exists, instead is raises an exception

     We believe this is okay because we cannot find a code path that
     would lead to his condition. As a result, it makes it easier to
     test all the code paths in that routine.

  4. It no longer logs a message when create_dir_object() fails, since
     create_dir_object() raises an exception on failure only

     We also modified create_dir_object() to not return a boolean as a
     result of the above behavior.

Note that by implementing these tests up to this point we found three
code paths that would have failed if encountered due to missing
imports. We also made changes to the DiskFile module to make it a bit
easier to test, also eliminating an extra stat system call when
deleting directory objects.

Change-Id: I3286de83c1ec7c5e8d6cab9354e1c4397cee7497
BUG: 870589
Signed-off-by: Peter Portante &lt;peter.portante@redhat.com&gt;
Reviewed-on: http://review.gluster.org/4284
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Mohammed Junaid &lt;junaid@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If we had this ahead of time, we could have avoided the errors that
were encountered leading to the fix-account-mapping fix (see
http://review.gluster.org/4222).

This represents 100% coverage of the DiskFile module, but the coverage
report says otherwise, unfortunately. That is because the put() method
invokes eventlets during the test run, and coverage is not able to
accurately track the coverage lines properly. If one comments out the
"tpool.execute()" line in DiskFile.put() the coverage report then
reports 100% for the DiskFile module.

Additionally, we changed DiskFile.put() in four ways that should not
change its behavior:

  1. Comments were added to explain various code paths and mark
     potential issues / fixes

  2. It no longer returns a boolean value, matching the behavior of
     swift.obj.server.DiskFile.put()

  3. It no longer logs a message when it detects a directory that
     already exists, instead is raises an exception

     We believe this is okay because we cannot find a code path that
     would lead to his condition. As a result, it makes it easier to
     test all the code paths in that routine.

  4. It no longer logs a message when create_dir_object() fails, since
     create_dir_object() raises an exception on failure only

     We also modified create_dir_object() to not return a boolean as a
     result of the above behavior.

Note that by implementing these tests up to this point we found three
code paths that would have failed if encountered due to missing
imports. We also made changes to the DiskFile module to make it a bit
easier to test, also eliminating an extra stat system call when
deleting directory objects.

Change-Id: I3286de83c1ec7c5e8d6cab9354e1c4397cee7497
BUG: 870589
Signed-off-by: Peter Portante &lt;peter.portante@redhat.com&gt;
Reviewed-on: http://review.gluster.org/4284
Tested-by: Gluster Build System &lt;jenkins@build.gluster.com&gt;
Reviewed-by: Mohammed Junaid &lt;junaid@redhat.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
