<feed xmlns='http://www.w3.org/2005/Atom'>
<title>glusterfs.git/xlators/cluster/afr/src/afr-self-heal-entry.c, branch v3.0.3</title>
<subtitle></subtitle>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/'/>
<entry>
<title>cluster/afr: Don't do entry self-heal in the background.</title>
<updated>2009-12-07T13:31:32+00:00</updated>
<author>
<name>Vikas Gorur</name>
<email>vikas@gluster.com</email>
</author>
<published>2009-12-07T04:52:47+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=0ae2b4be39214426a50f5e1fd09562f309819f32'/>
<id>0ae2b4be39214426a50f5e1fd09562f309819f32</id>
<content type='text'>
Signed-off-by: Vikas Gorur &lt;vikas@gluster.com&gt;
Signed-off-by: Anand V. Avati &lt;avati@dev.gluster.com&gt;

BUG: 326 ([2.0.8rc9] Spurious self-heal)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=326
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Vikas Gorur &lt;vikas@gluster.com&gt;
Signed-off-by: Anand V. Avati &lt;avati@dev.gluster.com&gt;

BUG: 326 ([2.0.8rc9] Spurious self-heal)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=326
</pre>
</div>
</content>
</entry>
<entry>
<title>storage/posix: Added janitor thread.</title>
<updated>2009-12-02T18:29:23+00:00</updated>
<author>
<name>Vikas Gorur</name>
<email>vikas@gluster.com</email>
</author>
<published>2009-12-02T07:48:45+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=c04c1a170dcc605efcf80c8ae2674b69488b591d'/>
<id>c04c1a170dcc605efcf80c8ae2674b69488b591d</id>
<content type='text'>
The janitor thread deletes all files and directories in
the "/" GF_REPLICATE_TRASH_DIR directory. This directory
is used by replicate self-heal to dump files and
directories it deletes.

This is needed because letting replicate walk the directory
tree and delete a directory and all its children is too racy.
Instead, replicate self-heal only does an atomic rename(),
and the janitor thread takes care of actually deleting them.

Signed-off-by: Vikas Gorur &lt;vikas@gluster.com&gt;
Signed-off-by: Anand V. Avati &lt;avati@dev.gluster.com&gt;

BUG: 227 (replicate selfheal does not remove directory with contents in it)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=227
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The janitor thread deletes all files and directories in
the "/" GF_REPLICATE_TRASH_DIR directory. This directory
is used by replicate self-heal to dump files and
directories it deletes.

This is needed because letting replicate walk the directory
tree and delete a directory and all its children is too racy.
Instead, replicate self-heal only does an atomic rename(),
and the janitor thread takes care of actually deleting them.

Signed-off-by: Vikas Gorur &lt;vikas@gluster.com&gt;
Signed-off-by: Anand V. Avati &lt;avati@dev.gluster.com&gt;

BUG: 227 (replicate selfheal does not remove directory with contents in it)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=227
</pre>
</div>
</content>
</entry>
<entry>
<title>cluster/afr: Refactored the self-heal interface.</title>
<updated>2009-11-24T14:40:12+00:00</updated>
<author>
<name>Vikas Gorur</name>
<email>vikas@gluster.com</email>
</author>
<published>2009-11-24T08:45:10+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=250edc9e494fe0c59eff580df18080111ecb475e'/>
<id>250edc9e494fe0c59eff580df18080111ecb475e</id>
<content type='text'>
Cleaned up the self-heal interface to callers.

Signed-off-by: Vikas Gorur &lt;vikas@gluster.com&gt;
Signed-off-by: Anand V. Avati &lt;avati@dev.gluster.com&gt;

BUG: 170 (Auto-heal fails on files that are open()-ed/mmap()-ed)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=170
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Cleaned up the self-heal interface to callers.

Signed-off-by: Vikas Gorur &lt;vikas@gluster.com&gt;
Signed-off-by: Anand V. Avati &lt;avati@dev.gluster.com&gt;

BUG: 170 (Auto-heal fails on files that are open()-ed/mmap()-ed)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=170
</pre>
</div>
</content>
</entry>
<entry>
<title>cluster/afr: Ensure directory contents are in sync during opendir.</title>
<updated>2009-11-13T10:13:43+00:00</updated>
<author>
<name>Vikas Gorur</name>
<email>vikas@gluster.com</email>
</author>
<published>2009-11-12T08:44:16+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=26fbaa23cafee4643b7604660762656c4a71684b'/>
<id>26fbaa23cafee4643b7604660762656c4a71684b</id>
<content type='text'>
The problem: If some files on the first subvolume disappeared
without leaving a trace in the entry changelog (this can happen,
for example, when an fsck has deleted files or when a hard drive
is replaced), those files would never be self-healed even though
they would be present on the second subvolume. This is because
readdir is sent only to the first subvolume, and since the files
don't appear in the directory listing, no lookup would ever be
sent on them.

