/usr/include/glusterfs/gidcache.h is in glusterfs-common 3.13.2-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | /*
Copyright (c) 2008-2012 Red Hat, Inc. <http://www.redhat.com>
This file is part of GlusterFS.
This file is licensed to you under your choice of the GNU Lesser
General Public License, version 3 or any later version (LGPLv3 or
later), or the GNU General Public License, version 2 (GPLv2), in all
cases as published by the Free Software Foundation.
*/
#ifndef __GIDCACHE_H__
#define __GIDCACHE_H__
#include "glusterfs.h"
#include "locking.h"
/*
* TBD: make the cache size tunable
*
* The current size represents a pretty trivial amount of memory, and should
* provide good hit rates even for quite busy systems. If we ever want to
* support really large cache sizes, we'll need to do dynamic allocation
* instead of just defining an array within a private structure. It doesn't make
* a whole lot of sense to change the associativity, because it won't improve
* hit rates all that much and will increase the maintenance cost as we have
* to scan more entries with every lookup/update.
*/
#define AUX_GID_CACHE_ASSOC 4
#define AUX_GID_CACHE_BUCKETS 256
#define AUX_GID_CACHE_SIZE (AUX_GID_CACHE_ASSOC * AUX_GID_CACHE_BUCKETS)
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;
} gid_list_t;
typedef struct {
gf_lock_t gc_lock;
uint32_t gc_max_age;
unsigned int gc_nbuckets;
gid_list_t gc_cache[AUX_GID_CACHE_SIZE];
} gid_cache_t;
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, 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 *);
#endif /* __GIDCACHE_H__ */
|