diff options
Diffstat (limited to 'api/src/glfs-handleops.c')
-rw-r--r-- | api/src/glfs-handleops.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/api/src/glfs-handleops.c b/api/src/glfs-handleops.c index cd0f6b3e950..a230578b615 100644 --- a/api/src/glfs-handleops.c +++ b/api/src/glfs-handleops.c @@ -686,8 +686,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); @@ -808,9 +810,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); @@ -1151,9 +1155,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); } |