<feed xmlns='http://www.w3.org/2005/Atom'>
<title>glusterfs-afrv1.git/xlators/cluster/dht/src/dht-linkfile.c, branch v3.3.0qa18</title>
<subtitle></subtitle>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs-afrv1.git/'/>
<entry>
<title>distribute rebalance: handle the open file migration</title>
<updated>2011-09-13T06:57:38+00:00</updated>
<author>
<name>Amar Tumballi</name>
<email>amar@gluster.com</email>
</author>
<published>2011-09-07T07:23:09+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs-afrv1.git/commit/?id=a07bb18c8adeb8597f62095c5d1361c5bad01f09'/>
<id>a07bb18c8adeb8597f62095c5d1361c5bad01f09</id>
<content type='text'>
Complexity involved: To migrate a file with open fd, we have to
notify the other client process which has the open fd, and make
sure the write()s happening on that fd is properly synced to the
migrated file. Once the migration is complete, the client
process which has open-fd should get notified and it should
start performing all the operations on the new subvolume,
instead of earlier cached volume.

How to solve the notification part:

We can overload the 'postbuf' attribute in the _cbk() function to
understand if a file is 'under-migration' or 'migration-complete'
state. (This will be something similar to deciding whether a file
is DHT-linkfile by its 'mode').

Overall change includes below mentioned major changes:

1. dht_linkfile is decided by only 2 factors (mode(01000),
   xattr(trusted.glusterfs.dht.linkto)), instead of earlier
   3 factors (size==0)

2. in linkfile self-heal part (in 'dht_lookup_everywhere_cbk()'),
   don't delete a linkfile if there is a open-fd on it. It means,
   there may be a migration in progress.

3. if a file's revalidate fails with ENOENT, it may be due to file
   migration, and hence need a lookup_everywhere()

4. There will be 2 phases of file-migration.

-&gt; Phase 1: Migration in progress
   * The source data file will have SGID and STICKY bit set in its mode.
   * The source data file will have a 'linkto' xattr pointing the
     destination.
   * Destination file will have mode set to '01000', and 'linkto' xattr
     set to itself.

-&gt; Phase 2: File migration Complete
   * The source data file will have mode '01000', and will be 'truncated'
     to size 0.
   * The destination file will have inherited mode from the source. (without
     sgid and sticky bit) and its 'linkto' attribute will be removed.

4. Changes in distribute to work smoothly with a file which is in migration /
   got migrated.

The 'fops' are divided into 3 categories, inode-read, inode-write and others.
inode-read fops need to handle only 'phase 2' notification, where as, the
inode-write fops need to handle both 'phase 1' and phase2. The inode-write
operations will be done on source file, and if any of 'file-migration' procedures
are detected in _cbk(), then the operations should be performed on the destination
too.

when a phase-2 is detected, then the inode-ctx itself should be changed to represent
a new layout.

With these changes, the open file migration will work smoothly with multiple clients.

Change-Id: I512408463814e650f34c62ed009bf2101d016fd6
BUG: 3071
Reviewed-on: http://review.gluster.com/209
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>
Complexity involved: To migrate a file with open fd, we have to
notify the other client process which has the open fd, and make
sure the write()s happening on that fd is properly synced to the
migrated file. Once the migration is complete, the client
process which has open-fd should get notified and it should
start performing all the operations on the new subvolume,
instead of earlier cached volume.

How to solve the notification part:

We can overload the 'postbuf' attribute in the _cbk() function to
understand if a file is 'under-migration' or 'migration-complete'
state. (This will be something similar to deciding whether a file
is DHT-linkfile by its 'mode').

Overall change includes below mentioned major changes:

1. dht_linkfile is decided by only 2 factors (mode(01000),
   xattr(trusted.glusterfs.dht.linkto)), instead of earlier
   3 factors (size==0)

