diff --git a/src/test/libpmempool_rm/libpmempool_rm.c b/src/test/libpmempool_rm/libpmempool_rm.c
index 551f43993b7744dbfca573ccebb12ae5f8809c4c..e93610541604d428a90d84681b0db54ebfd3e952 100644
--- a/src/test/libpmempool_rm/libpmempool_rm.c
+++ b/src/test/libpmempool_rm/libpmempool_rm.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017-2018, Intel Corporation
+ * Copyright 2017-2019, Intel Corporation
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -42,7 +42,7 @@
 #include <getopt.h>
 #include "unittest.h"
 
-#define FATAL_USAGE(n) UT_FATAL("usage: %s [-f -l -r] path..", (n))
+#define FATAL_USAGE(n) UT_FATAL("usage: %s [-f -l -r -o] path..", (n))
 
 static PMEMobjpool *Pop;
 
diff --git a/src/test/libpmempool_rm_remote/TEST4 b/src/test/libpmempool_rm_remote/TEST4
new file mode 100755
index 0000000000000000000000000000000000000000..392348065561bd3f5eba85d904916f15e72b23e9
--- /dev/null
+++ b/src/test/libpmempool_rm_remote/TEST4
@@ -0,0 +1,79 @@
+#!/usr/bin/env bash
+#
+# Copyright 2019, Intel Corporation
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+#     * Redistributions of source code must retain the above copyright
+#       notice, this list of conditions and the following disclaimer.
+#
+#     * Redistributions in binary form must reproduce the above copyright
+#       notice, this list of conditions and the following disclaimer in
+#       the documentation and/or other materials provided with the
+#       distribution.
+#
+#     * Neither the name of the copyright holder nor the names of its
+#       contributors may be used to endorse or promote products derived
+#       from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+#
+# libpmempool_rm_remote/TEST4 -- test for pmempool_rm with remote replica
+#
+# Remove pool when it is opened
+#
+
+# standard unit test setup
+. ../unittest/unittest.sh
+
+require_test_type medium
+
+require_nodes 2
+
+require_node_libfabric 0 $RPMEM_PROVIDER
+require_node_libfabric 1 $RPMEM_PROVIDER
+
+setup
+
+init_rpmem_on_node 1 0
+
+create_poolset $DIR/pool.set 8M:${NODE_DIR[1]}pool.1:x \
+        m ${NODE_ADDR[0]}:remote.set
+create_poolset $DIR/remote.set 8M:${NODE_DIR[0]}/remote.1:x
+
+copy_files_to_node 0 ${NODE_DIR[0]} $DIR/remote.set
+copy_files_to_node 1 ${NODE_DIR[1]} $DIR/pool.set
+
+rm_files_from_node 0 ${NODE_DIR[0]}remote.1
+rm_files_from_node 1 ${NODE_DIR[1]}pool.1
+expect_normal_exit run_on_node 1 ../pmempool create obj ${NODE_DIR[1]}pool.set
+
+check_files_on_node 1 pool.set pool.1
+check_files_on_node 0 remote.set remote.1
+
+# without force pmempool_rm should fail
+expect_normal_exit run_on_node 1 ./libpmempool_rm$EXESUFFIX -o \
+	${NODE_DIR[1]}pool.set
+check_files_on_node 1 pool.set pool.1
+check_files_on_node 0 remote.set remote.1
+
+# with force pmempool_rm should also fail
+expect_normal_exit run_on_node 1 ./libpmempool_rm$EXESUFFIX -of \
+	${NODE_DIR[1]}pool.set
+check_files_on_node 1 pool.set pool.1
+check_files_on_node 0 remote.set remote.1
+
+pass
diff --git a/src/test/obj_rpmem_heap_interrupt/TEST0 b/src/test/obj_rpmem_heap_interrupt/TEST0
index e31ac127d5f8ec9d9635f974baa2f9bcf4437cd5..b4cad73ad8b504359a9e2f7637ce594db7ad8468 100755
--- a/src/test/obj_rpmem_heap_interrupt/TEST0
+++ b/src/test/obj_rpmem_heap_interrupt/TEST0
@@ -1,6 +1,6 @@
 #!/usr/bin/env bash
 #
-# Copyright 2016-2018, Intel Corporation
+# Copyright 2016-2019, Intel Corporation
 # Copyright (c) 2016, Microsoft Corporation. All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -51,7 +51,8 @@ require_nodes 2
 require_node_libfabric 0 $RPMEM_PROVIDER
 require_node_libfabric 1 $RPMEM_PROVIDER
 
-init_rpmem_on_node 1 0
+PID_FILE=rpmemd.pid
+init_rpmem_on_node 1 0:$PID_FILE
 
 # binary for this test
 EXE=obj_heap_interrupt
@@ -81,8 +82,14 @@ create_holey_file_on_node 0 9M ${NODE_DIR[0]}$TEST_FILE_REMOTE
 
 # execute test
 expect_normal_exit run_on_node 1 ./$EXE$EXESUFFIX ${NODE_DIR[1]}$TEST_SET_LOCAL c 0
+
+# pmempool rm expects flock from the remote parts are released otherwise it will
+# fail to delete them so it has to wait for rpmemd to exit
+expect_abnormal_exit wait_on_node 0 $PID_FILE
 expect_normal_exit run_on_node 1 ../pmempool rm -sf ${NODE_DIR[1]}$TEST_SET_LOCAL
-expect_normal_exit run_on_node 1 ../pmempool create --layout heap_interrupt obj ${NODE_DIR[1]}$TEST_SET_LOCAL
+
+expect_normal_exit run_on_node 1 ../pmempool create --layout heap_interrupt obj \
+	${NODE_DIR[1]}$TEST_SET_LOCAL
 expect_normal_exit run_on_node 1 ./$EXE$EXESUFFIX ${NODE_DIR[1]}$TEST_SET_LOCAL o 0
 
 # download pools and compare them
diff --git a/src/tools/rpmemd/rpmemd_db.c b/src/tools/rpmemd/rpmemd_db.c
index edd5e6401419de39a7d9a6b06a8c6d639173cdd9..ed0fbbc3899f66e4d7630741fd4eae77bc0b3d61 100644
--- a/src/tools/rpmemd/rpmemd_db.c
+++ b/src/tools/rpmemd/rpmemd_db.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-2018, Intel Corporation
+ * Copyright 2016-2019, Intel Corporation
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -383,7 +383,7 @@ rm_poolset_cb(struct part_file *pf, void *arg)
 		return -1;
 	}
 
-	int ret = util_unlink(pf->part->path);
+	int ret = util_unlink_flock(pf->part->path);
 	if (!args->force && ret) {
 		RPMEMD_LOG(ERR, "!unlink -- '%s'", pf->part->path);
 		args->ret = ret;