summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/bugs/bug-821056.t2
-rw-r--r--tests/bugs/bug-913051.t6
-rw-r--r--xlators/storage/posix/src/posix-handle.h4
3 files changed, 8 insertions, 4 deletions
diff --git a/tests/bugs/bug-821056.t b/tests/bugs/bug-821056.t
index db87993ed76..8c002601066 100644
--- a/tests/bugs/bug-821056.t
+++ b/tests/bugs/bug-821056.t
@@ -43,7 +43,7 @@ for i in {1..1024}; do
echo "open sesame" >&5
done
-EXPECT_WITHIN $REOPEN_TIMEOUT "Y" gf_check_file_opened_in_brick $V0 $H0 $B0/${V0}0 $B0/${V0}0/a
+EXPECT_WITHIN $REOPEN_TIMEOUT "Y" gf_check_file_opened_in_brick $V0 $H0 $B0/${V0}0 "$realpath"
#close the fd
exec 5>&-
diff --git a/tests/bugs/bug-913051.t b/tests/bugs/bug-913051.t
index 1673cc6eaf5..69845f7a554 100644
--- a/tests/bugs/bug-913051.t
+++ b/tests/bugs/bug-913051.t
@@ -38,10 +38,12 @@ TEST $CLI volume start $V0 force
EXPECT_WITHIN $CHILD_UP_TIMEOUT "1" afr_child_up_status $V0 0
#check that the files are not opned on brick-0
+TEST stat $M0/dir/a
realpatha=$(gf_get_gfid_backend_file_path $B0/${V0}0 "dir/a")
EXPECT "N" gf_check_file_opened_in_brick $V0 $H0 $B0/${V0}0 "$realpatha"
EXPECT "N" gf_check_file_opened_in_brick $V0 $H0 $B0/${V0}0 $B0/${V0}0/dir/a
+TEST stat $M0/dir/b
realpathb=$(gf_get_gfid_backend_file_path $B0/${V0}0 "dir/b")
EXPECT "N" gf_check_file_opened_in_brick $V0 $H0 $B0/${V0}0 "$realpathb"
EXPECT "N" gf_check_file_opened_in_brick $V0 $H0 $B0/${V0}0 $B0/${V0}0/dir/b
@@ -57,8 +59,8 @@ TEST fd_write $wfd "open sesame"
#trigger readv for attempting open-fd-fix in afr
TEST fd_cat $rfd
-EXPECT_WITHIN $REOPEN_TIMEOUT "Y" gf_check_file_opened_in_brick $V0 $H0 $B0/${V0}0 $B0/${V0}0/dir/a
-EXPECT_WITHIN $REOPEN_TIMEOUT "Y" gf_check_file_opened_in_brick $V0 $H0 $B0/${V0}0 $B0/${V0}0/dir/b
+EXPECT_WITHIN $REOPEN_TIMEOUT "Y" gf_check_file_opened_in_brick $V0 $H0 $B0/${V0}0 "$realpatha"
+EXPECT_WITHIN $REOPEN_TIMEOUT "Y" gf_check_file_opened_in_brick $V0 $H0 $B0/${V0}0 "$realpathb"
TEST fd_close $wfd
TEST fd_close $rfd
diff --git a/xlators/storage/posix/src/posix-handle.h b/xlators/storage/posix/src/posix-handle.h
index 0654bcd5ee0..a30e0296140 100644
--- a/xlators/storage/posix/src/posix-handle.h
+++ b/xlators/storage/posix/src/posix-handle.h
@@ -29,6 +29,8 @@
UUID0_STR) + 1)
#define LOC_HAS_ABSPATH(loc) (loc && (loc->path) && (loc->path[0] == '/'))
+#define LOC_IS_DIR(loc) (loc && (loc->inode) && \
+ (loc->inode->ia_type == IA_IFDIR))
#define MAKE_PGFID_XATTR_KEY(var, prefix, pgfid) do { \
var = alloca (strlen (prefix) + UUID_CANONICAL_FORM_LEN + 1); \
@@ -152,7 +154,7 @@
"null gfid for path %s", (loc)->path); \
break; \
} \
- if (LOC_HAS_ABSPATH (loc)) { \
+ if (LOC_IS_DIR (loc) && LOC_HAS_ABSPATH (loc)) { \
MAKE_REAL_PATH (rpath, this, (loc)->path); \
op_ret = posix_pstat (this, (loc)->gfid, rpath, iatt_p); \
break; \