cb8e9e
From f7ac1de714b976a3718248595bd839f67aec84fc Mon Sep 17 00:00:00 2001
cb8e9e
From: Jiffin Tony Thottan <jthottan@redhat.com>
cb8e9e
Date: Tue, 11 Aug 2015 16:00:47 +0530
cb8e9e
Subject: [PATCH 303/303] libgfapi: adding 'follow' flag to glfs_h_lookupat()
cb8e9e
cb8e9e
This patch is backport of http://review.gluster.org/#/c/11883/
cb8e9e
cb8e9e
Previously glfs_h_lookupat won't follow the symlink, this patch
cb8e9e
introduces new flag `follow` which will resolve the same. Applications
cb8e9e
linking against the new library will need to use the new glfs_h_lookupat
cb8e9e
API call.
cb8e9e
cb8e9e
In order to stay compatible with existing binaries that use the previous
cb8e9e
glfs_h_lookupat() function, the old symbol needs to stay available.
cb8e9e
cb8e9e
Verification that there are two versions of glfs_h_lookupat:
cb8e9e
cb8e9e
  $ objdump -T /usr/lib64/libgfapi.so.0 | grep -w glfs_h_lookupat
cb8e9e
  0000000000015070 g    DF .text  000000000000021e  GFAPI_3.7.4 glfs_h_lookupat
cb8e9e
  0000000000015290 g    DF .text  0000000000000008 (GFAPI_3.4.2) glfs_h_lookupat
cb8e9e
cb8e9e
Testing with a binary (based on anonymous_fd_read_write.c from ./tests/)
cb8e9e
that was linked against the old library:
cb8e9e
cb8e9e
  $ objdump -T ./lookupat | grep -w glfs_h_lookupat
cb8e9e
  0000000000000000      DF *UND*  0000000000000000  GFAPI_3.4.2 glfs_h_lookupat
cb8e9e
cb8e9e
Enable debugging for 'ld.so' so that we can check that the GFAPI_3.4.2
cb8e9e
version of the symbol gets loaded:
cb8e9e
cb8e9e
  $ export LD_DEBUG_OUTPUT=lookupat.ld.log LD_DEBUG=all
cb8e9e
  $ ./lookupat
cb8e9e
  $ grep -w glfs_h_lookupat lookupat.ld.log.2543
cb8e9e
  2543:     symbol=glfs_h_lookupat;  lookup in file=./lookupat [0]
cb8e9e
  2543:     symbol=glfs_h_lookupat;  lookup in file=/lib64/libgfapi.so.0 [0]
