diff options
author | Mohammed Rafi KC <rkavunga@redhat.com> | 2015-08-12 14:56:27 +0530 |
---|---|---|
committer | Raghavendra G <rgowdapp@redhat.com> | 2015-11-09 02:49:39 -0800 |
commit | c8c9308134ae4ce24c630a1b0ccfcf4e8f9b0fe7 (patch) | |
tree | ca7f08822d6d7d58f48817dbb1d35a6551d56a51 /xlators/performance/md-cache/src | |
parent | 529c3bf41f666d1238f71fba0465eaa812322276 (diff) | |
download | glusterfs-c8c9308134ae4ce24c630a1b0ccfcf4e8f9b0fe7.tar.gz glusterfs-c8c9308134ae4ce24c630a1b0ccfcf4e8f9b0fe7.tar.xz glusterfs-c8c9308134ae4ce24c630a1b0ccfcf4e8f9b0fe7.zip |
md-cache: Remove readdirp fop for md-cache
readdirp call will return inode for each entry and
will share this nodeid with kernal, also md-cache
will cache this gfid and base name. So when a lookup
operation is perfromed on such an inode, md-cache
will wind the call, that prevents populating inode
ctx for other lower layer xlators.
Change-Id: I43c768703a3cc66d05b1c32909d1a2781001cb49
BUG: 1236032
Signed-off-by: Mohammed Rafi KC <rkavunga@redhat.com>
Reviewed-on: http://review.gluster.org/11894
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Raghavendra G <rgowdapp@redhat.com>
Diffstat (limited to 'xlators/performance/md-cache/src')
-rw-r--r-- | xlators/performance/md-cache/src/md-cache.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/xlators/performance/md-cache/src/md-cache.c b/xlators/performance/md-cache/src/md-cache.c index d5ff10f9f5..59af907a1e 100644 --- a/xlators/performance/md-cache/src/md-cache.c +++ b/xlators/performance/md-cache/src/md-cache.c @@ -1972,7 +1972,8 @@ int mdc_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int op_ret, int op_errno, gf_dirent_t *entries, dict_t *xdata) { - gf_dirent_t *entry = NULL; + gf_dirent_t *entry = NULL; + struct md_cache *mdc = NULL; if (op_ret <= 0) goto unwind; @@ -1980,6 +1981,8 @@ mdc_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this, list_for_each_entry (entry, &entries->list, list) { if (!entry->inode) continue; + if (mdc_inode_ctx_get (this, entry->inode, &mdc) != 0) + continue; mdc_inode_iatt_set (this, entry->inode, &entry->d_stat); mdc_inode_xatt_set (this, entry->inode, entry->dict); } |