<feed xmlns='http://www.w3.org/2005/Atom'>
<title>glusterfs.git/libglusterfs/src/Makefile.am, branch v3.1.3qa4</title>
<subtitle>GlusterFS is a distributed file-system capable of scaling to several petabytes. It aggregates various storage bricks over Infiniband RDMA or TCP/IP interconnect into one large parallel network file system.</subtitle>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/anoopcs/public_git/glusterfs.git/'/>
<entry>
<title>Stop building uuid test program</title>
<updated>2011-03-01T07:40:41+00:00</updated>
<author>
<name>Vijay Bellur</name>
<email>vijay@gluster.com</email>
</author>
<published>2011-02-28T06:07:40+00:00</published>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/anoopcs/public_git/glusterfs.git/commit/?id=ba1cea55eedec2f7f9fbbc10e581da2c9bcd8038'/>
<id>ba1cea55eedec2f7f9fbbc10e581da2c9bcd8038</id>
<content type='text'>
Building tst_uuid.c results in a compilation error with -DDEBUG

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

BUG: 2447 (Enable assert () and memory accounting with DEBUG)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2447
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Building tst_uuid.c results in a compilation error with -DDEBUG

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

BUG: 2447 (Enable assert () and memory accounting with DEBUG)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2447
</pre>
</div>
</content>
</entry>
<entry>
<title>libglusterfs, glusterfsd: add shortname resolution + optname hinting support to VOLUME SET</title>
<updated>2010-10-27T06:56:12+00:00</updated>
<author>
<name>Csaba Henk</name>
<email>csaba@gluster.com</email>
</author>
<published>2010-10-26T04:00:29+00:00</published>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/anoopcs/public_git/glusterfs.git/commit/?id=db94ed06a688fb596aba4deafdf59a5af2fd6bbe'/>
<id>db94ed06a688fb596aba4deafdf59a5af2fd6bbe</id>
<content type='text'>
Trie code used for hinting is contributed by Avati.

Signed-off-by: Csaba Henk &lt;csaba@lowlife.hu&gt;
Signed-off-by: Anand V. Avati &lt;avati@dev.gluster.com&gt;

BUG: 1750 (clean up volgen)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1750
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Trie code used for hinting is contributed by Avati.

Signed-off-by: Csaba Henk &lt;csaba@lowlife.hu&gt;
Signed-off-by: Anand V. Avati &lt;avati@dev.gluster.com&gt;

BUG: 1750 (clean up volgen)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1750
</pre>
</div>
</content>
</entry>
<entry>
<title>implemented graph printing</title>
<updated>2010-10-02T13:30:18+00:00</updated>
<author>
<name>Csaba Henk</name>
<email>csaba@gluster.com</email>
</author>
<published>2010-10-02T07:30:38+00:00</published>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/anoopcs/public_git/glusterfs.git/commit/?id=067d0e476abe42f1e290039cb903928080e90d8d'/>
<id>067d0e476abe42f1e290039cb903928080e90d8d</id>
<content type='text'>
Signed-off-by: Csaba Henk &lt;csaba@gluster.com&gt;
Signed-off-by: Vijay Bellur &lt;vijay@dev.gluster.com&gt;

BUG: 1750 (clean up volgen)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1750
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Csaba Henk &lt;csaba@gluster.com&gt;
Signed-off-by: Vijay Bellur &lt;vijay@dev.gluster.com&gt;

BUG: 1750 (clean up volgen)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1750
</pre>
</div>
</content>
</entry>
<entry>
<title>gfid: introduce uuid based handles for inodes</title>
<updated>2010-09-04T08:45:01+00:00</updated>
<author>
<name>Anand Avati</name>
<email>avati@gluster.com</email>
</author>
<published>2010-09-03T13:58:11+00:00</published>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/anoopcs/public_git/glusterfs.git/commit/?id=2822157056d8347518f7e1b8bf9ee04bea7286ae'/>
<id>2822157056d8347518f7e1b8bf9ee04bea7286ae</id>
<content type='text'>
gfid represents a gluter file id. This is a universally unique id
assigned to a logical inode, independent of the inode numbers
assigned by the various backend filesystems to that file/directory.
The gfid of a file/directory will be the same on servers depending
on the cluster translator in picture.

  The same gfid can be used as a handle across layers of various
translators and across servers and clients. This was not the case
previously as the cluster translators would pick the backend inode
number from one of the servers and convert that into a logical
inode number by performing some mathematical transforms.

  This new technique of addressing inodes also makes dynamic volume