This patch fixes this problem by doing a readdir on all the subvolumes
during the first opendir on a directory inode. If a discrepancy in the
contents is detected, entry self-heal in a special "force merge" mode
is triggered on that directory.

Signed-off-by: Vikas Gorur &lt;vikas@gluster.com&gt;
Signed-off-by: Anand V. Avati &lt;avati@dev.gluster.com&gt;

BUG: 249 (Self heal of a file that does not exist on the first subvolume)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=249
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The problem: If some files on the first subvolume disappeared
without leaving a trace in the entry changelog (this can happen,
for example, when an fsck has deleted files or when a hard drive
is replaced), those files would never be self-healed even though
they would be present on the second subvolume. This is because
readdir is sent only to the first subvolume, and since the files
don't appear in the directory listing, no lookup would ever be
sent on them.

This patch fixes this problem by doing a readdir on all the subvolumes
during the first opendir on a directory inode. If a discrepancy in the
contents is detected, entry self-heal in a special "force merge" mode
is triggered on that directory.

Signed-off-by: Vikas Gorur &lt;vikas@gluster.com&gt;
Signed-off-by: Anand V. Avati &lt;avati@dev.gluster.com&gt;

BUG: 249 (Self heal of a file that does not exist on the first subvolume)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=249
</pre>
</div>
</content>
</entry>
<entry>
<title>cluster/afr: Move deleted files to /.trash in entry self-heal.</title>
<updated>2009-10-29T17:17:19+00:00</updated>
<author>
<name>Vikas Gorur</name>
<email>vikas@gluster.com</email>
</author>
<published>2009-10-29T05:08:34+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=d72c47cb04725c694921e7f3277f6230c26bc936'/>
<id>d72c47cb04725c694921e7f3277f6230c26bc936</id>
<content type='text'>
If entry self-heal determines that a file/directory should
be deleted from a subvolume, move that entry to a directory
called "/.trash" on that subvolume. This is for two reasons:

1) It limits the damage that can be done by a "wrong" entry
   self-heal.

2) It solves the problem of a to-be-deleted directory not
   being empty.

Signed-off-by: Anand V. Avati &lt;avati@dev.gluster.com&gt;

BUG: 227 (replicate selfheal does not remove directory with contents in it)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=227
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If entry self-heal determines that a file/directory should
be deleted from a subvolume, move that entry to a directory
called "/.trash" on that subvolume. This is for two reasons:

1) It limits the damage that can be done by a "wrong" entry
   self-heal.

2) It solves the problem of a to-be-deleted directory not
   being empty.

Signed-off-by: Anand V. Avati &lt;avati@dev.gluster.com&gt;

BUG: 227 (replicate selfheal does not remove directory with contents in it)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=227
</pre>
</div>
</content>
</entry>
<entry>
<title>cluster/afr: Check the target of symlink's in entry self-heal.</title>
<updated>2009-10-26T14:09:28+00:00</updated>
<author>
<name>Vikas Gorur</name>
<email>vikas@gluster.com</email>
</author>
<published>2009-10-26T05:07:31+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=d40ce2cbcd41a25eb053f2970db9bbaab2dafa22'/>
<id>d40ce2cbcd41a25eb053f2970db9bbaab2dafa22</id>
<content type='text'>
During entry self-heal, make sure not only that a symlink
exists on all subvolumes, but also that their targets match.

Signed-off-by: Anand V. Avati &lt;avati@dev.gluster.com&gt;

BUG: 193 (symlink contents not self-healed by replicate)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=193
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
During entry self-heal, make sure not only that a symlink
exists on all subvolumes, but also that their targets match.

Signed-off-by: Anand V. Avati &lt;avati@dev.gluster.com&gt;

BUG: 193 (symlink contents not self-healed by replicate)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=193
</pre>
</div>
</content>
</entry>
<entry>
<title>cluster/afr: Do self-heal in the background.</title>
<updated>2009-10-26T14:09:05+00:00</updated>
<author>
<name>Vikas Gorur</name>
<email>vikas@gluster.com</email>
</author>
<published>2009-10-23T10:11:47+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=4163a3f8fbcc5e0d84d955258161f3a6f7a86de8'/>
<id>4163a3f8fbcc5e0d84d955258161f3a6f7a86de8</id>
<content type='text'>
This patch introduces a new option "background-self-heal-count", with a
default value of 16.

This means that upto {background-self-heal-count} number of files/directories
will be healed in the background at any given time. If such number of self-heals
are already in progress, further self-heals take place in the foreground.

