diff options
| author | Anand Avati <avati@redhat.com> | 2014-01-16 16:14:36 -0800 | 
|---|---|---|
| committer | Vijay Bellur <vbellur@redhat.com> | 2014-03-22 05:25:57 -0700 | 
| commit | 6d3739292b7b51d2ddbab75b5f884fb38925b943 (patch) | |
| tree | cf332a881a49c0904a7e023935750c2d080fc1c5 /libglusterfs | |
| parent | eb87c96f49b3dd2c7460e58c54ce909c706cd475 (diff) | |
cluster/afr: refactor
- Remove client side self-healing completely (opendir, openfd, lookup)
- Re-work readdir-failover to work reliably in case of NFS
- Remove unused/dead lock recovery code
- Consistently use xdata in both calls and callbacks in all FOPs
- Per-inode event generation, used to force inode ctx refresh
- Implement dirty flag support (in place of pending counts)
- Eliminate inode ctx structure, use read subvol bits + event_generation
- Implement inode ctx refreshing based on event generation
- Provide backward compatibility in transactions
- remove unused variables and functions
- make code more consistent in style and pattern
- regularize and clean up inode-write transaction code
- regularize and clean up dir-write transaction code
- regularize and clean up common FOPs
- reorganize transaction framework code
- skip setting xattrs in pending dict if nothing is pending
- re-write self-healing code using syncops
- re-write simpler self-heal-daemon
Change-Id: I1e4080c9796c8a2815c2dab4be3073f389d614a8
BUG: 1021686
Signed-off-by: Anand Avati <avati@redhat.com>
Reviewed-on: http://review.gluster.org/6010
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Diffstat (limited to 'libglusterfs')
| -rw-r--r-- | libglusterfs/src/gf-dirent.c | 2 | ||||
| -rw-r--r-- | libglusterfs/src/glusterfs.h | 2 | ||||
| -rw-r--r-- | libglusterfs/src/xlator.c | 8 | 
3 files changed, 9 insertions, 3 deletions
diff --git a/libglusterfs/src/gf-dirent.c b/libglusterfs/src/gf-dirent.c index bb028c9671d..0cda83a27c3 100644 --- a/libglusterfs/src/gf-dirent.c +++ b/libglusterfs/src/gf-dirent.c @@ -83,6 +83,8 @@ gf_link_inodes_from_dirent (xlator_t *this, inode_t *parent,                  if (entry->inode) {                          link_inode = inode_link (entry->inode, parent,                                                   entry->d_name, &entry->d_stat); +			if (!link_inode) +				continue;                          inode_lookup (link_inode);                          inode_unref (link_inode);                  } diff --git a/libglusterfs/src/glusterfs.h b/libglusterfs/src/glusterfs.h index 31c46b74efc..5ce0d6e70bb 100644 --- a/libglusterfs/src/glusterfs.h +++ b/libglusterfs/src/glusterfs.h @@ -132,7 +132,7 @@  /* Index xlator related */  #define GF_XATTROP_INDEX_GFID "glusterfs.xattrop_index_gfid" -#define GF_BASE_INDICES_HOLDER_GFID "glusterfs.base_indicies_holder_gfid" +#define GF_XATTROP_INDEX_COUNT "glusterfs.xattrop_index_count"  #define GF_GFIDLESS_LOOKUP "gfidless-lookup"  /* replace-brick and pump related internal xattrs */ diff --git a/libglusterfs/src/xlator.c b/libglusterfs/src/xlator.c index f3df8e2aeaf..1bded6d3d11 100644 --- a/libglusterfs/src/xlator.c +++ b/libglusterfs/src/xlator.c @@ -680,7 +680,9 @@ loc_copy_overload_parent (loc_t *dst, loc_t *src, inode_t *parent)                          dst->name = strrchr (dst->path, '/');                  if (dst->name)                          dst->name++; -        } +        } else if (src->name) { +		dst->name = src->name; +	}          ret = 0;  out: @@ -718,7 +720,9 @@ loc_copy (loc_t *dst, loc_t *src)                          dst->name = strrchr (dst->path, '/');                  if (dst->name)                          dst->name++; -        } +        } else if (src->name) { +		dst->name = src->name; +	}          ret = 0;  out:  | 