management have a more robust implementation as the file handles
remain the same on all versions of the graphs, and allows for
seamless NFS daemon restarts as well.

  This change makes way for server originating communication which
was not possible earlier as the servers did not have any reliable
way of addressing client side inodes at all. gfid solves this problem
by preserving the same uuid as the handle on all the servers and
across all clients

Signed-off-by: Anand V. Avati &lt;avati@blackhole.gluster.com&gt;
Signed-off-by: Anand V. Avati &lt;avati@amp.gluster.com&gt;
Signed-off-by: Vijay Bellur &lt;vijay@dev.gluster.com&gt;

BUG: 971 (dynamic volume management)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=971
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
gfid represents a gluter file id. This is a universally unique id
assigned to a logical inode, independent of the inode numbers
assigned by the various backend filesystems to that file/directory.
The gfid of a file/directory will be the same on servers depending
on the cluster translator in picture.

  The same gfid can be used as a handle across layers of various
translators and across servers and clients. This was not the case
previously as the cluster translators would pick the backend inode
number from one of the servers and convert that into a logical
inode number by performing some mathematical transforms.

  This new technique of addressing inodes also makes dynamic volume
management have a more robust implementation as the file handles
remain the same on all versions of the graphs, and allows for
seamless NFS daemon restarts as well.

  This change makes way for server originating communication which
was not possible earlier as the servers did not have any reliable
way of addressing client side inodes at all. gfid solves this problem
by preserving the same uuid as the handle on all the servers and
across all clients

Signed-off-by: Anand V. Avati &lt;avati@blackhole.gluster.com&gt;
Signed-off-by: Anand V. Avati &lt;avati@amp.gluster.com&gt;
Signed-off-by: Vijay Bellur &lt;vijay@dev.gluster.com&gt;

BUG: 971 (dynamic volume management)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=971
</pre>
</div>
</content>
</entry>
<entry>
<title>syncop: initial implementation</title>
<updated>2010-07-29T06:58:13+00:00</updated>
<author>
<name>Pavan Sondur</name>
<email>pavan@gluster.com</email>
</author>
<published>2010-07-25T18:13:08+00:00</published>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/anoopcs/public_git/glusterfs.git/commit/?id=fac3ff8bfb3958a3bdc34dc9bff7cb281597e40f'/>
<id>fac3ff8bfb3958a3bdc34dc9bff7cb281597e40f</id>
<content type='text'>
Resending Avati's syncop patch with a few bug fixes.

(please do not skip the IMPORTANT NOTES section)

* Framework for SYNChronous OPerations
--------------------------------------

This patch provides a framework for performing synchronous operations
over the underlying actual asynchronous GlusterFS FOPS.

* Use cases
-----------

1. Convenient implementation of crawler thread in replicate/pump

2. Convenient implementation of high level control flow in DVM

* Background
------------

All (almost) threads in GlusterFS are hosts for executing aysnchronous
file operations using the STACK_WIND and STACK_UNWIND primitives - as calls
and callbacks.

While the STACK_WIND and STACK_UNWIND macros provide high control for
efficiently implementing file operations in a clustered/parallel environment,
there are tasks where the nature of the task itself is sequential and
the execution performance of the task is not critical. In these cases the
complexity to implement the task with STACK_WIND/STACK_UNWIND based operations
as calls and callbacks is an overkill.

* Introduction
---------------

syncop: are wrappers around the STACK_WIND/STACK_UNWIND based asynchronous fops.

synctask: a sequential task (a C function) which uses syncops.

syncenv: an environement to schedule and execute synctasks.

The synchronicity is implemented via ucontext.h based continuations.

Execution of synchronous tasks is possible only in a synchronous environment.
Therefore, the first step  is to create such an environment -

        struct syncenv *env = syncenv_new (0);

This creates a synchronous environment, with a thread (scheduler) to host the
synchronous tasks. Creation of this environment is generally to be done at the
time of process initialization. Next is to spawn a synchronous task in this
environment -

        int slow_self_heal (void *data);
        int completion_func (int ret, void *data);

        ret = synctask_new (env, slow_self_heal, completion_func, data);

Here slow_self_heal is a task which is implemented using synchronous operations.
When slow_self_heal() completes, completion_func() is called with the first
parameter as the return value of slow_self_heal(). Both these functions get
the @data argument as the same value passed to synctask_new().

        int
        slow_self_heal (void *data)
        {
            xlator_t *child = FIRST_CHILD (THIS);
            fd_t     *dir = NULL;

            ...

            dir = syncop_opendir (child, loc);
            entry = syncop_readdir (dir);

            ...

            return ret;
        }

