diff options
| author | Anand Avati <avati@redhat.com> | 2013-11-20 15:11:13 -0800 | 
|---|---|---|
| committer | Anand Avati <avati@redhat.com> | 2013-11-21 13:11:18 -0800 | 
| commit | fee08b2cbf8c118d33dea745e0ae3033b36969da (patch) | |
| tree | e7f42b21457ba1fe63ad994559dba0d799fb4168 /libglusterfs/src/gidcache.h | |
| parent | 544dee895a43ec9bb98fc8ace3d124d44bb617f2 (diff) | |
fuse: revalidate group id cache on uid/gid change detection
- Remember the uid and gid of the pid at the time of caching
  the group id list.
- Next time when referring to the cache confirm that uid and gid
  of that pid has not changed since. If it has, treat it like
  a timeout/cache miss.
- Solves group id caching issue caused when Samba runs on gluster
  FUSE mount and changes the uid/gid on a per syscall basis.
Change-Id: I3382b037ff0b6d5eaaa36d9c898232543475aeda
BUG: 1032438
Signed-off-by: Anand Avati <avati@redhat.com>
Reviewed-on: http://review.gluster.org/6320
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Amar Tumballi <amarts@redhat.com>
Diffstat (limited to 'libglusterfs/src/gidcache.h')
| -rw-r--r-- | libglusterfs/src/gidcache.h | 4 | 
1 files changed, 3 insertions, 1 deletions
diff --git a/libglusterfs/src/gidcache.h b/libglusterfs/src/gidcache.h index 9379f8e8b01..886721e719f 100644 --- a/libglusterfs/src/gidcache.h +++ b/libglusterfs/src/gidcache.h @@ -32,6 +32,8 @@  typedef struct {  	uint64_t	gl_id; +	uint64_t        gl_uid; +	uint64_t        gl_gid;  	int		gl_count;  	gid_t		*gl_list;  	time_t		gl_deadline; @@ -46,7 +48,7 @@ typedef struct {  int gid_cache_init(gid_cache_t *, uint32_t);  int gid_cache_reconf(gid_cache_t *, uint32_t); -const gid_list_t *gid_cache_lookup(gid_cache_t *, uint64_t); +const gid_list_t *gid_cache_lookup(gid_cache_t *, uint64_t, uint64_t, uint64_t);  void gid_cache_release(gid_cache_t *, const gid_list_t *);  int gid_cache_add(gid_cache_t *, gid_list_t *);  | 
