summaryrefslogtreecommitdiffstats
path: root/xlators/features/snapview-client/src
diff options
context:
space:
mode:
authorRaghavendra Bhat <raghavendra@redhat.com>2014-06-17 00:28:01 +0530
committerVijay Bellur <vbellur@redhat.com>2014-09-08 07:14:19 -0700
commit822cf315a5d0f0d2bc90e9f2d8faa6e5e5701ed4 (patch)
treec386b9c054c86b033cf1945dc7ce3c7a3af687e9 /xlators/features/snapview-client/src
parent5c869aea79c0f304150eac014c7177e74ce0852e (diff)
snapview-server: register a callback with glusterd to get notifications
* As of now snapview-server is polling (sending rpc requests to glusterd) to get the latest list of snapshots at some regular time intervals (non configurable). Instead of that register a callback with glusterd so that glusterd sends notifications to snapd whenever a snapshot is created/deleted and snapview-server can configure itself. Change-Id: I17a274fd2ab487d030678f0077feb2b0f35e5896 BUG: 1119628 Signed-off-by: Raghavendra Bhat <raghavendra@redhat.com> Reviewed-on: http://review.gluster.org/8150 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Diffstat (limited to 'xlators/features/snapview-client/src')
-rw-r--r--xlators/features/snapview-client/src/snapview-client.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/xlators/features/snapview-client/src/snapview-client.c b/xlators/features/snapview-client/src/snapview-client.c
index ad022101715..c9077351007 100644
--- a/xlators/features/snapview-client/src/snapview-client.c
+++ b/xlators/features/snapview-client/src/snapview-client.c
@@ -148,12 +148,14 @@ svc_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
So if lookup fails with ENOENT and the inode context is not there,
then send the lookup to the 2nd child of svc.
*/
- ret = svc_inode_ctx_get (this, inode, &inode_type);
if (op_ret) {
- if (op_errno == ENOENT && (ret < 0) &&
- !uuid_is_null (local->loc.gfid) &&
- !__is_root_gfid (local->loc.gfid)) {
- if (subvolume == FIRST_CHILD (this)) {
+ if (op_errno == ENOENT &&
+ !uuid_is_null (local->loc.gfid)) {
+ ret = svc_inode_ctx_get (this, inode, &inode_type);
+ if (ret < 0 && subvolume == FIRST_CHILD (this)) {
+ gf_log (this->name, GF_LOG_DEBUG,
+ "Lookup on normal graph failed. "
+ "Sending lookup to snapview-server");
subvolume = SECOND_CHILD (this);
STACK_WIND (frame, svc_lookup_cbk, subvolume,
subvolume->fops->lookup,
@@ -162,8 +164,10 @@ svc_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
}
}
- gf_log (this->name, GF_LOG_WARNING,
- "Lookup on normal graph failed");
+ gf_log (this->name,
+ (op_errno == ENOENT)?GF_LOG_DEBUG:GF_LOG_ERROR,
+ "Lookup on normal graph failed with error %s",
+ strerror (op_errno));
goto out;
}