* IMPORTANT NOTES
-----------------

- calling syncops in code executing outside the synchronous environment will
  very likely cause and undesired blocking of the executing thread leading to
  deadlocks!!
  The synchronous environment is a special thread where such sleeps are safe,
  and these sleeps result in the scheduler to 'swap in' other synctasks.

- syncops can put the task to sleep. DO NOT issue syncops while holding mutexes.
  This is very similar to the blunder of holding a mutex and doing STACK_WIND.

- It works best when synctasks use only syncops. If a call_frame is created and
  STACK_WIND'ed, the callback would very likely happen in a thread outside the
  synchronous enviroment, at an undefined time - as expected. So note that the
  synchronous environment does not tame the notorious behaviour of STACK_WIND.

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

BUG: 971 (dynamic volume management)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=971
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Resending Avati's syncop patch with a few bug fixes.

(please do not skip the IMPORTANT NOTES section)

* Framework for SYNChronous OPerations
--------------------------------------

This patch provides a framework for performing synchronous operations
over the underlying actual asynchronous GlusterFS FOPS.

* Use cases
-----------

1. Convenient implementation of crawler thread in replicate/pump

2. Convenient implementation of high level control flow in DVM

* Background
------------

All (almost) threads in GlusterFS are hosts for executing aysnchronous
file operations using the STACK_WIND and STACK_UNWIND primitives - as calls
and callbacks.

While the STACK_WIND and STACK_UNWIND macros provide high control for
efficiently implementing file operations in a clustered/parallel environment,
there are tasks where the nature of the task itself is sequential and
the execution performance of the task is not critical. In these cases the
complexity to implement the task with STACK_WIND/STACK_UNWIND based operations
as calls and callbacks is an overkill.

* Introduction
---------------

syncop: are wrappers around the STACK_WIND/STACK_UNWIND based asynchronous fops.

synctask: a sequential task (a C function) which uses syncops.

syncenv: an environement to schedule and execute synctasks.

The synchronicity is implemented via ucontext.h based continuations.

Execution of synchronous tasks is possible only in a synchronous environment.
Therefore, the first step  is to create such an environment -

        struct syncenv *env = syncenv_new (0);

This creates a synchronous environment, with a thread (scheduler) to host the
synchronous tasks. Creation of this environment is generally to be done at the
time of process initialization. Next is to spawn a synchronous task in this
environment -

        int slow_self_heal (void *data);
        int completion_func (int ret, void *data);

        ret = synctask_new (env, slow_self_heal, completion_func, data);

Here slow_self_heal is a task which is implemented using synchronous operations.
When slow_self_heal() completes, completion_func() is called with the first
parameter as the return value of slow_self_heal(). Both these functions get
the @data argument as the same value passed to synctask_new().

        int
        slow_self_heal (void *data)
        {
            xlator_t *child = FIRST_CHILD (THIS);
            fd_t     *dir = NULL;

            ...

            dir = syncop_opendir (child, loc);
            entry = syncop_readdir (dir);

            ...

            return ret;
        }

* IMPORTANT NOTES
-----------------

- calling syncops in code executing outside the synchronous environment will
  very likely cause and undesired blocking of the executing thread leading to
  deadlocks!!
  The synchronous environment is a special thread where such sleeps are safe,
  and these sleeps result in the scheduler to 'swap in' other synctasks.

- syncops can put the task to sleep. DO NOT issue syncops while holding mutexes.
  This is very similar to the blunder of holding a mutex and doing STACK_WIND.

- It works best when synctasks use only syncops. If a call_frame is created and
  STACK_WIND'ed, the callback would very likely happen in a thread outside the
  synchronous enviroment, at an undefined time - as expected. So note that the
  synchronous environment does not tame the notorious behaviour of STACK_WIND.

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

BUG: 971 (dynamic volume management)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=971
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix compilation issues when uuid/uuid.h is not present</title>
<updated>2010-07-15T12:37:35+00:00</updated>
<author>
<name>Vijay Bellur</name>
<email>vijay@gluster.com</email>
</author>
<published>2010-07-15T06:05:52+00:00</published>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/anoopcs/public_git/glusterfs.git/commit/?id=11cae38ac007ed55c2bc1217da1a80fc367100e8'/>
<id>11cae38ac007ed55c2bc1217da1a80fc367100e8</id>
<content type='text'>
Signed-off-by: Vijay Bellur &lt;vijay@gluster.com&gt;
Signed-off-by: Anand V. Avati &lt;avati@dev.gluster.com&gt;

