summaryrefslogtreecommitdiffstats
path: root/xlators
diff options
context:
space:
mode:
authorAnand Avati <avati@gluster.com>2010-09-03 13:58:48 +0000
committerVijay Bellur <vijay@dev.gluster.com>2010-09-04 01:45:06 -0700
commitac60a2a7f3c7b07830669e282d9fc796cbc78f38 (patch)
treee99cb728b67e18498440fd55c2ab46b0a5c16d06 /xlators
parent2822157056d8347518f7e1b8bf9ee04bea7286ae (diff)
gfid: changes in inode management
- incorporate usage of uuid (gfid) as the key for finding inodes - deprecate inode number/generation number based inode_get - undo code specific to generation numbers (attic list etc.) 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 'xlators')
-rw-r--r--xlators/cluster/afr/src/afr-common.c2
-rw-r--r--xlators/cluster/dht/src/dht-common.c1
-rw-r--r--xlators/mount/fuse/src/fuse-bridge.c25
-rw-r--r--xlators/nfs/server/src/mount3.c6
-rw-r--r--xlators/nfs/server/src/nfs3-helpers.c3
-rw-r--r--xlators/protocol/legacy/server/src/server-protocol.c7
-rw-r--r--xlators/protocol/legacy/server/src/server-resolve.c6
-rw-r--r--xlators/protocol/server/src/server-resolve.c6
-rw-r--r--xlators/protocol/server/src/server3_1-fops.c8
9 files changed, 16 insertions, 48 deletions
diff --git a/xlators/cluster/afr/src/afr-common.c b/xlators/cluster/afr/src/afr-common.c
index 38e58ba9559..22bb4322edd 100644
--- a/xlators/cluster/afr/src/afr-common.c
+++ b/xlators/cluster/afr/src/afr-common.c
@@ -626,8 +626,6 @@ afr_lookup_done (call_frame_t *frame, xlator_t *this, struct iatt *lookup_buf)
if (local->cont.lookup.inode->ino) {
local->cont.lookup.buf.ia_ino =
local->cont.lookup.inode->ino;
- local->cont.lookup.buf.ia_gen =
- local->cont.lookup.inode->generation;
}
}
diff --git a/xlators/cluster/dht/src/dht-common.c b/xlators/cluster/dht/src/dht-common.c
index a1b48649417..cef73a9d681 100644
--- a/xlators/cluster/dht/src/dht-common.c
+++ b/xlators/cluster/dht/src/dht-common.c
@@ -289,7 +289,6 @@ dht_revalidate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
local->op_ret = 0;
local->stbuf.ia_ino = local->ia_ino;
- local->stbuf.ia_gen = local->loc.inode->generation;
if (local->loc.parent)
local->postparent.ia_ino = local->loc.parent->ino;
diff --git a/xlators/mount/fuse/src/fuse-bridge.c b/xlators/mount/fuse/src/fuse-bridge.c
index aea0f88b0c1..97309194819 100644
--- a/xlators/mount/fuse/src/fuse-bridge.c
+++ b/xlators/mount/fuse/src/fuse-bridge.c
@@ -145,14 +145,6 @@ fuse_entry_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
state->loc.name, buf);
if (linked_inode != inode) {
- gf_log ("glusterfs-fuse", GF_LOG_WARNING,
- "%s(%s) inode (ptr=%p, ino=%"PRId64", "
- "gen=%"PRId64") found conflict (ptr=%p, "
- "ino=%"PRId64", gen=%"PRId64")",
- gf_fop_list[frame->root->op],
- state->loc.path, inode, inode->ino,
- inode->generation, linked_inode,
- linked_inode->ino, linked_inode->generation);
}
inode_lookup (linked_inode);
@@ -161,8 +153,6 @@ fuse_entry_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
/* should we do linked_node or inode */
feo.nodeid = inode_to_fuse_nodeid (linked_inode);
- feo.generation = linked_inode->generation;
-
inode_unref (linked_inode);
feo.entry_valid =
@@ -1445,14 +1435,6 @@ fuse_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
state->loc.name, buf);
if (linked_inode != inode) {
- gf_log ("glusterfs-fuse", GF_LOG_WARNING,
- "create(%s) inode (ptr=%p, ino=%"PRId64", "
- "gen=%"PRId64") found conflict (ptr=%p, "
- "ino=%"PRId64", gen=%"PRId64")",
- state->loc.path, inode, inode->ino,
- inode->generation, linked_inode,
- linked_inode->ino, linked_inode->generation);
-
/*
VERY racy code (if used anywhere else)
-- don't do this without understanding
@@ -1470,8 +1452,6 @@ fuse_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
feo.nodeid = inode_to_fuse_nodeid (linked_inode);
- feo.generation = linked_inode->generation;
-
feo.entry_valid = calc_timeout_sec (priv->entry_timeout);
feo.entry_valid_nsec = calc_timeout_nsec (priv->entry_timeout);
feo.attr_valid = calc_timeout_sec (priv->attribute_timeout);
@@ -2933,6 +2913,7 @@ fuse_first_lookup (xlator_t *this)
xlator_t *xl = NULL;
dict_t *dict = NULL;
struct fuse_first_lookup stub;
+ uuid_t gfid;
priv = this->private;
@@ -2954,6 +2935,10 @@ fuse_first_lookup (xlator_t *this)
frame->local = &stub;
+ memset (gfid, 0, 16);
+ gfid[15] = 1;
+
+
STACK_WIND (frame, fuse_first_lookup_cbk, xl, xl->fops->lookup,
&loc, dict);
dict_unref (dict);
diff --git a/xlators/nfs/server/src/mount3.c b/xlators/nfs/server/src/mount3.c
index 2a7a36c8f7e..c61cf0a488a 100644
--- a/xlators/nfs/server/src/mount3.c
+++ b/xlators/nfs/server/src/mount3.c
@@ -306,8 +306,8 @@ mnt3svc_mount_inode (rpcsvc_request_t *req, struct mount3_state *ms,
ret = nfs_inode_loc_fill (exportinode, &exportloc);
if (ret < 0) {
gf_log (GF_MNT, GF_LOG_ERROR, "Loc fill failed for export inode"
- ": ino %"PRIu64", gen: %"PRIu64", volume: %s",
- exportinode->ino, exportinode->generation, xl->name);
+ ": ino %"PRIu64", volume: %s",
+ exportinode->ino, xl->name);
goto err;
}
@@ -446,7 +446,7 @@ __mnt3_resolve_export_subdir_comp (mnt3_resolve_t *mres)
goto err;
parino = mres->resolveloc.inode->ino;
- pargen = mres->resolveloc.inode->generation;
+
/* Wipe the contents of the previous component */
nfs_loc_wipe (&mres->resolveloc);
ret = nfs_entry_loc_fill (mres->exp->vol->itable, parino, pargen,
diff --git a/xlators/nfs/server/src/nfs3-helpers.c b/xlators/nfs/server/src/nfs3-helpers.c
index c10954ab996..5a5a0b29df3 100644
--- a/xlators/nfs/server/src/nfs3-helpers.c
+++ b/xlators/nfs/server/src/nfs3-helpers.c
@@ -2580,7 +2580,6 @@ nfs3_fh_resolve_found_entry (nfs3_call_state_t *cs, gf_dirent_t *candidate)
return -EFAULT;
dirino = cs->resolvedloc.inode->ino;
- dirgen = cs->resolvedloc.inode->generation;
nfs_loc_wipe (&cs->resolvedloc);
ret = nfs_entry_loc_fill (cs->vol->itable, dirino, dirgen,
@@ -2644,7 +2643,6 @@ nfs3_fh_resolve_found_parent (nfs3_call_state_t *cs, gf_dirent_t *candidate)
return -EFAULT;
dirino = cs->resolvedloc.inode->ino;
- dirgen = cs->resolvedloc.inode->generation;
nfs_loc_wipe (&cs->resolvedloc);
ret = nfs_entry_loc_fill (cs->vol->itable, dirino, dirgen,
@@ -2862,7 +2860,6 @@ nfs3_fh_resolve_check_response (nfs3_call_state_t *cs, gf_dirent_t *candidate,
return ret;
dirino = cs->resolvedloc.inode->ino;
- dirgen = cs->resolvedloc.inode->generation;
switch (response) {
diff --git a/xlators/protocol/legacy/server/src/server-protocol.c b/xlators/protocol/legacy/server/src/server-protocol.c
index 35d58ae99cd..56acc59b791 100644
--- a/xlators/protocol/legacy/server/src/server-protocol.c
+++ b/xlators/protocol/legacy/server/src/server-protocol.c
@@ -2068,13 +2068,6 @@ server_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
state->loc.name, stbuf);
if (link_inode != inode) {
- gf_log (this->name, GF_LOG_DEBUG,
- "create(%s) inode (ptr=%p, ino=%"PRId64", "
- "gen=%"PRId64") found conflict (ptr=%p, "
- "ino=%"PRId64", gen=%"PRId64")",
- state->loc.path, inode, inode->ino,
- inode->generation, link_inode,
- link_inode->ino, link_inode->generation);
/*
VERY racy code (if used anywhere else)
diff --git a/xlators/protocol/legacy/server/src/server-resolve.c b/xlators/protocol/legacy/server/src/server-resolve.c
index 63351fd34f0..f08ec1c060c 100644
--- a/xlators/protocol/legacy/server/src/server-resolve.c
+++ b/xlators/protocol/legacy/server/src/server-resolve.c
@@ -354,7 +354,8 @@ resolve_entry_simple (call_frame_t *frame)
goto out;
}
- if (parent->ino != 1 && parent->generation != resolve->gen) {
+// if (parent->ino != 1 && parent->generation != resolve->gen) {
+ if (0) {
/* simple resolution is decisive - request was for a
stale handle */
resolve->op_ret = -1;
@@ -468,7 +469,8 @@ resolve_inode_simple (call_frame_t *frame)
goto out;
}
- if (inode->ino != 1 && inode->generation != resolve->gen) {
+// if (inode->ino != 1 && inode->generation != resolve->gen) {
+ if (0) {
resolve->op_ret = -1;
resolve->op_errno = ENOENT;
ret = -1;
diff --git a/xlators/protocol/server/src/server-resolve.c b/xlators/protocol/server/src/server-resolve.c
index ec955b1e872..eba34bdf768 100644
--- a/xlators/protocol/server/src/server-resolve.c
+++ b/xlators/protocol/server/src/server-resolve.c
@@ -349,7 +349,8 @@ resolve_entry_simple (call_frame_t *frame)
goto out;
}
- if (parent->ino != 1 && parent->generation != resolve->gen) {
+// if (parent->ino != 1 && parent->generation != resolve->gen) {
+ if (0) {
/* simple resolution is decisive - request was for a
stale handle */
resolve->op_ret = -1;
@@ -457,7 +458,8 @@ resolve_inode_simple (call_frame_t *frame)
goto out;
}
- if (inode->ino != 1 && inode->generation != resolve->gen) {
+// if (inode->ino != 1 && inode->generation != resolve->gen) {
+ if (0) {
resolve->op_ret = -1;
resolve->op_errno = ENOENT;
ret = -1;
diff --git a/xlators/protocol/server/src/server3_1-fops.c b/xlators/protocol/server/src/server3_1-fops.c
index c73f3df15be..7748ef81324 100644
--- a/xlators/protocol/server/src/server3_1-fops.c
+++ b/xlators/protocol/server/src/server3_1-fops.c
@@ -1369,14 +1369,6 @@ server_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
state->loc.name, stbuf);
if (link_inode != inode) {
- gf_log (this->name, GF_LOG_DEBUG,
- "create(%s) inode (ptr=%p, ino=%"PRId64", "
- "gen=%"PRId64") found conflict (ptr=%p, "
- "ino=%"PRId64", gen=%"PRId64")",
- state->loc.path, inode, inode->ino,
- inode->generation, link_inode,
- link_inode->ino, link_inode->generation);
-
/*
VERY racy code (if used anywhere else)
-- don't do this without understanding