diff options
| author | Pranith Kumar K <pkarampu@redhat.com> | 2016-04-23 05:30:08 +0530 | 
|---|---|---|
| committer | Pranith Kumar Karampuri <pkarampu@redhat.com> | 2016-04-25 19:30:20 -0700 | 
| commit | 32b03257c16aa44dd98377a84208c8a5fdb9b2ef (patch) | |
| tree | 68432ea49a8c7872cc65498ef2441ec9bdc6d6d3 | |
| parent | 0ce1a038ab54a52a0c295e830abe035d4113ba83 (diff) | |
cluster/afr: Fix inode-leak in data self-heal
Thanks to Olia-Kremmyda for finding the bug on github review,
https://github.com/gluster/glusterfs/commit/b8106d1127f034ffa88b5dd322c23a10e023b9b6
 >Change-Id: Ib8640ed0c331a635971d5d12052f0959c24f76a2
 >BUG: 1329773
 >Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
 >Reviewed-on: http://review.gluster.org/14052
 >Smoke: Gluster Build System <jenkins@build.gluster.com>
 >NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
 >CentOS-regression: Gluster Build System <jenkins@build.gluster.com>
 >Reviewed-by: Ravishankar N <ravishankar@redhat.com>
 >Reviewed-by: Krutika Dhananjay <kdhananj@redhat.com>
BUG: 1329779
Change-Id: I3d77f0b445fdedf2c582ea88f8d89e1da525638f
Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
Reviewed-on: http://review.gluster.org/14053
Smoke: Gluster Build System <jenkins@build.gluster.com>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Krutika Dhananjay <kdhananj@redhat.com>
| -rw-r--r-- | tests/basic/afr/heal-info.t | 10 | ||||
| -rw-r--r-- | xlators/cluster/afr/src/afr-self-heal-data.c | 2 | 
2 files changed, 6 insertions, 6 deletions
diff --git a/tests/basic/afr/heal-info.t b/tests/basic/afr/heal-info.t index b4da50b3ae9..46d65007c88 100644 --- a/tests/basic/afr/heal-info.t +++ b/tests/basic/afr/heal-info.t @@ -8,14 +8,14 @@  cleanup;  function heal_info_to_file { -        while [ -f $M0/a.txt ]; do +        while [ -f $M0/b.txt ]; do                  $CLI volume heal $V0 info | grep -i number | grep -v 0 >> $1          done  }  function write_and_del_file {          dd of=$M0/a.txt if=/dev/zero bs=1024k count=100 -        rm -f $M0/a.txt +        rm -f $M0/b.txt  }  TEST glusterd @@ -24,13 +24,13 @@ TEST $CLI volume create $V0 replica 2 $H0:$B0/brick{0,1}  TEST $CLI volume set $V0 locking-scheme granular  TEST $CLI volume start $V0  TEST $GFS --volfile-id=$V0 --volfile-server=$H0 $M0; -TEST touch $M0/a.txt +TEST touch $M0/a.txt $M0/b.txt  write_and_del_file &  touch $B0/f1 $B0/f2  heal_info_to_file $B0/f1 &  heal_info_to_file $B0/f2 &  wait -EXPECT "^0$" echo $(wc -l $B0/f1 | awk '{print $1}') -EXPECT "^0$" echo $(wc -l $B0/f2 | awk '{print $1}') +EXPECT "^$" cat $B0/f1 +EXPECT "^$" cat $B0/f2  cleanup; diff --git a/xlators/cluster/afr/src/afr-self-heal-data.c b/xlators/cluster/afr/src/afr-self-heal-data.c index 67bb8e6d3c9..72f6b2ad945 100644 --- a/xlators/cluster/afr/src/afr-self-heal-data.c +++ b/xlators/cluster/afr/src/afr-self-heal-data.c @@ -814,7 +814,6 @@ afr_selfheal_data_open (xlator_t *this, inode_t *inode, fd_t **fd)  	ret = syncop_open (this, &loc, O_RDWR|O_LARGEFILE, fd_tmp, NULL, NULL);  	if (ret < 0) {  		fd_unref (fd_tmp); -                loc_wipe (&loc);                  goto out;  	} else {  		fd_bind (fd_tmp); @@ -822,6 +821,7 @@ afr_selfheal_data_open (xlator_t *this, inode_t *inode, fd_t **fd)          *fd = fd_tmp;  out: +        loc_wipe (&loc);  	return ret;  }  | 