2. in linkfile self-heal part (in 'dht_lookup_everywhere_cbk()'),
   don't delete a linkfile if there is a open-fd on it. It means,
   there may be a migration in progress.

3. if a file's revalidate fails with ENOENT, it may be due to file
   migration, and hence need a lookup_everywhere()

4. There will be 2 phases of file-migration.

-&gt; Phase 1: Migration in progress
   * The source data file will have SGID and STICKY bit set in its mode.
   * The source data file will have a 'linkto' xattr pointing the
     destination.
   * Destination file will have mode set to '01000', and 'linkto' xattr
     set to itself.

-&gt; Phase 2: File migration Complete
   * The source data file will have mode '01000', and will be 'truncated'
     to size 0.
   * The destination file will have inherited mode from the source. (without
     sgid and sticky bit) and its 'linkto' attribute will be removed.

4. Changes in distribute to work smoothly with a file which is in migration /
   got migrated.

The 'fops' are divided into 3 categories, inode-read, inode-write and others.
inode-read fops need to handle only 'phase 2' notification, where as, the
inode-write fops need to handle both 'phase 1' and phase2. The inode-write
operations will be done on source file, and if any of 'file-migration' procedures
are detected in _cbk(), then the operations should be performed on the destination
too.

when a phase-2 is detected, then the inode-ctx itself should be changed to represent
a new layout.

With these changes, the open file migration will work smoothly with multiple clients.

Change-Id: I512408463814e650f34c62ed009bf2101d016fd6
BUG: 3071
Reviewed-on: http://review.gluster.com/209
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>Change Copyright current year</title>
<updated>2011-08-10T17:57:19+00:00</updated>
<author>
<name>Pranith Kumar K</name>
<email>pranithk@gluster.com</email>
</author>
<published>2011-08-09T07:00:19+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs-afrv1.git/commit/?id=b58dc65f2ac305056a25a2177cee9a03cd1bdca2'/>
<id>b58dc65f2ac305056a25a2177cee9a03cd1bdca2</id>
<content type='text'>
Change-Id: I2d10f2be44f518f496427f257988f1858e888084
BUG: 3348
Reviewed-on: http://review.gluster.com/200
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: I2d10f2be44f518f496427f257988f1858e888084
BUG: 3348
Reviewed-on: http://review.gluster.com/200
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>LICENSE: s/GNU Affero General Public/GNU General Public/</title>
<updated>2011-08-06T13:33:52+00:00</updated>
<author>
<name>Pranith Kumar K</name>
<email>pranithk@gluster.com</email>
</author>
<published>2011-08-06T08:30:03+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs-afrv1.git/commit/?id=0cf100b58c34b40eb7f35fa6913996539e0e3aa9'/>
<id>0cf100b58c34b40eb7f35fa6913996539e0e3aa9</id>
<content type='text'>
Change-Id: I3914467611e573cccee0d22df93920cf1b2eb79f
BUG: 3348
Reviewed-on: http://review.gluster.com/182
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: I3914467611e573cccee0d22df93920cf1b2eb79f
BUG: 3348
Reviewed-on: http://review.gluster.com/182
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>DHT rename: Recreate linkfile after unlink</title>
<updated>2011-08-04T04:57:27+00:00</updated>
<author>
<name>shishir gowda</name>
<email>shishirng@gluster.com</email>
</author>
<published>2011-08-02T10:00:06+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs-afrv1.git/commit/?id=5bd8f537da3fe570e481713a1c2c4ee6e88ac38e'/>
<id>5bd8f537da3fe570e481713a1c2c4ee6e88ac38e</id>
<content type='text'>
This is done, so that there is no gfid mismatch. Unlink the older
linkfile if it exists, and recreate it with the correct gfid.

Also removed unused rename related code.

Change-Id: Ice0cdff51db786dafb1a019f7642c7d000e8c5f3
BUG: 2522
Reviewed-on: http://review.gluster.com/142
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 is done, so that there is no gfid mismatch. Unlink the older
linkfile if it exists, and recreate it with the correct gfid.

