gfapi: Fix few fd ref leaks
From the code inspection, have observed that there are fd ref leaks for few fd-based gfapi fops. 'glfs_resolve_fd' returns a fd (either existing or migrated) with an extra ref taken. This needs to be unref'ed at the end of the operation. Change-Id: Id63394e3e7deafb0c8b06444f2ae847248b126db BUG: 1379285 Signed-off-by: Soumya Koduri <skoduri@redhat.com> Reviewed-on: http://review.gluster.org/15573 NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> CentOS-regression: Gluster Build System <jenkins@build.gluster.org> Reviewed-by: Niels de Vos <ndevos@redhat.com> Smoke: Gluster Build System <jenkins@build.gluster.org>
This commit is contained in:
parent
4004e667ed
commit
d27cffab67
@ -601,6 +601,9 @@ glfs_seek (struct glfs_fd *glfd, off_t offset, int whence)
|
||||
glfd->offset = off;
|
||||
|
||||
done:
|
||||
if (fd)
|
||||
fd_unref (fd);
|
||||
|
||||
glfs_subvol_done (glfd->fs, subvol);
|
||||
|
||||
out:
|
||||
@ -931,6 +934,9 @@ pub_glfs_preadv_async (struct glfs_fd *glfd, const struct iovec *iovec,
|
||||
offset, flags, NULL);
|
||||
|
||||
out:
|
||||
if (fd)
|
||||
fd_unref (fd);
|
||||
|
||||
if (ret) {
|
||||
if (glfd)
|
||||
GF_REF_PUT (glfd);
|
||||
@ -1246,6 +1252,9 @@ pub_glfs_pwritev_async (struct glfs_fd *glfd, const struct iovec *iovec,
|
||||
|
||||
ret = 0;
|
||||
out:
|
||||
if (fd)
|
||||
fd_unref (fd);
|
||||
|
||||
if (ret) {
|
||||
if (glfd)
|
||||
GF_REF_PUT (glfd);
|
||||
@ -1430,6 +1439,9 @@ glfs_fsync_async_common (struct glfs_fd *glfd, glfs_io_cbk fn, void *data,
|
||||
subvol->fops->fsync, fd, dataonly, NULL);
|
||||
|
||||
out:
|
||||
if (fd)
|
||||
fd_unref (fd);
|
||||
|
||||
if (ret) {
|
||||
if (glfd)
|
||||
GF_REF_PUT (glfd);
|
||||
@ -1681,6 +1693,9 @@ pub_glfs_ftruncate_async (struct glfs_fd *glfd, off_t offset, glfs_io_cbk fn,
|
||||
ret = 0;
|
||||
|
||||
out:
|
||||
if (fd)
|
||||
fd_unref (fd);
|
||||
|
||||
if (ret) {
|
||||
if (glfd)
|
||||
GF_REF_PUT (glfd);
|
||||
@ -2537,6 +2552,9 @@ pub_glfs_discard_async (struct glfs_fd *glfd, off_t offset, size_t len,
|
||||
|
||||
ret = 0;
|
||||
out:
|
||||
if (fd)
|
||||
fd_unref (fd);
|
||||
|
||||
if (ret) {
|
||||
if (glfd)
|
||||
GF_REF_PUT (glfd);
|
||||
@ -2622,6 +2640,9 @@ pub_glfs_zerofill_async (struct glfs_fd *glfd, off_t offset, off_t len,
|
||||
subvol->fops->zerofill, fd, offset, len, NULL);
|
||||
ret = 0;
|
||||
out:
|
||||
if (fd)
|
||||
fd_unref (fd);
|
||||
|
||||
if (ret) {
|
||||
if (glfd)
|
||||
GF_REF_PUT (glfd);
|
||||
|
Loading…
x
Reference in New Issue
Block a user