<feed xmlns='http://www.w3.org/2005/Atom'>
<title>glusterfs.git/libglusterfsclient, branch v2.0.6</title>
<subtitle></subtitle>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/'/>
<entry>
<title>libglusterfsclient: Bind fd on fd creation code paths</title>
<updated>2009-07-31T18:40:40+00:00</updated>
<author>
<name>Shehjar Tikoo</name>
<email>shehjart@gluster.com</email>
</author>
<published>2009-07-31T12:37:40+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=48b027c82322ef8c34c16e3da03a3375de3fe699'/>
<id>48b027c82322ef8c34c16e3da03a3375de3fe699</id>
<content type='text'>
When an fd_t is fd_create'd, we need to call fd_bind on it to
ensure that any fd_lookup on the inode gets us this fd. We're not
doing this so translators like write-behind were not able to order
path-based requests at all resulting in some fops like stat, which
could be issued after a writev, overtaking a previous writev which
is still being written-behind.

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

BUG: 179 (fileop reports miscompares on read tests)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=179
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When an fd_t is fd_create'd, we need to call fd_bind on it to
ensure that any fd_lookup on the inode gets us this fd. We're not
doing this so translators like write-behind were not able to order
path-based requests at all resulting in some fops like stat, which
could be issued after a writev, overtaking a previous writev which
is still being written-behind.

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

BUG: 179 (fileop reports miscompares on read tests)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=179
</pre>
</div>
</content>
</entry>
<entry>
<title>libglusterfsclient: Invalidate iattr cache on reads</title>
<updated>2009-07-31T18:40:36+00:00</updated>
<author>
<name>Shehjar Tikoo</name>
<email>shehjart@gluster.com</email>
</author>
<published>2009-07-31T04:15:13+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=cc58f457acfc452d8076b273c9bdab6cf0f9bb29'/>
<id>cc58f457acfc452d8076b273c9bdab6cf0f9bb29</id>
<content type='text'>
Earlier we have invalidated the iattr cache on writes. Now
we need to do so for reads also, so that we are not updating
the iattr cache with 0-filled stat received from io-cache.

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

BUG: 180 (fileop fails at chmod with stale file handle error over unfs3)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=180
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Earlier we have invalidated the iattr cache on writes. Now
we need to do so for reads also, so that we are not updating
the iattr cache with 0-filled stat received from io-cache.

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

BUG: 180 (fileop fails at chmod with stale file handle error over unfs3)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=180
</pre>
</div>
</content>
</entry>
<entry>
<title>libglusterfsclient: Use iobufs for storing application write data</title>
<updated>2009-07-30T19:01:00+00:00</updated>
<author>
<name>Shehjar Tikoo</name>
<email>shehjart@gluster.com</email>
</author>
<published>2009-07-30T12:04:26+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=c8765d4d807cc9e63c8d96a568fc05002fa7cbd3'/>
<id>c8765d4d807cc9e63c8d96a568fc05002fa7cbd3</id>
<content type='text'>
Till now we've been creating an iovec, storing references in it
to the application data and simply passing it on to the translator
tree. This means that the buffer being passed to the translators is
not at all associated with the memory ref'd by the iobref argument
to write fop. This is a problem when write-behind is a translator in
the tree since it assumes that the memory in the iovecs passed to
write fops is already refcounted by the iobref and so it simply copies
the address of the application data. The problem is that the application
can continue using this buffer, free it or over-write it destroying the
data that write-behind may write at a later time.

The solution involves copying the application's write buffer into
an iobuf which will be referred to by the iobref.

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

BUG: 178 (libglusterfsclient: Data corruption on using write-behind in translator tree)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=178
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Till now we've been creating an iovec, storing references in it
to the application data and simply passing it on to the translator
tree. This means that the buffer being passed to the translators is
not at all associated with the memory ref'd by the iobref argument
to write fop. This is a problem when write-behind is a translator in
the tree since it assumes that the memory in the iovecs passed to
write fops is already refcounted by the iobref and so it simply copies
the address of the application data. The problem is that the application
can continue using this buffer, free it or over-write it destroying the
data that write-behind may write at a later time.