Also removed unused rename related code.

Change-Id: Ice0cdff51db786dafb1a019f7642c7d000e8c5f3
BUG: 2522
Reviewed-on: http://review.gluster.com/142
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>cluster/distribute: send proper 'params' dictionary during linkfile creation</title>
<updated>2011-07-12T12:37:17+00:00</updated>
<author>
<name>Amar Tumballi</name>
<email>amar@gluster.com</email>
</author>
<published>2011-07-12T05:29:25+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs-afrv1.git/commit/?id=42e0b1731d925fd5a0bfaa107a2e01ba47fae125'/>
<id>42e0b1731d925fd5a0bfaa107a2e01ba47fae125</id>
<content type='text'>
when the code path enters the 'subvol_filled()' case, local-&gt;params is set,
which contains the 'gfid-req' value, but the linkfile creation was not
checking for its existance.

Signed-off-by: Amar Tumballi &lt;amar@gluster.com&gt;
Signed-off-by: Anand Avati &lt;avati@gluster.com&gt;

BUG: 3159 (mknod (linkfile creation) with no 'gfid-req' key)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=3159
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
when the code path enters the 'subvol_filled()' case, local-&gt;params is set,
which contains the 'gfid-req' value, but the linkfile creation was not
checking for its existance.

Signed-off-by: Amar Tumballi &lt;amar@gluster.com&gt;
Signed-off-by: Anand Avati &lt;avati@gluster.com&gt;

BUG: 3159 (mknod (linkfile creation) with no 'gfid-req' key)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=3159
</pre>
</div>
</content>
</entry>
<entry>
<title>dht: set linkto xattr with linkfile create (mknod)</title>
<updated>2011-07-08T09:25:49+00:00</updated>
<author>
<name>Anand Avati</name>
<email>avati@gluster.com</email>
</author>
<published>2011-07-01T17:17:04+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs-afrv1.git/commit/?id=14d65cb9e0c6f5a6176014701c86760a392d3a44'/>
<id>14d65cb9e0c6f5a6176014701c86760a392d3a44</id>
<content type='text'>
Signed-off-by: Anand Avati &lt;avati@gluster.com&gt;

BUG: 2815 (Server-enforced ACLs)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2815
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Anand Avati &lt;avati@gluster.com&gt;

BUG: 2815 (Server-enforced ACLs)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2815
</pre>
</div>
</content>
</entry>
<entry>
<title>dht-rename: Unlink older link files before creating new one</title>
<updated>2011-05-31T16:10:43+00:00</updated>
<author>
<name>shishir gowda</name>
<email>shishirng@gluster.com</email>
</author>
<published>2011-05-27T00:41:55+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs-afrv1.git/commit/?id=753f17aca63057e4c4a70c1f3cbf7729f890cb69'/>
<id>753f17aca63057e4c4a70c1f3cbf7729f890cb69</id>
<content type='text'>
If a older link file exists, unlink it and then create the linkfile.
This will prevent mis-match of gfid's.

Signed-off-by: shishir gowda &lt;shishirng@gluster.com&gt;
Signed-off-by: Anand Avati &lt;avati@gluster.com&gt;

BUG: 2464 ([7b07d444a77526f27f860210930bf1d4c7fbea9b]: rm -rf gives Invalid argumenrt error)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2464
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If a older link file exists, unlink it and then create the linkfile.
This will prevent mis-match of gfid's.

Signed-off-by: shishir gowda &lt;shishirng@gluster.com&gt;
Signed-off-by: Anand Avati &lt;avati@gluster.com&gt;

