From ac60a2a7f3c7b07830669e282d9fc796cbc78f38 Mon Sep 17 00:00:00 2001 From: Anand Avati Date: Fri, 3 Sep 2010 13:58:48 +0000 Subject: 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 Signed-off-by: Anand V. Avati Signed-off-by: Vijay Bellur BUG: 971 (dynamic volume management) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=971 --- xlators/cluster/afr/src/afr-common.c | 2 -- xlators/cluster/dht/src/dht-common.c | 1 - xlators/mount/fuse/src/fuse-bridge.c | 25 +++++----------------- xlators/nfs/server/src/mount3.c | 6 +++--- xlators/nfs/server/src/nfs3-helpers.c | 3 --- .../protocol/legacy/server/src/server-protocol.c | 7 ------ .../protocol/legacy/server/src/server-resolve.c | 6 ++++-- xlators/protocol/server/src/server-resolve.c | 6 ++++-- xlators/protocol/server/src/server3_1-fops.c | 8 ------- 9 files changed, 16 insertions(+), 48 deletions(-) (limited to 'xlators') diff --git a/xlators/cluster/afr/src/afr-common.c b/xlators/cluster/afr/src/afr-common.c index 38e58ba95..22bb4322e 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 a1b486494..cef73a9d6 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 aea0f88b0..973091948 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 2a7a36c8f..c61cf0a48 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 c10954ab9..5a5a0b29d 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 35d58ae99..56acc59b7 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 63351fd34..f08ec1c06 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 ec955b1e8..eba34bdf7 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 c73f3df15..7748ef813 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 -- cgit