From 4536f7bdf16f8286d67598eda9a46c029f0c0bf4 Mon Sep 17 00:00:00 2001 From: Poornima G Date: Tue, 8 Nov 2016 10:32:29 +0530 Subject: dht/md-cache: Filter invalidate if the file is made a linkto file Upcall as a part of setattr, sends an invalidation and the invalidation carries the resulting stat value. When a file is converted to linkto files, even then an invalidation is set and as a result the mountpoint shows the sticky bit in the stat of the file. eg: ---------T. 945 root root 0 Nov 8 10:14 hardlink.999 Fix: When dht recieves a notification of sticky bit change, it updates the flag, to indicate md-cache to send the subsequent lookup. Change-Id: Ic2fd7a5b196db0754f9b97072e644e6bf69da606 BUG: 1392713 Signed-off-by: Poornima G Reviewed-on: http://review.gluster.org/15789 Smoke: Gluster Build System NetBSD-regression: NetBSD Build System Reviewed-by: Niels de Vos CentOS-regression: Gluster Build System Reviewed-by: Susant Palai Reviewed-by: Rajesh Joseph --- rpc/xdr/src/glusterfs3.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'rpc/xdr') diff --git a/rpc/xdr/src/glusterfs3.h b/rpc/xdr/src/glusterfs3.h index e95252a73be..b74ab933800 100644 --- a/rpc/xdr/src/glusterfs3.h +++ b/rpc/xdr/src/glusterfs3.h @@ -410,8 +410,16 @@ gf_proto_cache_invalidation_to_upcall (xlator_t *this, (gf_c_req->xdata).xdata_val, (gf_c_req->xdata).xdata_len, ret, ret, out); - if (ret > 0) + if (ret > 0) { ret = -ret; + goto out; + } + + /* If no dict was sent, create an empty dict, so that each xlator + * need not check if empty then create new dict. Will be unref'd by the + * caller */ + if (!gf_c_data->dict) + gf_c_data->dict = dict_new (); out: return ret; } -- cgit