Print this page
NEX-1974 Support for more than 16 groups with AUTH_SYS
Reviewed by: Gordon Ross <gordon.ross@nexenta.com>
Reviewed by: Josef 'Jeff' Sipek <josef.sipek@nexenta.com>
re #13613 rb4516 Tunables needs volatile keyword

@@ -64,10 +64,11 @@
 #include <sys/fdbuffer.h>
 #include <sys/cyclic_impl.h>
 #include <sys/disp.h>
 #include <sys/tuneable.h>
 #include <sys/systeminfo.h>
+#include <rpc/auth_sys.h>
 
 #include <sys/vmem.h>
 #include <sys/clock.h>
 #include <sys/clock_impl.h>
 #include <sys/serializer.h>

@@ -157,11 +158,11 @@
 #define HIRES_HZ_DEFAULT        1000
 
 int hz = HZ_DEFAULT;
 int hires_hz = HIRES_HZ_DEFAULT;
 
-int hires_tick = 0;
+volatile int hires_tick = 0;
 int cpu_decay_factor = 10;      /* this is no longer tied to clock */
 int max_hres_adj;       /* maximum adjustment of hrtime per tick */
 int tick_per_msec;      /* clock ticks per millisecond (zero if hz < 1000) */
 
 /*

@@ -265,17 +266,17 @@
         cu_init,
         callout_mp_init,
         0
 };
 
-int maxusers;           /* kitchen-sink knob for dynamic configuration */
+volatile int maxusers;  /* kitchen-sink knob for dynamic configuration */
 
 /*
  * pidmax -- highest pid value assigned by the system
  * Settable in /etc/system
  */
-int pidmax = DEFAULT_MAXPID;
+volatile int pidmax = DEFAULT_MAXPID;
 
 /*
  * jump_pid - if set, this value is where pid numbers should start
  * after the first few system pids (0-3) are used.  If 0, pids are
  * chosen in the usual way. This variable can be used to quickly

@@ -287,35 +288,35 @@
 /*
  * autoup -- used in struct var for dynamic config of the age a delayed-write
  * buffer must be in seconds before bdflush will write it out.
  */
 #define DEFAULT_AUTOUP  30
-int autoup = DEFAULT_AUTOUP;
+volatile int autoup = DEFAULT_AUTOUP;
 
 /*
  * bufhwm -- tuneable variable for struct var for v_bufhwm.
  * high water mark for buffer cache mem usage in units of K bytes.
  *
  * bufhwm_pct -- ditto, but given in % of physmem.
  */
-int bufhwm = 0;
-int bufhwm_pct = 0;
+volatile int bufhwm = 0;
+volatile int bufhwm_pct = 0;
 
 /*
  * Process table.
  */
 int maxpid;
-int max_nprocs;         /* set in param_init() */
-int maxuprc;            /* set in param_init() */
-int reserved_procs;
+volatile int max_nprocs;        /* set in param_init() */
+volatile int maxuprc;           /* set in param_init() */
+volatile int reserved_procs;
 int nthread = 1;
 
 /*
  * UFS tunables
  */
-int ufs_ninode;         /* declared here due to backwards compatibility */
-int ndquot;             /* declared here due to backwards compatibility */
+volatile int ufs_ninode; /* declared here due to backwards compatibility */
+volatile int ndquot;     /* declared here due to backwards compatibility */
 
 /*
  * Exec switch table. This is used by the generic exec module
  * to switch out to the desired executable type, based on the
  * magic number. The currently supported types are ELF, a.out

@@ -408,29 +409,29 @@
  * simple via /etc/system
  */
 #define RLIM_FD_CUR 0x10000
 #define RLIM_FD_MAX 0x10000
 
-uint_t rlim_fd_cur = RLIM_FD_CUR;
-uint_t rlim_fd_max = RLIM_FD_MAX;
+volatile uint_t rlim_fd_cur = RLIM_FD_CUR;
+volatile uint_t rlim_fd_max = RLIM_FD_MAX;
 
 /*
  * (Default resource limits were formerly declared here, but are now provided by
  * the more general resource controls framework.)
  */
 
 /*
  * STREAMS tunables
  */
-int     nstrpush = 9;           /* maximum # of modules/drivers on a stream */
-ssize_t strctlsz = 1024;        /* maximum size of user-generated M_PROTO */
-ssize_t strmsgsz = 0x10000;     /* maximum size of user-generated M_DATA */
+volatile int    nstrpush = 9;   /* maximum # of modules/drivers on a stream */
+volatile ssize_t strctlsz = 1024;   /* maximum size of user-generated M_PROTO */
+volatile ssize_t strmsgsz = 0x10000; /* maximum size of user-generated M_DATA */
                                 /* for `strmsgsz', zero means unlimited */
 /*
  * Filesystem tunables
  */
-int     rstchown = 1;           /* POSIX_CHOWN_RESTRICTED is enabled */
+volatile int    rstchown = 1;   /* POSIX_CHOWN_RESTRICTED is enabled */
 int     ngroups_max = NGROUPS_MAX_DEFAULT;
 
 /*
  * generic scheduling stuff
  *

@@ -484,17 +485,17 @@
 
 /*
  * Rate at which fsflush is run, in seconds.
  */
 #define DEFAULT_TUNE_T_FSFLUSHR 1
-int tune_t_fsflushr = DEFAULT_TUNE_T_FSFLUSHR;
+volatile int tune_t_fsflushr = DEFAULT_TUNE_T_FSFLUSHR;
 
 /*
  * The minimum available resident (not swappable) memory to maintain
  * in order to avoid deadlock.  In pages.
  */
-int tune_t_minarmem = 25;
+volatile int tune_t_minarmem = 25;
 
 /*
  * The minimum available swappable memory to maintain in order to avoid
  * deadlock.  In pages.
  */

@@ -505,11 +506,11 @@
 /*
  * Number of currently available pages that cannot be 'locked'
  * This is set in init_pages_pp_maximum, and must be initialized
  * to zero here to detect an override in /etc/system
  */
-pgcnt_t pages_pp_maximum = 0;
+volatile pgcnt_t pages_pp_maximum = 0;
 
 int boothowto;                  /* boot flags passed to kernel */
 struct var v;                   /* System Configuration Information */
 
 /*