summaryrefslogtreecommitdiffstats
path: root/api/src/glfs-handleops.c
diff options
context:
space:
mode:
Diffstat (limited to 'api/src/glfs-handleops.c')
-rw-r--r--api/src/glfs-handleops.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/api/src/glfs-handleops.c b/api/src/glfs-handleops.c
index 4cfa5e9c186..a135f77883e 100644
--- a/api/src/glfs-handleops.c
+++ b/api/src/glfs-handleops.c
@@ -683,8 +683,10 @@ out:
inode_unref (inode);
if (ret && glfd) {
- glfs_fd_destroy (glfd);
+ GF_REF_PUT (glfd);
glfd = NULL;
+ } else if (glfd) {
+ glfd->state = GLFD_OPEN;
}
glfs_subvol_done (fs, subvol);
@@ -805,9 +807,11 @@ out:
if (xattr_req)
dict_unref (xattr_req);
- if (glfd) {
- glfs_fd_destroy (glfd);
+ if (ret && glfd) {
+ GF_REF_PUT (glfd);
glfd = NULL;
+ } else if (glfd) {
+ glfd->state = GLFD_OPEN;
}
glfs_subvol_done (fs, subvol);
@@ -1148,9 +1152,10 @@ out:
inode_unref (inode);
if (ret && glfd) {
- glfs_fd_destroy (glfd);
+ GF_REF_PUT (glfd);
glfd = NULL;
- } else {
+ } else if (glfd) {
+ glfd->state = GLFD_OPEN;
fd_bind (glfd->fd);
glfs_fd_bind (glfd);
}