BUG: 971 (dynamic volume management)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=971
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Vijay Bellur &lt;vijay@gluster.com&gt;
Signed-off-by: Anand V. Avati &lt;avati@dev.gluster.com&gt;

BUG: 971 (dynamic volume management)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=971
</pre>
</div>
</content>
</entry>
<entry>
<title>Bring in uuid to contrib</title>
<updated>2010-07-15T10:18:53+00:00</updated>
<author>
<name>Vijay Bellur</name>
<email>vijay@gluster.com</email>
</author>
<published>2010-07-15T00:33:03+00:00</published>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/anoopcs/public_git/glusterfs.git/commit/?id=bb209f56147878ac420e4d1915e989bb11d272a2'/>
<id>bb209f56147878ac420e4d1915e989bb11d272a2</id>
<content type='text'>
Signed-off-by: Vijay Bellur &lt;vijay@gluster.com&gt;
Signed-off-by: Anand V. Avati &lt;avati@dev.gluster.com&gt;

BUG: 971 (dynamic volume management)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=971
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Vijay Bellur &lt;vijay@gluster.com&gt;
Signed-off-by: Anand V. Avati &lt;avati@dev.gluster.com&gt;

BUG: 971 (dynamic volume management)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=971
</pre>
</div>
</content>
</entry>
<entry>
<title>protocol/lib: rename files to standardized names and places</title>
<updated>2010-07-14T22:02:50+00:00</updated>
<author>
<name>Anand Avati</name>
<email>avati@gluster.com</email>
</author>
<published>2010-07-14T16:26:17+00:00</published>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/anoopcs/public_git/glusterfs.git/commit/?id=47dc8def246c6338cb95e71b4656962a5f74ee90'/>
<id>47dc8def246c6338cb95e71b4656962a5f74ee90</id>
<content type='text'>
-  move xlators/protocol/lib/* to rpc/xdr/
-  rename CLI and glusterd XDR filenames
-  remove xlators/protocol/lib (libgfproto1.so)

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

BUG: 875 (Implement a new protocol to provide proper backward/forward compatibility)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=875
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
-  move xlators/protocol/lib/* to rpc/xdr/
-  rename CLI and glusterd XDR filenames
-  remove xlators/protocol/lib (libgfproto1.so)

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

BUG: 875 (Implement a new protocol to provide proper backward/forward compatibility)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=875
</pre>
</div>
</content>
</entry>
<entry>
<title>mem-types: include *-mem-types.h in noinst_HEADERS variables in all Makefile.am</title>
<updated>2010-06-08T12:25:07+00:00</updated>
<author>
<name>Anand Avati</name>
<email>avati@gluster.com</email>
</author>
<published>2010-06-08T06:03:41+00:00</published>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/anoopcs/public_git/glusterfs.git/commit/?id=a912b145157beb1700250872d672bb03fffe658f'/>
<id>a912b145157beb1700250872d672bb03fffe658f</id>
<content type='text'>
Signed-off-by: Anand V. Avati &lt;avati@blackhole.gluster.com&gt;
Signed-off-by: Anand V. Avati &lt;avati@dev.gluster.com&gt;

BUG: 329 (Replacing memory allocation functions with mem-type functions)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=329
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Anand V. Avati &lt;avati@blackhole.gluster.com&gt;
Signed-off-by: Anand V. Avati &lt;avati@dev.gluster.com&gt;

BUG: 329 (Replacing memory allocation functions with mem-type functions)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=329
</pre>
</div>
</content>
</entry>
<entry>
<title>dynamic volume changes for graph replacement</title>
<updated>2010-06-07T18:58:50+00:00</updated>
<author>
<name>Anand Avati</name>
<email>avati@gluster.com</email>
</author>
<published>2010-06-07T12:37:34+00:00</published>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/anoopcs/public_git/glusterfs.git/commit/?id=79241696fbdebe2583298f12cbaee068ce60c655'/>
<id>79241696fbdebe2583298f12cbaee068ce60c655</id>
<content type='text'>
Signed-off-by: Anand V. Avati &lt;avati@blackhole.gluster.com&gt;
Signed-off-by: Anand V. Avati &lt;avati@dev.gluster.com&gt;

BUG: 971 (dynamic volume management)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=971
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Anand V. Avati &lt;avati@blackhole.gluster.com&gt;
Signed-off-by: Anand V. Avati &lt;avati@dev.gluster.com&gt;

BUG: 971 (dynamic volume management)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=971
</pre>
</div>
</content>
</entry>
</feed>