The solution involves copying the application's write buffer into
an iobuf which will be referred to by the iobref.

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

BUG: 178 (libglusterfsclient: Data corruption on using write-behind in translator tree)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=178
</pre>
</div>
</content>
</entry>
<entry>
<title>libglusterfsclient: Fix solaris build error</title>
<updated>2009-07-28T16:16:29+00:00</updated>
<author>
<name>Shehjar Tikoo</name>
<email>shehjart@gluster.com</email>
</author>
<published>2009-07-28T04:51:15+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=c6fcc71d720b1cd550a8f1386020567786acf3b2'/>
<id>c6fcc71d720b1cd550a8f1386020567786acf3b2</id>
<content type='text'>
Signed-off-by: Anand V. Avati &lt;avati@dev.gluster.com&gt;

BUG: 115 (./configure adds libglusterfsclient when it shouldn't)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=115
</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: 115 (./configure adds libglusterfsclient when it shouldn't)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=115
</pre>
</div>
</content>
</entry>
<entry>
<title>libglusterfsclient: Workaround for local memory corruption</title>
<updated>2009-07-27T18:33:53+00:00</updated>
<author>
<name>Shehjar Tikoo</name>
<email>shehjart@gluster.com</email>
</author>
<published>2009-07-24T09:30:54+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=698a573bfb167d8d6c51d07089995d861dd7fbd3'/>
<id>698a573bfb167d8d6c51d07089995d861dd7fbd3</id>
<content type='text'>
There seems to a reproduceable corruption specifically of
the libglusterfs_client_local_t that is allocated for
the read call. Therefore, the subsequent access to fd inside
local leads to a segfault. This is a temporary fix.

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

BUG: 164 (libglusterfsclient: Segfault due to memory corruption of frame local in libgf_client_read)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=164
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There seems to a reproduceable corruption specifically of
the libglusterfs_client_local_t that is allocated for
the read call. Therefore, the subsequent access to fd inside
local leads to a segfault. This is a temporary fix.

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

BUG: 164 (libglusterfsclient: Segfault due to memory corruption of frame local in libgf_client_read)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=164
</pre>
</div>
</content>
</entry>
<entry>
<title>libglusterfsclient: Avoid overwrite of inode found through ino number</title>
<updated>2009-07-23T22:20:16+00:00</updated>
<author>
<name>Shehjar Tikoo</name>
<email>shehjart@gluster.com</email>
</author>
<published>2009-07-23T16:19:26+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=bea6b86ef6defba89274ef85667c56cb52c17d7b'/>
<id>bea6b86ef6defba89274ef85667c56cb52c17d7b</id>
<content type='text'>
In libgf_client_loc_fill, there is a possibility that all
the ino, par and name are specified as non-NULL,non-zero args.

So if an inode is located in the itable using the ino and the
subsequent search for the inode using the par-ino and the file
name does not result in an inode being found, the current
code over-writes the inode that was found through the ino. The
correct behaviour is to stop further searches if inode
was already found using ino.

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

BUG: 161 (unfs3 crashes on link system call by fileop)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=161
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In libgf_client_loc_fill, there is a possibility that all
the ino, par and name are specified as non-NULL,non-zero args.

So if an inode is located in the itable using the ino and the
subsequent search for the inode using the par-ino and the file
name does not result in an inode being found, the current
code over-writes the inode that was found through the ino. The
correct behaviour is to stop further searches if inode
was already found using ino.

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

BUG: 161 (unfs3 crashes on link system call by fileop)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=161
</pre>
</div>
</content>
</entry>
<entry>
<title>libglusterfsclient: Fill new loc with target's ino on link</title>
<updated>2009-07-23T22:20:12+00:00</updated>
<author>
<name>Shehjar Tikoo</name>
<email>shehjart@gluster.com</email>
</author>
<published>2009-07-23T16:18:43+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=c2733b13aaa6d38eb165e770a936f8bfc19bc685'/>
<id>c2733b13aaa6d38eb165e770a936f8bfc19bc685</id>
<content type='text'>
In the loc_t of the link being created, we must fill in the inode
of the old/target loc since this is a link operation. The
inode_link to the new parent is called in libgf_client_link.

This fixes a crash while running fileop over a fully-loaded
dist-repl vol file.
Ref: Bugzilla 161

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

BUG: 161 (unfs3 crashes on link system call by fileop)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=161
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In the loc_t of the link being created, we must fill in the inode
of the old/target loc since this is a link operation. The
inode_link to the new parent is called in libgf_client_link.

This fixes a crash while running fileop over a fully-loaded
dist-repl vol file.
Ref: Bugzilla 161

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

BUG: 161 (unfs3 crashes on link system call by fileop)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=161
</pre>
</div>
</content>
</entry>
<entry>
<title>libglusterfsclient: Fake a fsid for every VMP</title>
<updated>2009-07-20T21:29:41+00:00</updated>
<author>
<name>Shehjar Tikoo</name>
<email>shehjart@gluster.com</email>
</author>
<published>2009-07-20T01:25:36+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=2add5760c412d85f56a1ca2fc61ca743d1ee2a74'/>
<id>2add5760c412d85f56a1ca2fc61ca743d1ee2a74</id>
<content type='text'>
This is needed to work around the replicate behaviour of
possibly returning device number for the same file from

different subvolumes.

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

BUG: 148 (replicate: Returns st_dev from different subvols resulting in ESTALE thru unfs3booster)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=148
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is needed to work around the replicate behaviour of
possibly returning device number for the same file from

different subvolumes.

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

BUG: 148 (replicate: Returns st_dev from different subvols resulting in ESTALE thru unfs3booster)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=148
</pre>
</div>
</content>
</entry>
<entry>
<title>libglusterfsclient: Move DHT root-lookup workaround to init</title>
<updated>2009-07-20T21:29:37+00:00</updated>
<author>
<name>Shehjar Tikoo</name>
<email>shehjart@gluster.com</email>
</author>
<published>2009-07-19T03:25:45+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=7b90b90780d3bb5a1b4a1c060fac1d2c4eb2a8dc'/>
<id>7b90b90780d3bb5a1b4a1c060fac1d2c4eb2a8dc</id>
<content type='text'>
The workaround for the DHT requirement for a lookup on /
needs to be done only once when the xlator graph is inited.
Doing it on every path's lookup results in a major performance
penalty when using distribute subvolumes upwards of 16, as reported
by Avati.

Ref: bug 152

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

BUG: 152 (libglusterfsclient: DHT workaround is a major performance bottleneck)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=152
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The workaround for the DHT requirement for a lookup on /
needs to be done only once when the xlator graph is inited.
Doing it on every path's lookup results in a major performance
penalty when using distribute subvolumes upwards of 16, as reported
by Avati.

Ref: bug 152

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

BUG: 152 (libglusterfsclient: DHT workaround is a major performance bottleneck)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=152
</pre>
</div>
</content>
</entry>
<entry>
<title>libglusterfsclient: Invalidate not update iattr cache on writev</title>
<updated>2009-07-17T19:01:29+00:00</updated>
<author>
<name>Shehjar Tikoo</name>
<email>shehjart@gluster.com</email>
</author>
<published>2009-07-17T08:47:32+00:00</published>
<link rel='alternate' type='text/html' href='http://git.gluster.org/cgit/glusterfs.git/commit/?id=dbccda35cdcad06208e2fc7554287b539e0060a6'/>
<id>dbccda35cdcad06208e2fc7554287b539e0060a6</id>
<content type='text'>
Signed-off-by: Anand V. Avati &lt;avati@dev.gluster.com&gt;

BUG: 149 (libglusterfsclient interacts incorrectly with write-behind on writev)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=149
</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: 149 (libglusterfsclient interacts incorrectly with write-behind on writev)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=149
</pre>
</div>
</content>
</entry>
</feed>
