#include <afs/audit.h>
#include <afs/partition.h>
#include <afs/dir.h>
+#include <afs/afsutil.h>
#include "viced_prototypes.h"
#include "viced.h"
#include "host.h"
int eventlog = 0, rxlog = 0;
FILE *debugFile;
-char *logFile = NULL;
+static struct logOptions logopts;
pthread_mutex_t fsync_glock_mutex;
pthread_cond_t fsync_cond;
*/
struct afs_PerfStats afs_perfstats;
-extern int LogLevel;
extern int Statistics;
int busyonrst = 1;
return islocal;
}
-#ifndef AFS_NT40_ENV
+#if !defined(AFS_NT40_ENV) && !defined(AFS_DARWIN160_ENV)
int
viced_syscall(afs_uint32 a3, afs_uint32 a4, void *a5)
{
#endif
/* close the log so it can be removed */
- ReOpenLog(AFSDIR_SERVER_FILELOG_FILEPATH); /* don't trunc, just append */
+ ReOpenLog(); /* don't trunc, just append */
ViceLog(2, ("Cleaning up timed out callbacks\n"));
if (CleanupTimedOutCallBacks())
ViceLog(5, ("Timed out callbacks deleted\n"));
ViceLog(0, ("Vice was last started at %s\n", tbuffer));
#ifdef AFS_DEMAND_ATTACH_FS
- if (LogLevel >= 125) {
+ if (GetLogLevel() >= 125) {
stats_flags = VOL_STATS_PER_CHAIN2;
- } else if (LogLevel >= 25) {
+ } else if (GetLogLevel() >= 25) {
stats_flags = VOL_STATS_PER_CHAIN;
}
VPrintExtendedCacheStats(stats_flags);
OPT_logfile,
OPT_mrafslogs,
OPT_threads,
+#ifdef HAVE_SYSLOG
OPT_syslog,
+#endif
OPT_peer,
OPT_process,
OPT_nojumbo,
OPT_udpsize,
OPT_dotted,
OPT_realm,
- OPT_sync
+ OPT_sync,
+ OPT_transarc_logs
};
static int
cmd_AddParmAtOffset(opts, OPT_vhandle_initial_cachesize,
"-vhandle-initial-cachesize", CMD_SINGLE,
CMD_OPTIONAL, "# fds reserved for cache IO");
+ cmd_AddParmAtOffset(opts, OPT_vhashsize, "-vhashsize",
+ CMD_SINGLE, CMD_OPTIONAL,
+ "log(2) of # of volume hash buckets");
#ifdef AFS_DEMAND_ATTACH_FS
/* dafs options */
"disable state restore during startup");
cmd_AddParmAtOffset(opts, OPT_fs_state_verify, "-fs-state-verify",
CMD_SINGLE, CMD_OPTIONAL, "none|save|restore|both");
- cmd_AddParmAtOffset(opts, OPT_vhashsize, "-vhashsize",
- CMD_SINGLE, CMD_OPTIONAL,
- "log(2) of # of volume hash buckets");
cmd_AddParmAtOffset(opts, OPT_vlrudisable, "-vlrudisable",
CMD_FLAG, CMD_OPTIONAL, "disable VLRU functionality");
cmd_AddParmAtOffset(opts, OPT_vlruthresh, "-vlruthresh",
"debug level");
cmd_AddParmAtOffset(opts, OPT_mrafslogs, "-mrafslogs", CMD_FLAG,
CMD_OPTIONAL, "enable MRAFS style logging");
+ cmd_AddParmAtOffset(opts, OPT_transarc_logs, "-transarc-logs", CMD_FLAG,
+ CMD_OPTIONAL, "enable Transarc style logging");
cmd_AddParmAtOffset(opts, OPT_threads, "-p", CMD_SINGLE, CMD_OPTIONAL,
"number of threads");
-#if !defined(AFS_NT40_ENV)
+#ifdef HAVE_SYSLOG
cmd_AddParmAtOffset(opts, OPT_syslog, "-syslog", CMD_SINGLE_OR_FLAG,
CMD_OPTIONAL, "log to syslog");
#endif
return -1;
}
}
+ if (cmd_OptionAsInt(opts, OPT_vhashsize, &optval) == 0) {
+ if (VSetVolHashSize(optval)) {
+ fprintf(stderr, "specified -vhashsize (%d) is invalid or out "
+ "of range\n", optval);
+ return -1;
+ }
+ }
#ifdef AFS_DEMAND_ATTACH_FS
if (cmd_OptionPresent(opts, OPT_fs_state_dont_save))
return -1;
}
}
- if (cmd_OptionAsInt(opts, OPT_vhashsize, &optval) == 0) {
- if (VSetVolHashSize(optval)) {
- fprintf(stderr, "specified -vhashsize (%d) is invalid or out "
- "of range\n", optval);
- return -1;
- }
- }
if (cmd_OptionPresent(opts, OPT_vlrudisable))
VLRU_SetOptions(VLRU_SET_ENABLED, 0);
if (cmd_OptionAsInt(opts, OPT_vlruthresh, &optval) == 0)
optstring = NULL;
}
- cmd_OptionAsInt(opts, OPT_debug, &LogLevel);
- cmd_OptionAsFlag(opts, OPT_mrafslogs, &mrafsStyleLogs);
-
if (cmd_OptionAsInt(opts, OPT_threads, &lwps) == 0) {
lwps_max = max_fileserver_thread() - FILESERVER_HELPER_THREADS;
if (lwps > lwps_max)
lwps = 6;
}
-#ifndef AFS_NT40_ENV
+ /* Logging options. */
+#ifdef HAVE_SYSLOG
if (cmd_OptionPresent(opts, OPT_syslog)) {
- serverLogSyslog = 1;
- cmd_OptionAsInt(opts, OPT_syslog, &serverLogSyslogFacility);
- }
+ if (cmd_OptionPresent(opts, OPT_logfile)) {
+ fprintf(stderr, "Invalid options: -syslog and -logfile are exclusive.\n");
+ return -1;
+ }
+ if (cmd_OptionPresent(opts, OPT_transarc_logs)) {
+ fprintf(stderr, "Invalid options: -syslog and -transarc-logs are exclusive.\n");
+ return -1;
+ }
+ if (cmd_OptionPresent(opts, OPT_mrafslogs)) {
+ fprintf(stderr, "Invalid options: -syslog and -mrafslogs are exclusive.\n");
+ return -1;
+ }
+
+ logopts.lopt_dest = logDest_syslog;
+ logopts.lopt_facility = LOG_DAEMON;
+ logopts.lopt_tag = "fileserver";
+ cmd_OptionAsInt(opts, OPT_syslog, &logopts.lopt_facility);
+ } else
#endif
+ {
+ logopts.lopt_dest = logDest_file;
+
+ if (cmd_OptionPresent(opts, OPT_transarc_logs)) {
+ if (cmd_OptionPresent(opts, OPT_mrafslogs)) {
+ fprintf(stderr,
+ "Invalid options: -transarc-logs and -mrafslogs are exclusive.\n");
+ return -1;
+ }
+ logopts.lopt_rotateOnOpen = 1;
+ logopts.lopt_rotateStyle = logRotate_old;
+ } else if (cmd_OptionPresent(opts, OPT_mrafslogs)) {
+ logopts.lopt_rotateOnOpen = 1;
+ logopts.lopt_rotateOnReset = 1;
+ logopts.lopt_rotateStyle = logRotate_timestamp;
+ }
+
+ if (cmd_OptionPresent(opts, OPT_logfile))
+ cmd_OptionAsString(opts, OPT_logfile, (char**)&logopts.lopt_filename);
+ else
+ logopts.lopt_filename = AFSDIR_SERVER_FILELOG_FILEPATH;
+
+ }
+ cmd_OptionAsInt(opts, OPT_debug, &logopts.lopt_logLevel);
if (cmd_OptionPresent(opts, OPT_peer))
rx_enablePeerRPCStats();
busy_threshold = 3 * rxpackets / 2;
}
- cmd_OptionAsString(opts, OPT_logfile, &logFile);
cmd_OptionAsString(opts, OPT_config, &FS_configPath);
CheckParms();
FS_configPath = strdup(AFSDIR_SERVER_ETC_DIRPATH);
- logFile = strdup(AFSDIR_SERVER_FILELOG_FILEPATH);
+ memset(&logopts, 0, sizeof(logopts));
if (ParseArgs(argc, argv)) {
exit(-1);
/* initialize audit user check */
osi_audit_set_user_check(confDir, fs_IsLocalRealmMatch);
- /* Open FileLog on stdout, stderr, fd 1 and fd2 (for perror), sigh. */
-#ifndef AFS_NT40_ENV
- serverLogSyslogTag = "fileserver";
-#endif
- OpenLog(logFile);
+ OpenLog(&logopts);
LogCommandLine(argc, argv, "starting", "", "File server", FSLog);
if (afsconf_GetLatestKey(confDir, NULL, NULL) == 0) {
acl_Initialize(ACL_VERSION);
/* initialize RX support */
-#ifndef AFS_NT40_ENV
+#if !defined(AFS_NT40_ENV) && !defined(AFS_DARWIN160_ENV)
rxi_syscallp = viced_syscall;
#endif
rx_extraPackets = rxpackets;