BUG: 2464 ([7b07d444a77526f27f860210930bf1d4c7fbea9b]: rm -rf gives Invalid argumenrt error)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2464
</pre>
</div>
</content>
</entry>
<entry>
<title>loc_t: add 'gfid' and 'pargfid' fields</title>
<updated>2011-05-03T17:17:04+00:00</updated>
<author>
<name>Amar Tumballi</name>
<email>amar@gluster.com</email>
</author>
<published>2011-05-02T03:11:54+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs-afrv1.git/commit/?id=cadd9a1b75fb1f78d2fb7c578212ee0225cfeb83'/>
<id>cadd9a1b75fb1f78d2fb7c578212ee0225cfeb83</id>
<content type='text'>
these fields are used mainly in case of selfheal path, where
'inode-&gt;gfid'||'parent-&gt;gfid' is not yet set.

These fields in 'loc' will have lower precedence than 'inode-&gt;gfid'
in client protocol.

Signed-off-by: Amar Tumballi &lt;amar@gluster.com&gt;
Signed-off-by: Anand Avati &lt;avati@gluster.com&gt;

BUG: 2346 (Log message enhancements in GlusterFS - phase 1)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2346
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
these fields are used mainly in case of selfheal path, where
'inode-&gt;gfid'||'parent-&gt;gfid' is not yet set.

These fields in 'loc' will have lower precedence than 'inode-&gt;gfid'
in client protocol.

Signed-off-by: Amar Tumballi &lt;amar@gluster.com&gt;
Signed-off-by: Anand Avati &lt;avati@gluster.com&gt;

BUG: 2346 (Log message enhancements in GlusterFS - phase 1)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2346
</pre>
</div>
</content>
</entry>
<entry>
<title>cluster/dht: log enhancements</title>
<updated>2011-03-17T18:59:00+00:00</updated>
<author>
<name>Amar Tumballi</name>
<email>amar@gluster.com</email>
</author>
<published>2011-03-16T09:43:04+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs-afrv1.git/commit/?id=d643c1093a89398de6cbe333aeea5cf91a56b3ad'/>
<id>d643c1093a89398de6cbe333aeea5cf91a56b3ad</id>
<content type='text'>
Signed-off-by: Shishir Gowda &lt;shishirng@gluster.com&gt;
Signed-off-by: Amar Tumballi &lt;amar@gluster.com&gt;
Signed-off-by: Vijay Bellur &lt;vijay@dev.gluster.com&gt;

BUG: 2346 (Log message enhancements in GlusterFS - phase 1)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2346
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Shishir Gowda &lt;shishirng@gluster.com&gt;
Signed-off-by: Amar Tumballi &lt;amar@gluster.com&gt;
Signed-off-by: Vijay Bellur &lt;vijay@dev.gluster.com&gt;

BUG: 2346 (Log message enhancements in GlusterFS - phase 1)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2346
</pre>
</div>
</content>
</entry>
<entry>
<title>cluster/dht: whitespace cleanup</title>
<updated>2011-03-17T18:58:55+00:00</updated>
<author>
<name>Amar Tumballi</name>
<email>amar@gluster.com</email>
</author>
<published>2011-03-16T09:42:29+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusterfs-afrv1.git/commit/?id=7df49c62422d33d19eaebeddd3fcdacccc9c7bce'/>
<id>7df49c62422d33d19eaebeddd3fcdacccc9c7bce</id>
<content type='text'>
also fill tabs by spaces (untabify), and indent the code

Signed-off-by: Amar Tumballi &lt;amar@gluster.com&gt;
Signed-off-by: Vijay Bellur &lt;vijay@dev.gluster.com&gt;

BUG: 2346 (Log message enhancements in GlusterFS - phase 1)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2346
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
also fill tabs by spaces (untabify), and indent the code

Signed-off-by: Amar Tumballi &lt;amar@gluster.com&gt;
Signed-off-by: Vijay Bellur &lt;vijay@dev.gluster.com&gt;

BUG: 2346 (Log message enhancements in GlusterFS - phase 1)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2346
</pre>
</div>
</content>
</entry>
</feed>
