summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnand Avati <avati@redhat.com>2013-08-09 11:12:29 -0700
committerVijay Bellur <vbellur@redhat.com>2013-08-13 08:59:52 -0700
commita78f7dcddbc3d2048a184b7f4f45a63586eb5580 (patch)
tree17197bb6793c27190f19ec9542b46de12db26f22
parent528cbf0ef1b8cbabbab5141df69353d7cf9f59f5 (diff)
libgfapi : Fix for hardlink creation on SMB mount
Previously the inode of the hard link was left uninitialised hence glfs_loc_link() used to fail with invalid parameter.Since inode is same for both the files in hard link creation, updated the inode field of hard link to be same as that of the original file. Original-author: susant palai <spalai@redhat.com> Change-Id: Ifd6439867d982524a7b48bf3f6add6e844b3c4c1 BUG: 996063 Signed-off-by: Anand Avati <avati@redhat.com> Reviewed-on: http://review.gluster.org/5576 Tested-by: susant palai <spalai@redhat.com> Reviewed-by: Raghavendra Talur <rtalur@redhat.com> Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Vijay Bellur <vbellur@redhat.com>
-rw-r--r--api/src/glfs-fops.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/api/src/glfs-fops.c b/api/src/glfs-fops.c
index 605913ae517..8ee9a20772d 100644
--- a/api/src/glfs-fops.c
+++ b/api/src/glfs-fops.c
@@ -1617,6 +1617,15 @@ retrynew:
goto out;
}
+ /* Filling the inode of the hard link to be same as that of the
+ original file
+ */
+ if (newloc.inode) {
+ inode_unref (newloc.inode);
+ newloc.inode = NULL;
+ }
+ newloc.inode = inode_ref (oldloc.inode);
+
ret = syncop_link (subvol, &oldloc, &newloc);
if (ret == -1 && errno == ESTALE) {