From 45c2a17ce96d4802ddd2b36a5131b64caa8b1a3c Mon Sep 17 00:00:00 2001 From: Soumya Koduri Date: Fri, 27 Nov 2015 12:09:22 +0530 Subject: Upcall: Read gfid from iatt in case of invalid inode When any file/dir is looked upon for the first time, inode created shall be invalid till it gets linked to the inode table. In such cases, read the gfid from the iatt structure returned as part of such fops for UPCALL processing. This is backport of the below patch - http://review.gluster.org/12773 Change-Id: Ie5eb2f3be18c34cf7ef172e126c9db5ef7a8512b BUG: 1287079 Signed-off-by: Soumya Koduri Reviewed-on: http://review.gluster.org/12773 Reviewed-by: Kaleb KEITHLEY Reviewed-by: Niels de Vos Reviewed-on: http://review.gluster.org/12839 Tested-by: NetBSD Build System Tested-by: Gluster Build System --- api/src/glfs-handleops.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'api/src/glfs-handleops.c') diff --git a/api/src/glfs-handleops.c b/api/src/glfs-handleops.c index 0fe5b35ff11..e8fbae4074e 100644 --- a/api/src/glfs-handleops.c +++ b/api/src/glfs-handleops.c @@ -1288,6 +1288,10 @@ pub_glfs_h_create_from_handle (struct glfs *fs, unsigned char *handle, int len, memcpy (loc.gfid, handle, GFAPI_HANDLE_LENGTH); + /* make sure the gfid received is valid */ + GF_VALIDATE_OR_GOTO ("glfs_h_create_from_handle", + !(gf_uuid_is_null (loc.gfid)), out); + newinode = inode_find (subvol->itable, loc.gfid); if (newinode) { if (!stat) /* No need of lookup */ -- cgit