diff options
| author | Pranith Kumar K <pkarampu@redhat.com> | 2015-06-02 16:39:35 +0530 | 
|---|---|---|
| committer | Raghavendra G <rgowdapp@redhat.com> | 2015-08-28 10:26:17 -0700 | 
| commit | e55579bdb1d04cca29f3e87427de5f2a5ab5e9b4 (patch) | |
| tree | e94f93a66fccd2ac5ced8b3408c41d6a3d28b78f /xlators/encryption | |
| parent | dedf2bde88020adbabb80204830878f060fa614c (diff) | |
fd: Do fd_bind on successful open
- fd_unref should decrement fd->inode->fd_count only if it is present in the
inode's fd list.
- successful open/opendir should perform fd_bind.
Change-Id: I81dd04f330e2fee86369a6dc7147af44f3d49169
BUG: 1207735
Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
Reviewed-on: http://review.gluster.org/11044
Reviewed-by: Anoop C S <anoopcs@redhat.com>
Tested-by: NetBSD Build System <jenkins@build.gluster.org>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Raghavendra G <rgowdapp@redhat.com>
Diffstat (limited to 'xlators/encryption')
| -rw-r--r-- | xlators/encryption/crypt/src/crypt.c | 11 | 
1 files changed, 8 insertions, 3 deletions
diff --git a/xlators/encryption/crypt/src/crypt.c b/xlators/encryption/crypt/src/crypt.c index 4edd0aeb940..8c2b43ce51f 100644 --- a/xlators/encryption/crypt/src/crypt.c +++ b/xlators/encryption/crypt/src/crypt.c @@ -1828,7 +1828,9 @@ static int32_t truncate_begin(call_frame_t *frame,  				    op_ret,  				    op_errno, NULL, NULL, NULL);  		return 0; -	} +	} else { +	        fd_bind (fd); +        }  	/*  	 * crypt_truncate() is implemented via crypt_ftruncate(),  	 * so the crypt xlator does STACK_WIND to itself here @@ -3090,7 +3092,7 @@ static int32_t do_linkop(call_frame_t *frame,  		   &lock,  		   NULL);  	return 0; - error:		 + error:  	unwind_fn(frame);  	return 0;  } @@ -3120,11 +3122,14 @@ static int32_t linkop_begin(call_frame_t *frame,  	unwind_fn = linkop_unwind_dispatch(local->fop);  	mop = linkop_mtdop_dispatch(local->fop); -	if (op_ret < 0) +	if (op_ret < 0) {  		/*  		 * verification failed  		 */  		goto error; +        } else { +                fd_bind (fd); +        }  	old_mtd = dict_get(xdata, CRYPTO_FORMAT_PREFIX);  	if (!old_mtd) {  | 
