summaryrefslogtreecommitdiffstats
path: root/libglusterfs/src/inode.h
diff options
context:
space:
mode:
authorAnand Avati <avati@gluster.com>2010-09-03 13:58:11 +0000
committerVijay Bellur <vijay@dev.gluster.com>2010-09-04 01:45:01 -0700
commit2822157056d8347518f7e1b8bf9ee04bea7286ae (patch)
treee6d8b6e7f4b3435e190c7303a0b751390f5c8850 /libglusterfs/src/inode.h
parentf5661d03f0f59cc2473f60232872ddafd325cd9d (diff)
gfid: introduce uuid based handles for inodes
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 <avati@blackhole.gluster.com> Signed-off-by: Anand V. Avati <avati@amp.gluster.com> Signed-off-by: Vijay Bellur <vijay@dev.gluster.com> BUG: 971 (dynamic volume management) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=971
Diffstat (limited to 'libglusterfs/src/inode.h')
-rw-r--r--libglusterfs/src/inode.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/libglusterfs/src/inode.h b/libglusterfs/src/inode.h
index 18081b8f8ce..a0bb8f8b57d 100644
--- a/libglusterfs/src/inode.h
+++ b/libglusterfs/src/inode.h
@@ -40,6 +40,7 @@ typedef struct _dentry dentry_t;
#include "list.h"
#include "xlator.h"
#include "iatt.h"
+#include "uuid.h"
struct _inode_table {
@@ -94,6 +95,7 @@ struct _inode_ctx {
struct _inode {
inode_table_t *table; /* the table this inode belongs to */
+ uuid_t gfid;
gf_lock_t lock;
uint64_t nlookup;
uint64_t generation;