$(DOCD) $(SRC)\$@
$(CD) $(SRC)\$@
$(NTMAKE)
- $(CD) ..\..
+ $(CD) ..\..
libacl: ptserver
@echo ***** $@
$(NTMAKE)
$(CD) ..\..
-tbutc: tvolser
+dviced: tvolser
+ @echo ***** $@
+ $(DOCD) $(SRC)\$@
+ $(CD) $(SRC)\$@
+ $(NTMAKE)
+ $(CD) ..\..
+
+dvolser: dviced
+ @echo ***** $@
+ $(DOCD) $(SRC)\$@
+ $(CD) $(SRC)\$@
+ $(NTMAKE)
+ $(CD) ..\..
+
+tbutc: dvolser
@echo ***** $@
$(DOCD) $(SRC)\$@
$(CD) $(SRC)\$@
! IF (!EXIST($(OJT)\ptserver))
$(MKDIR) $(OJT)\ptserver
! ENDIF
+! IF (!EXIST($(OJT)\tptserver))
+ $(MKDIR) $(OJT)\ptserver
+! ENDIF
! IF (!EXIST($(OJT)\rx))
$(MKDIR) $(OJT)\rx
! ENDIF
! IF (!EXIST($(OJT)\tvolser))
$(MKDIR) $(OJT)\tvolser
! ENDIF
+! IF (!EXIST($(OJT)\dviced))
+ $(MKDIR) $(OJT)\dviced
+! ENDIF
+! IF (!EXIST($(OJT)\dvolser))
+ $(MKDIR) $(OJT)\dvolser
+! ENDIF
! IF (!EXIST($(OJT)\ubik))
$(MKDIR) $(OJT)\ubik
! ENDIF
+! IF (!EXIST($(OJT)\tubik))
+ $(MKDIR) $(OJT)\tubik
+! ENDIF
! IF (!EXIST($(OJT)\update))
$(MKDIR) $(OJT)\update
! ENDIF
#if (_MSC_VER < 1400)
typedef int errno_t;
#endif
+
+/* Windows only supports BSD variants */
+#define S_IRUSR _S_IREAD
+#define S_IWUSR _S_IWRITE
!INCLUDE ..\config\NTMakefile.$(SYS_NAME)
!INCLUDE ..\config\NTMakefile.version
-SRC_DIR = ..\viced
-
############################################################################
-# Build the fileserver
+# Build the dafs-fileserver
EXEFILE = $(DESTDIR)\root.server\usr\afs\bin\dafileserver.exe
VICED = ..\viced
-TVICED = .
+TVICED = ..\tviced
LWP = ..\lwp
LIBACL = ..\libacl
DIR = ..\dir
VICEDOBJS = $(OUT)\viced.obj $(OUT)\afsfileprocs.obj $(OUT)\host.obj $(OUT)\physio.obj $(OUT)\callback.obj
-TVICEDRES = $(OUT)\dafileserver.res
-
TVICEDOBJS = $(OUT)\serialize_state.obj
+DAFS_VICEDRES = $(OUT)\dafileserver.res
+
LWPOBJS = $(OUT)\lock.obj $(OUT)\fasttime.obj $(OUT)\threadname.obj
LIBACLOBJS = $(OUT)\aclprocs.obj $(OUT)\netprocs.obj
FSINTOBJS = $(OUT)\afsaux.obj $(OUT)\afscbint.cs.obj $(OUT)\afsint.ss.obj $(OUT)\afsint.xdr.obj
-EXEOBJS = $(VICEDOBJS) $(TVICEDRES) $(LWPOBJS) $(LIBACLOBJS) \
- $(DIROBJS) $(FSINTOBJS) $(RXOBJS) #$(TVICEDOBJS)
+EXEOBJS = $(VICEDOBJS) $(TVICEDOBJS) $(DAFS_VICEDRES) $(LWPOBJS) $(LIBACLOBJS) \
+ $(DIROBJS) $(FSINTOBJS) $(RXOBJS)
noversion: install
-all: dafileserver
+all: $(EXEFILE)
$(RXOBJS): $(RX)\$$(@B).c
$(C2OBJ) -I$(RX) $**
$(VICEDOBJS): $(VICED)\$$(@B).c
$(C2OBJ) -I$(VICED) $**
-$(TVICEDRES): $(VICED)\dafileserver.rc AFS_component_version_number.h
- $(RC) /fo $(TVICEDRES) $(TVICED)\dafileserver.rc
+$(DAFS_VICEDRES): dafileserver.rc AFS_component_version_number.h
+ $(RC) /fo $(DAFS_VICEDRES) dafileserver.rc
$(TVICEDOBJS): $(TVICED)\$$(@B).c
$(C2OBJ) -I$(TVICED) $**
$(DESTDIR)\lib\afs\afsprocmgmt.lib \
$(DESTDIR)\lib\afs\afseventlog.lib \
$(DESTDIR)\lib\afs\mtafsutil.lib \
- $(DESTDIR)\lib\afs\mtafsvol.lib \
+ $(DESTDIR)\lib\afs\daafsvol.lib \
$(DESTDIR)\lib\afs\mtafsvldb.lib \
$(DESTDIR)\lib\afspthread.lib
mkdir:
clean::
- $(DEL) $(TVICEDRES)
+ -$(DEL) $(EXEFILE)
+ -$(DEL) $(DAFS_VICEDRES)
\ No newline at end of file
# to check that you haven't inadvertently ignored any tracked files.
/davolserver
+/volerr.c
+/volerr.et
+/volint.h
+/volser.h
+/volser.p.h
!INCLUDE ..\config\NTMakefile.$(SYS_NAME)
!INCLUDE ..\config\NTMakefile.version
-SRC_DIR = ..\volser
-
VOLSER = ..\volser
-TVOLSER = .
+DVOLSER = .
VLSERVER = ..\vlserver
LWP = ..\lwp
LIBACL = ..\libacl
volint.h
############################################################################
-# Build afstvolser.lib
+# Build afsdavolser.lib
-LIBFILE = $(DESTDIR)\lib\afs\afstvolser.lib
+LIBFILE = $(DESTDIR)\lib\afs\afsdvolser.lib
LIBOBJS = $(OUT)\volint.cs.obj \
- $(OUT)\vsprocs.obj \
- $(OUT)\vsutils.obj \
- $(OUT)\lockprocs.obj \
$(OUT)\volint.xdr.obj \
$(OUT)\volerr.obj \
$(OUT)\volint.ss.obj \
$(OUT)\AFS_component_version_number.obj
-$(LIBOBJS): $(VOLSER)\$$(@B).c
- $(C2OBJ) -I$(TVOLSER) -I$(UTIL) $**
+LIBOBJS2 = $(OUT)\vsprocs.obj \
+ $(OUT)\vsutils.obj \
+ $(OUT)\lockprocs.obj
+
+# $(LIBOBJS): $(DVOLSER)\$$(@B).c
+# $(C2OBJ) -I$(VOLSER) -I$(UTIL) $**
+
+$(LIBOBJS2): $(VOLSER)\$$(@B).c
+ $(C2OBJ) -I$(VOLSER) -I$(UTIL) $**
-$(LIBFILE): $(LIBOBJS)
+$(LIBFILE): $(LIBOBJS) $(LIBOBJS2)
$(LIBARCH)
VOLSERVER_EXELIBS = \
$(DESTDIR)\lib\afsauthent.lib \
$(DESTDIR)\lib\afsrpc.lib \
- $(DESTDIR)\lib\afs\afstvolser.lib \
- $(DESTDIR)\lib\afs\mtafsvol.lib \
+ $(LIBFILE) \
+ $(DESTDIR)\lib\afs\daafsvol.lib \
$(DESTDIR)\lib\afs\afscmd.lib \
$(DESTDIR)\lib\afs\afsaudit.lib \
$(DESTDIR)\lib/afs/afscom_err.lib \
$(DESTDIR)\lib\afs\mtafsutil.lib \
$(DESTDIR)\lib\afspthread.lib
-$(VOLSERVER_EXEFILE): $(VOLSERVER_EXEOBJS) $(VOLSERVER_EXELIBS)
+$(VOLSERVER_EXEFILE): $(VOLSERVER_EXEOBJS) $(VOLSERVER_EXELIBS)
$(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib
$(_VC_MANIFEST_EMBED_EXE)
$(EXEPREP)
# Local clean target; augments predefined clean target
clean::
- $(DEL) volerr.c volser.h volerr.et volser.p.h $(INCFILES)
- $(DEL) volint.cs.c volint.h volint.ss.c volint.xdr.c
+ - -$(DEL) volerr.c volser.h volerr.et volser.p.h $(INCFILES)
+ -$(DEL) volint.cs.c volint.h volint.ss.c volint.xdr.c
+ -$(DEL) $(OUT)\davolserver.res
+ -$(DEL) $(VOLSERVER_EXEFILE)
mkdir:
/* Define VERSIONINFO resource */
-#define AFS_VERINFO_FILE_DESCRIPTION "AFS Volume Server (Threaded)"
-#define AFS_VERINFO_NAME "volserver"
-#define AFS_VERINFO_FILENAME "volserver.exe"
+#define AFS_VERINFO_FILE_DESCRIPTION "AFS Volume Server (Demand Attach)"
+#define AFS_VERINFO_NAME "davolserver"
+#define AFS_VERINFO_FILENAME "davolserver.exe"
#include "AFS_component_version_number.h"
#include "..\config\NTVersioninfo.rc"
* have been written so that it will be very simple to go
* back to standard I/O for just those poorly written platforms
*/
-#ifndef _WIN32
-#define FS_STATE_USE_MMAP
+#ifndef AFS_NT40_ENV
+#define FS_STATE_USE_MMAP 1
#endif
#ifdef FS_STATE_USE_MMAP
#define FS_STATE_INIT_FILESIZE (8 * 1024 * 1024) /* truncate to 8MB initially */
+#ifndef AFS_NT40_ENV
#include <sys/mman.h>
#endif
+#endif
static int fs_stateCreateDump(struct fs_dump_state * state);
static int fs_stateLoadDump(struct fs_dump_state * state);
extern afsUUID FS_HostUUID;
extern char cml_version_number[];
+int
+fs_stateFileOpen(struct fs_dump_state *state)
+{
+#ifdef AFS_NT40_ENV
+ return(state->fd != -1);
+#else
+ return(state->fd >= 0);
+#endif
+}
+
+
/*
* demand attach fs
* save all fileserver state
state.fn));
}
- done:
- if (state.fd >= 0)
+ done:
+ if (fs_stateFileOpen(&state))
fs_stateCloseDump(&state);
fs_stateFree(&state);
H_UNLOCK;
fs_stateIncCursor(state, iov[i].iov_len);
}
#else
+#ifndef AFS_NT40_ENV
if (writev(state->fd, iov, niov) != len) {
ViceLog(0, ("fs_stateWriteV: write failed\n"));
ret = 1;
goto done;
}
+#else /* AFS_NT40_ENV */
+ for (i=0; i < niov; i++) {
+ if (write(state->fd, iov[i].iov_base, iov[i].iov_len) != iov[i].iov_len) {
+ ViceLog(0, ("fs_stateWriteV: write failed\n"));
+ ret = 1;
+ goto done;
+ }
+ }
+#endif /* AFS_NT40_ENV */
#endif
done:
fs_stateIncCursor(state, iov[i].iov_len);
}
#else
+#ifndef AFS_NT40_ENV
if (readv(state->fd, iov, niov) != len) {
ViceLog(0, ("fs_stateReadV: read failed\n"));
ret = 1;
goto done;
}
+#else
+ for (i=0; i < niov; i++) {
+ if (read(state->fd, iov[i].iov_base, iov[i].iov_len) != iov[i].iov_len) {
+ ViceLog(0, ("fs_stateReadV: read failed\n"));
+ ret = 1;
+ goto done;
+ }
+ }
+#endif /* AFS_NT40_ENV */
#endif
done:
int ret = 0;
afs_foff_t inc;
-#ifdef FS_STATE_USE_MMAP
fs_stateUnmapFile(state);
-#endif
inc = ((min_add / FS_STATE_INIT_FILESIZE)+1) * FS_STATE_INIT_FILESIZE;
state->file_len += inc;
goto done;
}
-#ifdef FS_STATE_USE_MMAP
if (fs_stateMapFile(state)) {
ViceLog(0, ("fs_stateResizeFile: remapping memory mapped file failed\n"));
ret = 1;
goto done;
}
-#endif
done:
return ret;
return ret;
}
-#endif
-#ifdef FS_STATE_USE_MMAP
static int
fs_stateMapFile(struct fs_dump_state * state)
{
done:
return ret;
}
-#endif /* FS_STATE_USE_MMAP */
-#ifdef FS_STATE_USE_MMAP
int
fs_stateSync(struct fs_dump_state * state)
{
if (fsync(state->fd) == -1)
ret = 1;
- done:
return ret;
}
#endif /* !FS_STATE_USE_MMAP */
/* 1024 byte header structure */
struct fs_state_header {
struct disk_version_stamp stamp; /* version stamp */
- afs_uint32 timestamp; /* timestamp of save */
+ time_t timestamp; /* timestamp of save */
afs_uint32 sys_name; /* sys name id for this machine */
afsUUID server_uuid; /* server's UUID */
byte valid; /* whether header contents are valid */
} cb_map;
};
-
/* prototypes */
/* serialize_state.c */
+extern int fs_stateFileOpen(struct fs_dump_state *state);
extern int fs_stateWrite(struct fs_dump_state * state,
void * buf, size_t len);
extern int fs_stateRead(struct fs_dump_state * state,
#define PTHREAD_RWLOCK_INITIALIZER {0x2DA8B3B4, {0}}
#endif
+#ifndef AFS_NT40_ENV
struct fs_state fs_state =
{ FS_MODE_NORMAL,
0,
PTHREAD_COND_INITIALIZER,
PTHREAD_RWLOCK_INITIALIZER
};
+#else /* AFS_NT40_ENV */
+struct fs_state fs_state;
+
+static int fs_stateInit(void)
+{
+ fs_state.mode = FS_MODE_NORMAL;
+ fs_state.FiveMinuteLWP_tranquil = 0;
+ fs_state.HostCheckLWP_tranquil = 0;
+ fs_state.FsyncCheckLWP_tranquil = 0;
+ fs_state.salvsync_fatal_error = 0;
+
+ fs_state.options.fs_state_save = 1;
+ fs_state.options.fs_state_restore = 1;
+ fs_state.options.fs_state_verify_before_save = 1;
+ fs_state.options.fs_state_verify_after_restore = 1;
+
+ assert(pthread_cond_init(&fs_state.worker_done_cv, NULL) == 0);
+ assert(pthread_rwlock_init(&fs_state.state_lock, NULL) == 0);
+}
+#endif /* AFS_NT40_ENV */
#endif /* AFS_DEMAND_ATTACH_FS */
/*
extern struct fs_state fs_state;
/* this lock is defined to be directly above FS_LOCK in the locking hierarchy */
+#ifdef AFS_NT40_ENV
+#define FS_STATE_INIT fs_stateInit()
+#else
#define FS_STATE_INIT assert(pthread_rwlock_init(&fs_state.state_lock, NULL) == 0)
+#endif
#define FS_STATE_RDLOCK assert(pthread_rwlock_rdlock(&fs_state.state_lock) == 0)
#define FS_STATE_WRLOCK assert(pthread_rwlock_wrlock(&fs_state.state_lock) == 0)
#define FS_STATE_UNLOCK assert(pthread_rwlock_unlock(&fs_state.state_lock) == 0)
MT_LIBFILE = $(DESTDIR)\lib\afs\mtafsvol.lib
+DAFS_LIBFILE = $(DESTDIR)\lib\afs\daafsvol.lib
+
LIBOBJS =\
$(OUT)\common.obj \
$(OUT)\clone.obj \
$(OUT)\volume.obj \
$(OUT)\vutil.obj \
$(OUT)\ihandle.obj \
- $(OUT)\AFS_component_version_number.obj
+ $(OUT)\AFS_component_version_number.obj
MT_LIBOBJS =\
$(OUT)\common.obj \
$(OUT)\volume_mt.obj \
$(OUT)\vutil_mt.obj \
$(OUT)\ihandle_mt.obj \
- $(OUT)\AFS_component_version_number.obj
+ $(OUT)\AFS_component_version_number.obj
$(OUT)\clone_mt.obj:clone.c
$(C2OBJ) $** -DAFS_PTHREAD_ENV
$(MT_LIBFILE): $(MT_LIBOBJS)
$(LIBARCH)
+DAFS_LIBOBJS =\
+ $(OUT)\common.obj \
+ $(OUT)\clone_dafs.obj \
+ $(OUT)\fssync-client_dafs.obj \
+ $(OUT)\fssync-server_dafs.obj \
+ $(OUT)\daemon_com_dafs.obj \
+ $(OUT)\ntops.obj \
+ $(OUT)\nuke_dafs.obj \
+ $(OUT)\partition_dafs.obj \
+ $(OUT)\purge.obj \
+ $(OUT)\vnode_dafs.obj \
+ $(OUT)\volume_dafs.obj \
+ $(OUT)\vutil_dafs.obj \
+ $(OUT)\ihandle_dafs.obj \
+ $(OUT)\vg_cache.obj \
+ $(OUT)\vg_scan.obj \
+ $(OUT)\AFS_component_version_number.obj
+
+$(OUT)\clone_dafs.obj:clone.c
+ $(C2OBJ) $** -DAFS_PTHREAD_ENV -DAFS_DEMAND_ATTACH_FS
+
+$(OUT)\daemon_com_dafs.obj:daemon_com.c
+ $(C2OBJ) $** -DAFS_PTHREAD_ENV -DAFS_DEMAND_ATTACH_FS
+
+$(OUT)\fssync-client_dafs.obj:fssync-client.c
+ $(C2OBJ) $** -DAFS_PTHREAD_ENV -DAFS_DEMAND_ATTACH_FS
+
+$(OUT)\fssync-server_dafs.obj:fssync-server.c
+ $(C2OBJ) $** -DAFS_PTHREAD_ENV -DAFS_DEMAND_ATTACH_FS
+
+$(OUT)\ihandle_dafs.obj:ihandle.c
+ $(C2OBJ) $** -DAFS_PTHREAD_ENV -DAFS_DEMAND_ATTACH_FS
+
+$(OUT)\nuke_dafs.obj:nuke.c
+ $(C2OBJ) $** -DAFS_PTHREAD_ENV -DAFS_DEMAND_ATTACH_FS
+
+$(OUT)\partition_dafs.obj:partition.c
+ $(C2OBJ) $** -DAFS_PTHREAD_ENV -DAFS_DEMAND_ATTACH_FS
+
+$(OUT)\vnode_dafs.obj:vnode.c
+ $(C2OBJ) $** -DAFS_PTHREAD_ENV -DAFS_DEMAND_ATTACH_FS
+
+$(OUT)\volume_dafs.obj:volume.c
+ $(C2OBJ) $** -DAFS_PTHREAD_ENV -DAFS_DEMAND_ATTACH_FS
+
+$(OUT)\vutil_dafs.obj:vutil.c
+ $(C2OBJ) $** -DAFS_PTHREAD_ENV -DAFS_DEMAND_ATTACH_FS
+
+$(OUT)\vg_cache.obj:vg_cache.c
+ $(C2OBJ) $** -DAFS_PTHREAD_ENV -DAFS_DEMAND_ATTACH_FS
+
+$(OUT)\vg_scan.obj:vg_scan.c
+ $(C2OBJ) $** -DAFS_PTHREAD_ENV -DAFS_DEMAND_ATTACH_FS
+
+$(DAFS_LIBFILE): $(DAFS_LIBOBJS)
+ $(LIBARCH)
+
############################################################################
# External libraries
############################################################################
# Install targets
-install: $(INCFILES) $(LIBFILE) $(MT_LIBFILE) $(SALVAGER) $(VOLINFO)
+install: $(INCFILES) $(LIBFILE) $(MT_LIBFILE) $(DAFS_LIBFILE) $(SALVAGER) $(VOLINFO)
mkdir:
#include <dirent.h>
#include <afs/assert.h>
#include <string.h>
+#ifdef AFS_NT40_ENV
+#include <io.h>
+#else
#include <sys/file.h>
#include <sys/param.h>
-#include <lock.h>
#if defined(AFS_SUN5_ENV) || defined(AFS_HPUX_ENV)
#include <unistd.h>
#endif
+#endif /* AFS_NT40_ENV */
+#include <lock.h>
#include <afs/afsutil.h>
#include <lwp.h>
#include "nfs.h"
#include <dirent.h>
#include <afs/assert.h>
#include <string.h>
+#ifdef AFS_NT40_ENV
+#include <io.h>
+#else
#include <sys/file.h>
#include <sys/param.h>
-#include <lock.h>
#if defined(AFS_SUN5_ENV) || defined(AFS_HPUX_ENV)
#include <unistd.h>
#endif
+#endif /* AFS_NT40_ENV */
+#include <lock.h>
#include <afs/afsutil.h>
#include <lwp.h>
#include "nfs.h"