diff options
-rw-r--r-- | tests/bugs/bug-821056.t | 2 | ||||
-rw-r--r-- | tests/bugs/bug-913051.t | 6 | ||||
-rw-r--r-- | xlators/storage/posix/src/posix-handle.h | 4 |
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 0f596b6069e..fec1447982b 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; \ |