Signed-off-by: Anand V. Avati &lt;avati@dev.gluster.com&gt;

BUG: 320 (Improve self-heal performance)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=320
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch introduces a new option "background-self-heal-count", with a
default value of 16.

This means that upto {background-self-heal-count} number of files/directories
will be healed in the background at any given time. If such number of self-heals
are already in progress, further self-heals take place in the foreground.

Signed-off-by: Anand V. Avati &lt;avati@dev.gluster.com&gt;

BUG: 320 (Improve self-heal performance)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=320
</pre>
</div>
</content>
</entry>
<entry>
<title>cluster/afr: Prevent spurious entry self-heal.</title>
<updated>2009-10-23T12:54:53+00:00</updated>
<author>
<name>Vikas Gorur</name>
<email>vikas@gluster.com</email>
</author>
<published>2009-10-23T06:44:46+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=58efcf03a63324b7bbfda864647d35256917058a'/>
<id>58efcf03a63324b7bbfda864647d35256917058a</id>
<content type='text'>
If the initial lookup shows that 'pending' is positive, then
self-heal will hold a lock and do a lookup again. This lookup
might show that 'pending' is zero everywhere. However, entry
self-heal used to consider this as a case of 'no sources' and
try to merge the directories. This patch checks for that case
and does not do the merge.

Signed-off-by: Anand V. Avati &lt;avati@dev.gluster.com&gt;

BUG: 326 ([2.0.8rc9] Spurious self-heal)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=326
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If the initial lookup shows that 'pending' is positive, then
self-heal will hold a lock and do a lookup again. This lookup
might show that 'pending' is zero everywhere. However, entry
self-heal used to consider this as a case of 'no sources' and
try to merge the directories. This patch checks for that case
and does not do the merge.

Signed-off-by: Anand V. Avati &lt;avati@dev.gluster.com&gt;

BUG: 326 ([2.0.8rc9] Spurious self-heal)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=326
</pre>
</div>
</content>
</entry>
<entry>
<title>cluster/afr: entry self-heal: Store parent_loc on the heap for impunge_parent_setattr.</title>
<updated>2009-10-22T13:05:13+00:00</updated>
<author>
<name>Vikas Gorur</name>
<email>vikas@gluster.com</email>
</author>
<published>2009-10-22T06:36:22+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=8c86febc41816730c9fd44fd87cefe3ef330d072'/>
<id>8c86febc41816730c9fd44fd87cefe3ef330d072</id>
<content type='text'>
Signed-off-by: Anand V. Avati &lt;avati@dev.gluster.com&gt;

BUG: 137 (Parent directory mtime not reset after a create in self-heal)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=137
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Anand V. Avati &lt;avati@dev.gluster.com&gt;

BUG: 137 (Parent directory mtime not reset after a create in self-heal)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=137
</pre>
</div>
</content>
</entry>
<entry>
<title>cluster/afr: entry self-heal: Set parent directory's attributes using a new frame.</title>
<updated>2009-10-22T11:15:43+00:00</updated>
<author>
<name>Vikas Gorur</name>
<email>vikas@gluster.com</email>
</author>
<published>2009-10-22T05:37:36+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=d5009323b3031122508fbd8daa61025b7c397e3c'/>
<id>d5009323b3031122508fbd8daa61025b7c397e3c</id>
<content type='text'>
There was a race condition in assuming that afr_sh_entry_impunge_parent_setattr_cbk will
   always return before impunge_xattrop_cbk and impunge_setattr_cbk.

   This patch fixes two additional problems:

1) Building the parent_loc from impunge_local-&gt;loc after STACK_WIND to
   impunge_xattrop_cbk has happened. In a simple afr-posix configuration
   the stack will have been destroyed by the time building of parent_loc is
   attempted.

2) parent_loc built in impunge_newfile_cbk was not being loc_wipe'd.

Signed-off-by: Anand V. Avati &lt;avati@dev.gluster.com&gt;

BUG: 137 (Parent directory mtime not reset after a create in self-heal)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=137
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There was a race condition in assuming that afr_sh_entry_impunge_parent_setattr_cbk will
   always return before impunge_xattrop_cbk and impunge_setattr_cbk.

   This patch fixes two additional problems:

1) Building the parent_loc from impunge_local-&gt;loc after STACK_WIND to
   impunge_xattrop_cbk has happened. In a simple afr-posix configuration
   the stack will have been destroyed by the time building of parent_loc is
   attempted.

2) parent_loc built in impunge_newfile_cbk was not being loc_wipe'd.

Signed-off-by: Anand V. Avati &lt;avati@dev.gluster.com&gt;

BUG: 137 (Parent directory mtime not reset after a create in self-heal)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=137
</pre>
</div>
</content>
</entry>
</feed>