cb8e9e
  2543:     binding file ./lookupat [0] to /lib64/libgfapi.so.0 [0]: normal symbol `glfs_h_lookupat' [GFAPI_3.4.2]
cb8e9e
cb8e9e
This change has been successfully cherry-picked as 1ead86a8bcbfe4045729466e4b98f765f3c13c8d
cb8e9e
in master
cb8e9e
cb8e9e
Upstream reference
cb8e9e
>Change-Id: I8bf9b1c19a0585f681bc1a7f84aad1ccd0f75f6a
cb8e9e
>BUG: 1252410
cb8e9e
>Signed-off-by: Jiffin Tony Thottan <jthottan@redhat.com>
cb8e9e
>Signed-off-by: Niels de Vos <ndevos@redhat.com>
cb8e9e
>Reviewed-on: http://review.gluster.org/11883
cb8e9e
>Reviewed-by: soumya k <skoduri@redhat.com>
cb8e9e
>Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com>
cb8e9e
>Tested-by: NetBSD Build System <jenkins@build.gluster.org>
cb8e9e
cb8e9e
Change-Id: Idcce1fb3e8cbf1377807f18f7361e435c07097e9
cb8e9e
BUG: 1257007
cb8e9e
Signed-off-by: Jiffin Tony Thottan <jthottan@redhat.com>
cb8e9e
Reviewed-on: https://code.engineering.redhat.com/gerrit/56325
cb8e9e
Reviewed-by: Kaleb Keithley <kkeithle@redhat.com>
cb8e9e
Reviewed-by: Soumya Koduri <skoduri@redhat.com>
cb8e9e
Tested-by: Kaleb Keithley <kkeithle@redhat.com>
cb8e9e
---
cb8e9e
 api/examples/glfsxmp.c                             |   36 ++++++++++----------
cb8e9e
 api/src/gfapi.aliases                              |    4 ++-
cb8e9e
 api/src/gfapi.map                                  |    6 +++-
cb8e9e
 api/src/glfs-handleops.c                           |   15 ++++++--
cb8e9e
 api/src/glfs-handles.h                             |    8 ++--
cb8e9e
 .../gfapi-symbol-versions/gfapi-symbol-versions.md |    2 +-
cb8e9e
 tests/basic/gfapi/anonymous_fd_read_write.c        |    2 +-
cb8e9e
 .../features/snapview-server/src/snapview-server.c |    2 +-
cb8e9e
 8 files changed, 45 insertions(+), 30 deletions(-)
cb8e9e
cb8e9e
diff --git a/api/examples/glfsxmp.c b/api/examples/glfsxmp.c
cb8e9e
index 7180a99..7ff3f0e 100644
cb8e9e
--- a/api/examples/glfsxmp.c
cb8e9e
+++ b/api/examples/glfsxmp.c
cb8e9e
@@ -216,7 +216,7 @@ test_h_unlink (void)
cb8e9e
         printf ("glfs_h_unlink tests: In Progress\n");
cb8e9e
 
cb8e9e
         /* Prepare tests */
cb8e9e
-        parent = glfs_h_lookupat (fs, NULL, full_parent_name, &sb);
cb8e9e
+        parent = glfs_h_lookupat (fs, NULL, full_parent_name, &sb, 0);
cb8e9e
         if (parent == NULL) {
cb8e9e
                 fprintf (stderr, "glfs_h_lookupat: error on lookup of %s: from (%p),%s\n",
cb8e9e
                          full_parent_name, NULL, strerror (errno));
cb8e9e
@@ -350,7 +350,7 @@ test_h_getsetattrs (void)
cb8e9e
         printf("glfs_h_getattrs and setattrs tests: In Progress\n");
cb8e9e
 
cb8e9e
         /* Prepare tests */
cb8e9e
-        parent = glfs_h_lookupat (fs, NULL, full_parent_name, &sb);
cb8e9e
+        parent = glfs_h_lookupat (fs, NULL, full_parent_name, &sb, 0);
cb8e9e
         if (parent == NULL) {
cb8e9e
                 fprintf (stderr, "glfs_h_lookupat: error on lookup of %s: from (%p),%s\n",
cb8e9e
                          full_parent_name, NULL, strerror (errno));
cb8e9e
@@ -447,7 +447,7 @@ test_h_truncate (void)
cb8e9e
         printf("glfs_h_truncate tests: In Progress\n");
cb8e9e
 
cb8e9e
         /* Prepare tests */
cb8e9e
-        root = glfs_h_lookupat (fs, NULL, full_parent_name, &sb);
cb8e9e
+        root = glfs_h_lookupat (fs, NULL, full_parent_name, &sb, 0);
cb8e9e
         if (root == NULL) {
cb8e9e
                 fprintf (stderr, "glfs_h_lookupat: error on lookup of %s: from (%p),%s\n",
cb8e9e
                          full_parent_name, NULL, strerror (errno));
cb8e9e
@@ -585,7 +585,7 @@ test_h_links (void)
cb8e9e
         printf("glfs_h_link(s) tests: In Progress\n");
cb8e9e
 
cb8e9e
         /* Prepare tests */
cb8e9e
-        root = glfs_h_lookupat (fs, NULL, full_parent_name, &sb);
cb8e9e
+        root = glfs_h_lookupat (fs, NULL, full_parent_name, &sb, 0);
cb8e9e
         if (root == NULL) {
cb8e9e
                 fprintf (stderr, "glfs_h_lookupat: error on lookup of %s: from (%p),%s\n",
cb8e9e
                          full_parent_name, NULL, strerror (errno));
cb8e9e
@@ -729,7 +729,7 @@ test_h_rename (void)
cb8e9e
         printf("glfs_h_rename tests: In Progress\n");
cb8e9e
 
cb8e9e
         /* Prepare tests */
cb8e9e
-        root = glfs_h_lookupat (fs, NULL, full_parent_name, &sb);
cb8e9e
+        root = glfs_h_lookupat (fs, NULL, full_parent_name, &sb, 0);
cb8e9e
         if (root == NULL) {
cb8e9e
                 fprintf (stderr, "glfs_h_lookupat: error on lookup of %s: from (%p),%s\n",
cb8e9e
                          full_parent_name, NULL, strerror (errno));
cb8e9e
@@ -904,7 +904,7 @@ test_h_performance (void)
cb8e9e
         printf("glfs_h_performance tests: In Progress\n");
cb8e9e
 
cb8e9e
         /* Prepare tests */
cb8e9e
-        parent = glfs_h_lookupat (fs, NULL, full_parent_name, &sb);
cb8e9e
+        parent = glfs_h_lookupat (fs, NULL, full_parent_name, &sb, 0);
cb8e9e
         if (parent == NULL) {
cb8e9e
                 fprintf (stderr, "glfs_h_lookupat: error on lookup of %s: from (%p),%s\n",
cb8e9e
                          full_parent_name, NULL, strerror (errno));
cb8e9e
@@ -940,7 +940,7 @@ test_h_performance (void)
cb8e9e
                         goto out;
cb8e9e
                 }
cb8e9e
 
cb8e9e
-                leaf = glfs_h_lookupat (fs, dir, my_file_name, &sb);
cb8e9e
+                leaf = glfs_h_lookupat (fs, dir, my_file_name, &sb, 0);
cb8e9e
                 if (leaf != NULL) {
cb8e9e
                         fprintf (stderr, "glfs_h_lookup: exists %s\n",
cb8e9e
                                  my_file_name);
cb8e9e
@@ -1114,7 +1114,7 @@ test_handleops (int argc, char *argv[])
cb8e9e
         /* glfs_lookupat test */
cb8e9e
         printf ("glfs_h_lookupat tests: In Progress\n");
cb8e9e
         /* start at root of the volume */
cb8e9e
-        root = glfs_h_lookupat (fs, NULL, "/", &sb);
cb8e9e
+        root = glfs_h_lookupat (fs, NULL, "/", &sb, 0);
cb8e9e
         if (root == NULL) {
cb8e9e
                 fprintf (stderr, "glfs_h_lookupat: error on lookup of %s: from (%p),%s\n",
cb8e9e
                          "/", NULL, strerror (errno));
cb8e9e
@@ -1124,7 +1124,7 @@ test_handleops (int argc, char *argv[])
cb8e9e
         peek_stat (&sb);
cb8e9e
 
cb8e9e
         /* lookup a parent within root */
cb8e9e
-        parent = glfs_h_lookupat (fs, root, parent_name, &sb);
cb8e9e
+        parent = glfs_h_lookupat (fs, root, parent_name, &sb, 0);
cb8e9e
         if (parent == NULL) {
cb8e9e
                 fprintf (stderr, "glfs_h_lookupat: error on lookup of %s: from (%p),%s\n",
cb8e9e
                          parent_name, root, strerror (errno));
cb8e9e
@@ -1134,7 +1134,7 @@ test_handleops (int argc, char *argv[])
cb8e9e
         peek_stat (&sb);
cb8e9e
 
cb8e9e
         /* lookup a leaf/child within the parent */
cb8e9e
-        leaf = glfs_h_lookupat (fs, parent, leaf_name, &sb);
cb8e9e
+        leaf = glfs_h_lookupat (fs, parent, leaf_name, &sb, 0);
cb8e9e
         if (leaf == NULL) {
cb8e9e
                 fprintf (stderr, "glfs_h_lookupat: error on lookup of %s: from (%p),%s\n",
cb8e9e
                          leaf_name, parent, strerror (errno));
cb8e9e
@@ -1149,7 +1149,7 @@ test_handleops (int argc, char *argv[])
cb8e9e
         glfs_h_close (parent); parent = NULL;
cb8e9e
 
cb8e9e
         /* check absolute paths */
cb8e9e
-        root = glfs_h_lookupat (fs, NULL, "/", &sb);
cb8e9e
+        root = glfs_h_lookupat (fs, NULL, "/", &sb, 0);
cb8e9e
         if (root == NULL) {
cb8e9e
                 fprintf (stderr, "glfs_h_lookupat: error on lookup of %s: from (%p),%s\n",
cb8e9e
                          "/", NULL, strerror (errno));
cb8e9e
@@ -1158,7 +1158,7 @@ test_handleops (int argc, char *argv[])
cb8e9e
         }
cb8e9e
         peek_stat (&sb);
cb8e9e
 
cb8e9e
-        parent = glfs_h_lookupat (fs, NULL, full_parent_name, &sb);
cb8e9e
+        parent = glfs_h_lookupat (fs, NULL, full_parent_name, &sb, 0);
cb8e9e
         if (parent == NULL) {
cb8e9e
                 fprintf (stderr, "glfs_h_lookupat: error on lookup of %s: from (%p),%s\n",
cb8e9e
                          full_parent_name, root, strerror (errno));
cb8e9e
@@ -1167,7 +1167,7 @@ test_handleops (int argc, char *argv[])
cb8e9e
         }
cb8e9e
         peek_stat (&sb);
cb8e9e
 
cb8e9e
-        leaf = glfs_h_lookupat (fs, NULL, full_leaf_name, &sb);
cb8e9e
+        leaf = glfs_h_lookupat (fs, NULL, full_leaf_name, &sb, 0);
cb8e9e
         if (leaf == NULL) {
cb8e9e
                 fprintf (stderr, "glfs_h_lookupat: error on lookup of %s: from (%p),%s\n",
cb8e9e
                          full_leaf_name, parent, strerror (errno));
cb8e9e
@@ -1180,7 +1180,7 @@ test_handleops (int argc, char *argv[])
cb8e9e
         glfs_h_close (leaf); leaf = NULL;
cb8e9e
 
cb8e9e
         /* check multiple component paths */
cb8e9e
-        leaf = glfs_h_lookupat (fs, root, relative_leaf_name, &sb);
cb8e9e
+        leaf = glfs_h_lookupat (fs, root, relative_leaf_name, &sb, 0);
cb8e9e
         if (leaf == NULL) {
cb8e9e
                 fprintf (stderr, "glfs_h_lookupat: error on lookup of %s: from (%p),%s\n",
cb8e9e
                          relative_leaf_name, parent, strerror (errno));
cb8e9e
@@ -1236,7 +1236,7 @@ test_handleops (int argc, char *argv[])
cb8e9e
 
cb8e9e
         /* Create tests */
cb8e9e
         printf ("glfs_h_creat tests: In Progress\n");
cb8e9e
-        parent = glfs_h_lookupat (fs, NULL, full_parent_name, &sb);
cb8e9e
+        parent = glfs_h_lookupat (fs, NULL, full_parent_name, &sb, 0);
cb8e9e
         if (parent == NULL) {
cb8e9e
                 fprintf (stderr, "glfs_h_lookupat: error on lookup of %s: from (%p),%s\n",
cb8e9e
                          full_parent_name, root, strerror (errno));
cb8e9e
@@ -1284,7 +1284,7 @@ test_handleops (int argc, char *argv[])
cb8e9e
         printf ("glfs_h_extract_handle and glfs_h_create_from_handle tests: In Progress\n");
cb8e9e
         /* TODO: Change the lookup to creat below for a GIFD recovery falure,
cb8e9e
          * that needs to be fixed */
cb8e9e
-        leaf = glfs_h_lookupat (fs, parent, leaf_name1, &sb);
cb8e9e
+        leaf = glfs_h_lookupat (fs, parent, leaf_name1, &sb, 0);
cb8e9e
         if (leaf == NULL) {
cb8e9e
                 fprintf (stderr, "glfs_h_lookupat: error on lookup of %s: from (%p),%s\n",
cb8e9e
                          leaf_name1, parent, strerror (errno));
cb8e9e
@@ -1355,7 +1355,7 @@ test_handleops (int argc, char *argv[])
cb8e9e
                 goto out;
cb8e9e
         }
cb8e9e
 
cb8e9e
-        parent = glfs_h_lookupat (fs, NULL, full_parent_name, &sb);
cb8e9e
+        parent = glfs_h_lookupat (fs, NULL, full_parent_name, &sb, 0);
cb8e9e
         if (parent == NULL) {
cb8e9e
                 fprintf (stderr, "glfs_h_lookupat: error on lookup of %s: from (%p),%s\n",
cb8e9e
                          full_parent_name, root, strerror (errno));
cb8e9e
@@ -1399,7 +1399,7 @@ test_handleops (int argc, char *argv[])
cb8e9e
                 goto out;
cb8e9e
         }
cb8e9e
 
cb8e9e
-        parent = glfs_h_lookupat (fs, NULL, full_parent_name, &sb);
cb8e9e
+        parent = glfs_h_lookupat (fs, NULL, full_parent_name, &sb, 0);
cb8e9e
         if (parent == NULL) {
cb8e9e
                 fprintf (stderr, "glfs_h_lookupat: error on lookup of %s: from (%p),%s\n",
cb8e9e
                          full_parent_name, root, strerror (errno));
cb8e9e
diff --git a/api/src/gfapi.aliases b/api/src/gfapi.aliases
cb8e9e
index 9776c87..40b6ed2 100644
cb8e9e
--- a/api/src/gfapi.aliases
cb8e9e
+++ b/api/src/gfapi.aliases
cb8e9e
@@ -89,7 +89,7 @@ _pub_glfs_dup _glfs_dup$GFAPI_3.4.0
cb8e9e
 _pub_glfs_setfsuid _glfs_setfsuid$GFAPI_3.4.2
cb8e9e
 _pub_glfs_setfsgid _glfs_setfsgid$GFAPI_3.4.2
cb8e9e
 _pub_glfs_setfsgroups _glfs_setfsgroups$GFAPI_3.4.2
cb8e9e
-_pub_glfs_h_lookupat _glfs_h_lookupat$GFAPI_3.4.2
cb8e9e
+_pub_glfs_h_lookupat34 _glfs_h_lookupat$GFAPI_3.4.2
cb8e9e
 _pub_glfs_h_creat _glfs_h_creat$GFAPI_3.4.2
cb8e9e
 _pub_glfs_h_mkdir _glfs_h_mkdir$GFAPI_3.4.2
cb8e9e
 _pub_glfs_h_mknod _glfs_h_mknod$GFAPI_3.4.2
cb8e9e
@@ -138,3 +138,5 @@ _priv_glfs_free_from_ctx _glfs_free_from_ctx$GFAPI_PRIVATE_3.7.0
cb8e9e
 _priv_glfs_new_from_ctx _glfs_new_from_ctx$GFAPI_PRIVATE_3.7.0
cb8e9e
 _priv_glfs_resolve _glfs_resolve$GFAPI_PRIVATE_3.7.0
cb8e9e
 _priv_glfs_process_upcall_event _glfs_process_upcall_event$GFAPI_PRIVATE_3.7.0
cb8e9e
+
cb8e9e
+_pub_glfs_h_lookupat _glfs_h_lookupat$GFAPI_3.7.4
cb8e9e
diff --git a/api/src/gfapi.map b/api/src/gfapi.map
cb8e9e
index 4886398..d42ae2b 100644
cb8e9e
--- a/api/src/gfapi.map
cb8e9e
+++ b/api/src/gfapi.map
cb8e9e
@@ -98,7 +98,6 @@ GFAPI_3.4.2 {
cb8e9e
 		glfs_setfsuid;
cb8e9e
 		glfs_setfsgid;
cb8e9e
 		glfs_setfsgroups;
cb8e9e
-		glfs_h_lookupat;
cb8e9e
 		glfs_h_creat;
cb8e9e
 		glfs_h_mkdir;
cb8e9e
 		glfs_h_mknod;
cb8e9e
@@ -163,3 +162,8 @@ GFAPI_PRIVATE_3.7.0 {
cb8e9e
 		glfs_resolve;
cb8e9e
 		glfs_process_upcall_event;
cb8e9e
 } GFAPI_3.7.0;
cb8e9e
+
cb8e9e
+GFAPI_3.7.4 {
cb8e9e
+	global:
cb8e9e
+		glfs_h_lookupat;
cb8e9e
+} GFAPI_PRIVATE_3.7.0;
cb8e9e
diff --git a/api/src/glfs-handleops.c b/api/src/glfs-handleops.c
cb8e9e
index 9a85f19..3fd4ead 100644
cb8e9e
--- a/api/src/glfs-handleops.c
cb8e9e
+++ b/api/src/glfs-handleops.c
cb8e9e
@@ -63,7 +63,7 @@ glfs_iatt_from_stat (struct stat *stat, int valid, struct iatt *iatt,
cb8e9e
 
cb8e9e
 struct glfs_object *
cb8e9e
 pub_glfs_h_lookupat (struct glfs *fs, struct glfs_object *parent,
cb8e9e
-                     const char *path, struct stat *stat)
cb8e9e
+                     const char *path, struct stat *stat, int follow)
cb8e9e
 {
cb8e9e
         int                      ret = 0;
cb8e9e
         xlator_t                *subvol = NULL;
cb8e9e
@@ -100,7 +100,7 @@ pub_glfs_h_lookupat (struct glfs *fs, struct glfs_object *parent,
cb8e9e
 
cb8e9e
         /* fop/op */
cb8e9e
         ret = glfs_resolve_at (fs, subvol, inode, path, &loc, &iatt,
cb8e9e
-                                    0 /*TODO: links? */, 0);
cb8e9e
+                                    follow, 0);
cb8e9e
 
cb8e9e
         /* populate out args */
cb8e9e
         if (!ret) {
cb8e9e
@@ -124,7 +124,16 @@ invalid_fs:
cb8e9e
         return object;
cb8e9e
 }
cb8e9e
 
cb8e9e
-GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_h_lookupat, 3.4.2);
cb8e9e
+GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_h_lookupat, 3.7.4);
cb8e9e
+
cb8e9e
+struct glfs_object *
cb8e9e
+pub_glfs_h_lookupat34 (struct glfs *fs, struct glfs_object *parent,
cb8e9e
+                       const char *path, struct stat *stat)
cb8e9e
+{
cb8e9e
+        return pub_glfs_h_lookupat (fs, parent, path, stat, 0);
cb8e9e
+}
cb8e9e
+
cb8e9e
+GFAPI_SYMVER_PUBLIC(glfs_h_lookupat34, glfs_h_lookupat, 3.4.2);
cb8e9e
 
cb8e9e
 int
cb8e9e
 pub_glfs_h_statfs (struct glfs *fs, struct glfs_object *object,
cb8e9e
diff --git a/api/src/glfs-handles.h b/api/src/glfs-handles.h
cb8e9e
index 19c4e8f..71bd21f 100644
cb8e9e
--- a/api/src/glfs-handles.h
cb8e9e
+++ b/api/src/glfs-handles.h
cb8e9e
@@ -153,10 +153,10 @@ enum gfapi_callback_type {
cb8e9e
 /* Handle based operations */
cb8e9e
 /* Operations that generate handles */
cb8e9e
 struct glfs_object *glfs_h_lookupat (struct glfs *fs,
cb8e9e
-				     struct glfs_object *parent,
cb8e9e
-				     const char *path,
cb8e9e
-                                     struct stat *stat) __THROW
cb8e9e
-        GFAPI_PUBLIC(glfs_h_lookupat, 3.4.0);
cb8e9e
+                                     struct glfs_object *parent,
cb8e9e
+                                     const char *path,
cb8e9e
+                                     struct stat *stat, int follow) __THROW
cb8e9e
+        GFAPI_PUBLIC(glfs_h_lookupat, 3.7.4);
cb8e9e
 
cb8e9e
 struct glfs_object *glfs_h_creat (struct glfs *fs, struct glfs_object *parent,
cb8e9e
 				  const char *path, int flags, mode_t mode,
cb8e9e
diff --git a/tests/basic/gfapi/anonymous_fd_read_write.c b/tests/basic/gfapi/anonymous_fd_read_write.c
cb8e9e
index 281184e..885f0a2 100644
cb8e9e
--- a/tests/basic/gfapi/anonymous_fd_read_write.c
cb8e9e
+++ b/tests/basic/gfapi/anonymous_fd_read_write.c
cb8e9e
@@ -54,7 +54,7 @@ main (int argc, char *argv[])
cb8e9e
         ret = glfs_init (fs);
cb8e9e
         LOG_ERR("glfs_init", ret);
cb8e9e
 
cb8e9e
-        root = glfs_h_lookupat (fs, NULL, "/", &sb);
cb8e9e
+        root = glfs_h_lookupat (fs, NULL, "/", &sb, 0);
cb8e9e
         if (root == NULL) {
cb8e9e
                 fprintf (stderr, "glfs_h_lookupat: error on lookup of / ,%s\n",
cb8e9e
                          strerror (errno));
cb8e9e
diff --git a/xlators/features/snapview-server/src/snapview-server.c b/xlators/features/snapview-server/src/snapview-server.c
cb8e9e
index 3415ce0..5ae9625 100644
cb8e9e
--- a/xlators/features/snapview-server/src/snapview-server.c
cb8e9e
+++ b/xlators/features/snapview-server/src/snapview-server.c
cb8e9e
@@ -293,7 +293,7 @@ svs_lookup_entry (xlator_t *this, loc_t *loc, struct iatt *buf,
cb8e9e
         fs = parent_ctx->fs;
cb8e9e
 
cb8e9e
         object = glfs_h_lookupat (fs, parent_object, loc->name,
cb8e9e
-                                  &statbuf);
cb8e9e
+                                  &statbuf, 0);
cb8e9e
         if (!object) {
cb8e9e
                 gf_log (this->name, GF_LOG_DEBUG, "failed to do lookup and "
cb8e9e
                         "get the handle for entry %s (path: %s)", loc->name,
cb8e9e
-- 
cb8e9e
1.7.1
cb8e9e