Index: openafs/src/NTMakefile
diff -c openafs/src/NTMakefile:1.27.2.9 openafs/src/NTMakefile:1.27.2.10
*** openafs/src/NTMakefile:1.27.2.9 Sat Jun 28 19:42:54 2008
--- openafs/src/NTMakefile Tue Jul 22 11:02:56 2008
***************
*** 47,60 ****
$(NTMAKE)
$(CD) ..\..
! man-pages: config
! echo ***** $@
! $(DOCD) $(DOC)\man-pages
! $(CD) $(DOC)\man-pages
! $(NTMAKE)
! $(CD) ..\..
!
! procmgmt_headers: man-pages
echo ***** $@
$(DOCD) $(SRC)\procmgmt
$(CD) $(SRC)\procmgmt
--- 47,53 ----
$(NTMAKE)
$(CD) ..\..
! procmgmt_headers: config
echo ***** $@
$(DOCD) $(SRC)\procmgmt
$(CD) $(SRC)\procmgmt
***************
*** 660,673 ****
$(NTMAKE)
$(CD) ..\..\..\..
! NSIS: loopback
echo ***** Making NSIS Installer
$(DOCD) $(SRC)\WINNT\install\$@
$(CD) $(SRC)\WINNT\install\$@
$(NTMAKE)
$(CD) ..\..\..\..
! wix: loopback
echo ***** Making Wix MSI Installer
$(DOCD) $(SRC)\WINNT\install\$@
$(CD) $(SRC)\WINNT\install\$@
--- 653,673 ----
$(NTMAKE)
$(CD) ..\..\..\..
! man-pages:
! echo ***** $@
! $(DOCD) $(DOC)\man-pages
! $(CD) $(DOC)\man-pages
! $(NTMAKE)
! $(CD) ..\..
!
! NSIS: loopback man-pages
echo ***** Making NSIS Installer
$(DOCD) $(SRC)\WINNT\install\$@
$(CD) $(SRC)\WINNT\install\$@
$(NTMAKE)
$(CD) ..\..\..\..
! wix: loopback man-pages
echo ***** Making Wix MSI Installer
$(DOCD) $(SRC)\WINNT\install\$@
$(CD) $(SRC)\WINNT\install\$@
Index: openafs/src/ntbuild.bat
diff -c openafs/src/ntbuild.bat:1.18.4.2 openafs/src/ntbuild.bat:1.18.4.3
*** openafs/src/ntbuild.bat:1.18.4.2 Fri May 9 11:10:10 2008
--- openafs/src/ntbuild.bat Fri Jul 25 16:27:24 2008
***************
*** 23,31 ****
REM Choose one of "i386_w2k", "amd64_w2k", or "i64_w2k"
SET SYS_NAME=i386_w2k
! REM Specify the targeted version of Windows and IE: 0x400 for Win9x/NT4
! REM and above; 0x500 for Windows 2000 and above
! SET _WIN32_IE=0x400
REM ########################################################################
REM Location of base folder where source lies, build directory
--- 23,33 ----
REM Choose one of "i386_w2k", "amd64_w2k", or "i64_w2k"
SET SYS_NAME=i386_w2k
! REM Specify the targeted version of Windows and IE:
! REM 0x500 for Windows 2000 and above
! REM 0x502 for Windows XP 64 and above
! SET APPVER=0x500
! SET _WIN32_IE=0x500
REM ########################################################################
REM Location of base folder where source lies, build directory
***************
*** 38,58 ****
REM "1200" for VC6
REM "1300" for VC7 (.NET)
REM "1310" for .NET 2003
! REM "1400" for VC8
set AFSVER_CL=1400
- REM Location of Microsoft Visual C++ development folder (8.3 short name)
- set MSVCDIR=c:\progra~1\micros~2\vc98
-
- REM Location of Microsoft Platform SDK (8.3 short name)
- set MSSDKDIR=c:\progra~1\micros~4
-
- REM Location of WDK/DDK (8.3 short name)
- set NTDDKDIR=c:\progra~1\micros~5
-
- REM Location of Microsoft IDN Normalization SDK
- set MSIDNNLS=C:\progra~1\MI5913~1
-
REM ########################################################################
REM NTMakefile optional definitions:
REM
--- 40,48 ----
REM "1200" for VC6
REM "1300" for VC7 (.NET)
REM "1310" for .NET 2003
! REM "1400" for VC8 (VS2005)
set AFSVER_CL=1400
REM ########################################################################
REM NTMakefile optional definitions:
REM
***************
*** 69,74 ****
--- 59,71 ----
set BISON_HAIRY=c:\bin\bison.hairy
REM ########################################################################
+ REM Code Signing Definitions for signtool.exe
+
+ REM SET CODESIGN_DESC=OpenAFS for Windows
+ REM SET CODESIGN_TIMESTAMP=
+ REM SET CODESIGN_URL=
+
+ REM ########################################################################
REM Accept build type as an argument; default to checked.
if "%1"=="" goto checked
***************
*** 83,107 ****
:checked
set AFSBLD_TYPE=CHECKED
set AFSDEV_CRTDEBUG=1
! goto ifs_arg
:free
set AFSBLD_TYPE=FREE
set AFSDEV_CRTDEBUG=0
- goto ifs_arg
-
- :ifs_arg
-
- set AFSIFS=
- if "%2"=="ifs" goto is_ifs
- if "%2"=="IFS" goto is_ifs
-
goto args_done
- :is_ifs
-
- set AFSIFS=TRUE
-
:args_done
REM #######################################################################
--- 80,92 ----
:checked
set AFSBLD_TYPE=CHECKED
set AFSDEV_CRTDEBUG=1
! goto args_done
:free
set AFSBLD_TYPE=FREE
set AFSDEV_CRTDEBUG=0
goto args_done
:args_done
REM #######################################################################
***************
*** 113,124 ****
set AFSDEV_BUILDTYPE=%AFSBLD_TYPE%
set AFSDEV_INCLUDE=%MSSDKDIR%\include;%MSVCDIR%\include;%MSIDNNLS%\include
IF "%AFSVER_CL%" == "1400" set AFSDEV_INCLUDE=%AFSDEV_INCLUDE%;%MSVCDIR%\atlmfc\include
IF "%AFSVER_CL%" == "1310" set AFSDEV_INCLUDE=%AFSDEV_INCLUDE%;%MSVCDIR%\atlmfc\include
IF "%AFSVER_CL%" == "1300" set AFSDEV_INCLUDE=%AFSDEV_INCLUDE%;%MSVCDIR%\atlmfc\include
IF "%AFSVER_CL%" == "1200" set AFSDEV_INCLUDE=%AFSDEV_INCLUDE%;%MSVCDIR%\atl\include;%MSVCDIR%\mfc\include
! set AFSDEV_INCLUDE=%AFSDEV_INCLUDE%;%NTDDKDIR%\include;%W9XDDKDIR%\include
set AFSDEV_LIB=%MSSDKDIR%\lib;%MSVCDIR%\lib
IF "%AFSVER_CL%" == "1400" set AFSDEV_LIB=%AFSDEV_LIB%;%MSVCDIR%\atlmfc\lib
--- 98,121 ----
set AFSDEV_BUILDTYPE=%AFSBLD_TYPE%
+ REM Location of Microsoft Visual C++ development folder (8.3 short name)
+ set MSVCDIR=c:\progra~1\MID05A~1\vc
+
+ REM Location of Microsoft Platform SDK (8.3 short name)
+ set MSSDKDIR=c:\progra~1\MIC977~1
+
+ REM Location of npapi.h (from DDK or Platform SDK samples - 8.3 short name)
+ set NTDDKDIR=C:\WINDDK\6000
+
+ REM Location of Microsoft IDN Normalization SDK
+ set MSIDNNLS=C:\progra~1\MI5913~1
+
set AFSDEV_INCLUDE=%MSSDKDIR%\include;%MSVCDIR%\include;%MSIDNNLS%\include
IF "%AFSVER_CL%" == "1400" set AFSDEV_INCLUDE=%AFSDEV_INCLUDE%;%MSVCDIR%\atlmfc\include
IF "%AFSVER_CL%" == "1310" set AFSDEV_INCLUDE=%AFSDEV_INCLUDE%;%MSVCDIR%\atlmfc\include
IF "%AFSVER_CL%" == "1300" set AFSDEV_INCLUDE=%AFSDEV_INCLUDE%;%MSVCDIR%\atlmfc\include
IF "%AFSVER_CL%" == "1200" set AFSDEV_INCLUDE=%AFSDEV_INCLUDE%;%MSVCDIR%\atl\include;%MSVCDIR%\mfc\include
! set AFSDEV_INCLUDE=%AFSDEV_INCLUDE%;%NTDDKDIR%\INC\DDK;%NTDDKDIR%\INC\API;
set AFSDEV_LIB=%MSSDKDIR%\lib;%MSVCDIR%\lib
IF "%AFSVER_CL%" == "1400" set AFSDEV_LIB=%AFSDEV_LIB%;%MSVCDIR%\atlmfc\lib
***************
*** 127,133 ****
IF "%AFSVER_CL%" == "1200" set AFSDEV_LIB=%AFSDEV_LIB%;%MSVCDIR%\mfc\lib
set AFSDEV_BIN=%MSSDKDIR%\bin;%MSVCDIR%\bin
-
goto end
:usage
--- 124,129 ----
Index: openafs/src/WINNT/afsd/cm.h
diff -c openafs/src/WINNT/afsd/cm.h:1.17.2.14 openafs/src/WINNT/afsd/cm.h:1.17.2.15
*** openafs/src/WINNT/afsd/cm.h:1.17.2.14 Mon Apr 14 18:44:03 2008
--- openafs/src/WINNT/afsd/cm.h Mon Jul 28 19:05:32 2008
***************
*** 10,18 ****
--- 10,25 ----
#ifndef __CM_H_ENV__
#define __CM_H_ENV__ 1
+ /* We use pthreads in the cache manager (not LWP) */
#ifndef AFS_PTHREAD_ENV
#define AFS_PTHREAD_ENV 1
#endif
+
+ /* Support largefiles by default */
+ #ifndef AFS_LARGEFILES
+ #define AFS_LARGEFILES 1
+ #endif
+
#include
#include
#include
Index: openafs/src/WINNT/afsd/cm_btree.c
diff -c openafs/src/WINNT/afsd/cm_btree.c:1.1.2.20 openafs/src/WINNT/afsd/cm_btree.c:1.1.2.21
*** openafs/src/WINNT/afsd/cm_btree.c:1.1.2.20 Mon Jul 14 09:01:31 2008
--- openafs/src/WINNT/afsd/cm_btree.c Wed Jul 23 17:20:45 2008
***************
*** 2336,2346 ****
long
cm_BPlusDirNextEnumEntry(cm_direnum_t *enump, cm_direnum_entry_t **entrypp)
{
! if (enump == NULL || entrypp == NULL || enump->next > enump->count) {
if (entrypp)
*entrypp = NULL;
osi_Log0(afsd_logp, "cm_BPlusDirNextEnumEntry invalid input");
! return CM_ERROR_INVAL; \
}
*entrypp = &enump->entry[enump->next++];
--- 2336,2346 ----
long
cm_BPlusDirNextEnumEntry(cm_direnum_t *enump, cm_direnum_entry_t **entrypp)
{
! if (enump == NULL || entrypp == NULL || enump->next >= enump->count) {
if (entrypp)
*entrypp = NULL;
osi_Log0(afsd_logp, "cm_BPlusDirNextEnumEntry invalid input");
! return CM_ERROR_INVAL;
}
*entrypp = &enump->entry[enump->next++];
Index: openafs/src/WINNT/afsd/cm_buf.c
diff -c openafs/src/WINNT/afsd/cm_buf.c:1.31.2.41 openafs/src/WINNT/afsd/cm_buf.c:1.31.2.43
*** openafs/src/WINNT/afsd/cm_buf.c:1.31.2.41 Thu Jun 26 10:38:23 2008
--- openafs/src/WINNT/afsd/cm_buf.c Mon Jul 28 22:55:41 2008
***************
*** 714,720 ****
* because we aren't going to be able to write this data to the file
* server.
*/
! if (code == CM_ERROR_NOSUCHFILE || code == CM_ERROR_BADFD || code == CM_ERROR_NOACCESS){
bp->flags &= ~CM_BUF_DIRTY;
bp->flags |= CM_BUF_ERROR;
bp->dirty_offset = 0;
--- 714,722 ----
* because we aren't going to be able to write this data to the file
* server.
*/
! if (code == CM_ERROR_NOSUCHFILE || code == CM_ERROR_BADFD || code == CM_ERROR_NOACCESS ||
! code == CM_ERROR_QUOTA || code == CM_ERROR_SPACE || code == CM_ERROR_TOOBIG ||
! code == CM_ERROR_READONLY || code == CM_ERROR_NOSUCHPATH){
bp->flags &= ~CM_BUF_DIRTY;
bp->flags |= CM_BUF_ERROR;
bp->dirty_offset = 0;
***************
*** 722,727 ****
--- 724,730 ----
bp->error = code;
bp->dataVersion = CM_BUF_VERSION_BAD; /* bad */
bp->dirtyCounter++;
+ break;
}
#ifdef DISKCACHE95
***************
*** 1282,1288 ****
*
* The buffer must be locked before calling this routine.
*/
! void buf_SetDirty(cm_buf_t *bp, afs_uint32 offset, afs_uint32 length)
{
osi_assertx(bp->magic == CM_BUF_MAGIC, "invalid cm_buf_t magic");
osi_assertx(bp->refCount > 0, "cm_buf_t refcount 0");
--- 1285,1291 ----
*
* The buffer must be locked before calling this routine.
*/
! void buf_SetDirty(cm_buf_t *bp, afs_uint32 offset, afs_uint32 length, cm_user_t *userp)
{
osi_assertx(bp->magic == CM_BUF_MAGIC, "invalid cm_buf_t magic");
osi_assertx(bp->refCount > 0, "cm_buf_t refcount 0");
***************
*** 1341,1346 ****
--- 1344,1357 ----
}
lock_ReleaseWrite(&buf_globalLock);
}
+
+ /* and record the last writer */
+ if (bp->userp != userp) {
+ cm_HoldUser(userp);
+ if (bp->userp)
+ cm_ReleaseUser(bp->userp);
+ bp->userp = userp;
+ }
}
/* clean all buffers, reset log pointers and invalidate all buffers.
Index: openafs/src/WINNT/afsd/cm_buf.h
diff -c openafs/src/WINNT/afsd/cm_buf.h:1.12.4.16 openafs/src/WINNT/afsd/cm_buf.h:1.12.4.17
*** openafs/src/WINNT/afsd/cm_buf.h:1.12.4.16 Thu Jun 26 12:38:29 2008
--- openafs/src/WINNT/afsd/cm_buf.h Thu Jul 24 15:33:53 2008
***************
*** 166,172 ****
extern void buf_CleanWait(cm_scache_t *, cm_buf_t *, afs_uint32 locked);
! extern void buf_SetDirty(cm_buf_t *, afs_uint32 offset, afs_uint32 length);
extern long buf_CleanAndReset(void);
--- 166,172 ----
extern void buf_CleanWait(cm_scache_t *, cm_buf_t *, afs_uint32 locked);
! extern void buf_SetDirty(cm_buf_t *, afs_uint32 offset, afs_uint32 length, cm_user_t *);
extern long buf_CleanAndReset(void);
Index: openafs/src/WINNT/afsd/cm_callback.c
diff -c openafs/src/WINNT/afsd/cm_callback.c:1.41.4.45 openafs/src/WINNT/afsd/cm_callback.c:1.41.4.46
*** openafs/src/WINNT/afsd/cm_callback.c:1.41.4.45 Thu Jun 26 12:38:29 2008
--- openafs/src/WINNT/afsd/cm_callback.c Mon Jul 21 12:19:53 2008
***************
*** 1671,1677 ****
cm_callbackRequest_t cbr;
int mustCall;
cm_fid_t sfid;
! struct rx_connection * callp = NULL;
int syncop_done = 0;
osi_Log4(afsd_logp, "GetCallback scp 0x%p cell %d vol %d flags %lX",
--- 1671,1677 ----
cm_callbackRequest_t cbr;
int mustCall;
cm_fid_t sfid;
! struct rx_connection * rxconnp = NULL;
int syncop_done = 0;
osi_Log4(afsd_logp, "GetCallback scp 0x%p cell %d vol %d flags %lX",
***************
*** 1745,1754 ****
if (code)
continue;
! callp = cm_GetRxConn(connp);
! code = RXAFS_FetchStatus(callp, &tfid,
&afsStatus, &callback, &volSync);
! rx_PutConnection(callp);
} while (cm_Analyze(connp, userp, reqp, &sfid, &volSync, NULL,
&cbr, code));
--- 1745,1754 ----
if (code)
continue;
! rxconnp = cm_GetRxConn(connp);
! code = RXAFS_FetchStatus(rxconnp, &tfid,
&afsStatus, &callback, &volSync);
! rx_PutConnection(rxconnp);
} while (cm_Analyze(connp, userp, reqp, &sfid, &volSync, NULL,
&cbr, code));
Index: openafs/src/WINNT/afsd/cm_conn.c
diff -c openafs/src/WINNT/afsd/cm_conn.c:1.49.2.45 openafs/src/WINNT/afsd/cm_conn.c:1.49.2.46
*** openafs/src/WINNT/afsd/cm_conn.c:1.49.2.45 Wed Jul 16 00:44:27 2008
--- openafs/src/WINNT/afsd/cm_conn.c Mon Jul 21 16:56:30 2008
***************
*** 829,836 ****
hardTimeLeft = HardDeadtimeout;
lock_ObtainMutex(&(*connpp)->mx);
! rx_SetConnDeadTime((*connpp)->callp, timeLeft);
! rx_SetConnHardDeadTime((*connpp)->callp, (u_short) hardTimeLeft);
lock_ReleaseMutex(&(*connpp)->mx);
#endif
return 0;
--- 829,836 ----
hardTimeLeft = HardDeadtimeout;
lock_ObtainMutex(&(*connpp)->mx);
! rx_SetConnDeadTime((*connpp)->rxconnp, timeLeft);
! rx_SetConnHardDeadTime((*connpp)->rxconnp, (u_short) hardTimeLeft);
lock_ReleaseMutex(&(*connpp)->mx);
#endif
return 0;
***************
*** 880,886 ****
cm_PutServer(tcp->serverp);
cm_ReleaseUser(userp);
*lcpp = tcp->nextp;
! rx_DestroyConnection(tcp->callp);
lock_FinalizeMutex(&tcp->mx);
free(tcp);
}
--- 880,886 ----
cm_PutServer(tcp->serverp);
cm_ReleaseUser(userp);
*lcpp = tcp->nextp;
! rx_DestroyConnection(tcp->rxconnp);
lock_FinalizeMutex(&tcp->mx);
free(tcp);
}
***************
*** 926,939 ****
secObjp = rxnull_NewClientSecurityObject();
}
osi_assertx(secObjp != NULL, "null rx_securityClass");
! tcp->callp = rx_NewConnection(serverp->addr.sin_addr.s_addr,
port,
serviceID,
secObjp,
secIndex);
! rx_SetConnDeadTime(tcp->callp, ConnDeadtimeout);
! rx_SetConnHardDeadTime(tcp->callp, HardDeadtimeout);
! rx_SetConnIdleDeadTime(tcp->callp, IdleDeadtimeout);
tcp->ucgen = ucellp->gen;
if (secObjp)
rxs_Release(secObjp); /* Decrement the initial refCount */
--- 926,939 ----
secObjp = rxnull_NewClientSecurityObject();
}
osi_assertx(secObjp != NULL, "null rx_securityClass");
! tcp->rxconnp = rx_NewConnection(serverp->addr.sin_addr.s_addr,
port,
serviceID,
secObjp,
secIndex);
! rx_SetConnDeadTime(tcp->rxconnp, ConnDeadtimeout);
! rx_SetConnHardDeadTime(tcp->rxconnp, HardDeadtimeout);
! rx_SetConnIdleDeadTime(tcp->rxconnp, IdleDeadtimeout);
tcp->ucgen = ucellp->gen;
if (secObjp)
rxs_Release(secObjp); /* Decrement the initial refCount */
***************
*** 998,1004 ****
else
osi_Log0(afsd_logp, "cm_ConnByServer replace connection due to crypt change");
tcp->flags &= ~CM_CONN_FLAG_FORCE_NEW;
! rx_DestroyConnection(tcp->callp);
cm_NewRXConnection(tcp, ucellp, serverp);
}
lock_ReleaseMutex(&tcp->mx);
--- 998,1004 ----
else
osi_Log0(afsd_logp, "cm_ConnByServer replace connection due to crypt change");
tcp->flags &= ~CM_CONN_FLAG_FORCE_NEW;
! rx_DestroyConnection(tcp->rxconnp);
cm_NewRXConnection(tcp, ucellp, serverp);
}
lock_ReleaseMutex(&tcp->mx);
***************
*** 1099,1110 ****
extern struct rx_connection *
cm_GetRxConn(cm_conn_t *connp)
{
! struct rx_connection * rxconn;
lock_ObtainMutex(&connp->mx);
! rxconn = connp->callp;
! rx_GetConnection(rxconn);
lock_ReleaseMutex(&connp->mx);
! return rxconn;
}
void cm_ForceNewConnections(cm_server_t *serverp)
--- 1099,1110 ----
extern struct rx_connection *
cm_GetRxConn(cm_conn_t *connp)
{
! struct rx_connection * rxconnp;
lock_ObtainMutex(&connp->mx);
! rxconnp = connp->rxconnp;
! rx_GetConnection(rxconnp);
lock_ReleaseMutex(&connp->mx);
! return rxconnp;
}
void cm_ForceNewConnections(cm_server_t *serverp)
Index: openafs/src/WINNT/afsd/cm_conn.h
diff -c openafs/src/WINNT/afsd/cm_conn.h:1.13.4.13 openafs/src/WINNT/afsd/cm_conn.h:1.13.4.15
*** openafs/src/WINNT/afsd/cm_conn.h:1.13.4.13 Wed Jul 16 00:44:27 2008
--- openafs/src/WINNT/afsd/cm_conn.h Wed Jul 23 17:46:44 2008
***************
*** 22,28 ****
typedef struct cm_conn {
struct cm_conn *nextp; /* locked by cm_connLock */
struct cm_server *serverp; /* locked by cm_serverLock */
! struct rx_connection *callp; /* locked by mx */
struct cm_user *userp; /* locked by mx; a held reference */
osi_mutex_t mx; /* mutex for some of these fields */
afs_int32 refCount; /* Interlocked */
--- 22,28 ----
typedef struct cm_conn {
struct cm_conn *nextp; /* locked by cm_connLock */
struct cm_server *serverp; /* locked by cm_serverLock */
! struct rx_connection *rxconnp; /* locked by mx */
struct cm_user *userp; /* locked by mx; a held reference */
osi_mutex_t mx; /* mutex for some of these fields */
afs_int32 refCount; /* Interlocked */
***************
*** 54,59 ****
--- 54,60 ----
/* flags in cm_req structure */
#define CM_REQ_NORETRY 0x1
#define CM_REQ_NEW_CONN_FORCED 0x2
+ #define CM_REQ_SOURCE_SMB 0x4
/*
* Vice2 error codes
Index: openafs/src/WINNT/afsd/cm_dcache.c
diff -c openafs/src/WINNT/afsd/cm_dcache.c:1.30.2.31 openafs/src/WINNT/afsd/cm_dcache.c:1.30.2.32
*** openafs/src/WINNT/afsd/cm_dcache.c:1.30.2.31 Thu Jun 26 10:38:23 2008
--- openafs/src/WINNT/afsd/cm_dcache.c Mon Jul 21 12:19:54 2008
***************
*** 62,68 ****
osi_hyper_t thyper;
AFSVolSync volSync;
AFSFid tfid;
! struct rx_call *callp;
struct rx_connection *rxconnp;
osi_queueData_t *qdp;
cm_buf_t *bufp;
--- 62,68 ----
osi_hyper_t thyper;
AFSVolSync volSync;
AFSFid tfid;
! struct rx_call *rxcallp;
struct rx_connection *rxconnp;
osi_queueData_t *qdp;
cm_buf_t *bufp;
***************
*** 153,159 ****
retry:
rxconnp = cm_GetRxConn(connp);
! callp = rx_NewCall(rxconnp);
rx_PutConnection(rxconnp);
#ifdef AFS_LARGEFILES
--- 153,159 ----
retry:
rxconnp = cm_GetRxConn(connp);
! rxcallp = rx_NewCall(rxconnp);
rx_PutConnection(rxconnp);
#ifdef AFS_LARGEFILES
***************
*** 161,167 ****
osi_Log4(afsd_logp, "CALL StartRXAFS_StoreData64 scp 0x%p, offset 0x%x:%08x, length 0x%x",
scp, biod.offset.HighPart, biod.offset.LowPart, nbytes);
! code = StartRXAFS_StoreData64(callp, &tfid, &inStatus,
biod.offset.QuadPart,
nbytes,
truncPos.QuadPart);
--- 161,167 ----
osi_Log4(afsd_logp, "CALL StartRXAFS_StoreData64 scp 0x%p, offset 0x%x:%08x, length 0x%x",
scp, biod.offset.HighPart, biod.offset.LowPart, nbytes);
! code = StartRXAFS_StoreData64(rxcallp, &tfid, &inStatus,
biod.offset.QuadPart,
nbytes,
truncPos.QuadPart);
***************
*** 177,183 ****
osi_Log4(afsd_logp, "CALL StartRXAFS_StoreData scp 0x%p, offset 0x%x:%08x, length 0x%x",
scp, biod.offset.HighPart, biod.offset.LowPart, nbytes);
! code = StartRXAFS_StoreData(callp, &tfid, &inStatus,
biod.offset.LowPart, nbytes, truncPos.LowPart);
if (code)
osi_Log1(afsd_logp, "CALL StartRXAFS_StoreData FAILURE, code 0x%x", code);
--- 177,183 ----
osi_Log4(afsd_logp, "CALL StartRXAFS_StoreData scp 0x%p, offset 0x%x:%08x, length 0x%x",
scp, biod.offset.HighPart, biod.offset.LowPart, nbytes);
! code = StartRXAFS_StoreData(rxcallp, &tfid, &inStatus,
biod.offset.LowPart, nbytes, truncPos.LowPart);
if (code)
osi_Log1(afsd_logp, "CALL StartRXAFS_StoreData FAILURE, code 0x%x", code);
***************
*** 189,195 ****
osi_Log4(afsd_logp, "CALL StartRXAFS_StoreData scp 0x%p, offset 0x%x:%08x, length 0x%x",
scp, biod.offset.HighPart, biod.offset.LowPart, nbytes);
! code = StartRXAFS_StoreData(callp, &tfid, &inStatus,
biod.offset.LowPart, nbytes, truncPos.LowPart);
if (code)
osi_Log1(afsd_logp, "CALL StartRXAFS_StoreData FAILURE, code 0x%x", code);
--- 189,195 ----
osi_Log4(afsd_logp, "CALL StartRXAFS_StoreData scp 0x%p, offset 0x%x:%08x, length 0x%x",
scp, biod.offset.HighPart, biod.offset.LowPart, nbytes);
! code = StartRXAFS_StoreData(rxcallp, &tfid, &inStatus,
biod.offset.LowPart, nbytes, truncPos.LowPart);
if (code)
osi_Log1(afsd_logp, "CALL StartRXAFS_StoreData FAILURE, code 0x%x", code);
***************
*** 213,219 ****
wbytes = cm_data.buf_blockSize;
/* write out wbytes of data from bufferp */
! temp = rx_Write(callp, bufferp, wbytes);
if (temp != wbytes) {
osi_Log3(afsd_logp, "rx_Write failed bp 0x%p, %d != %d",bufp,temp,wbytes);
code = -1;
--- 213,219 ----
wbytes = cm_data.buf_blockSize;
/* write out wbytes of data from bufferp */
! temp = rx_Write(rxcallp, bufferp, wbytes);
if (temp != wbytes) {
osi_Log3(afsd_logp, "rx_Write failed bp 0x%p, %d != %d",bufp,temp,wbytes);
code = -1;
***************
*** 227,239 ****
if (code == 0) {
if (SERVERHAS64BIT(connp)) {
! code = EndRXAFS_StoreData64(callp, &outStatus, &volSync);
if (code)
osi_Log2(afsd_logp, "EndRXAFS_StoreData64 FAILURE scp 0x%p code %lX", scp, code);
else
osi_Log0(afsd_logp, "EndRXAFS_StoreData64 SUCCESS");
} else {
! code = EndRXAFS_StoreData(callp, &outStatus, &volSync);
if (code)
osi_Log2(afsd_logp, "EndRXAFS_StoreData FAILURE scp 0x%p code %lX",scp,code);
else
--- 227,239 ----
if (code == 0) {
if (SERVERHAS64BIT(connp)) {
! code = EndRXAFS_StoreData64(rxcallp, &outStatus, &volSync);
if (code)
osi_Log2(afsd_logp, "EndRXAFS_StoreData64 FAILURE scp 0x%p code %lX", scp, code);
else
osi_Log0(afsd_logp, "EndRXAFS_StoreData64 SUCCESS");
} else {
! code = EndRXAFS_StoreData(rxcallp, &outStatus, &volSync);
if (code)
osi_Log2(afsd_logp, "EndRXAFS_StoreData FAILURE scp 0x%p code %lX",scp,code);
else
***************
*** 241,247 ****
}
}
! code = rx_EndCall(callp, code);
#ifdef AFS_LARGEFILES
if (code == RXGEN_OPCODE && SERVERHAS64BIT(connp)) {
--- 241,247 ----
}
}
! code = rx_EndCall(rxcallp, code);
#ifdef AFS_LARGEFILES
if (code == RXGEN_OPCODE && SERVERHAS64BIT(connp)) {
***************
*** 322,328 ****
long code;
osi_hyper_t truncPos;
cm_conn_t *connp;
! struct rx_call *callp;
struct rx_connection *rxconnp;
int require_64bit_ops = 0;
--- 322,328 ----
long code;
osi_hyper_t truncPos;
cm_conn_t *connp;
! struct rx_call *rxcallp;
struct rx_connection *rxconnp;
int require_64bit_ops = 0;
***************
*** 360,392 ****
retry:
rxconnp = cm_GetRxConn(connp);
! callp = rx_NewCall(rxconnp);
rx_PutConnection(rxconnp);
#ifdef AFS_LARGEFILES
if (SERVERHAS64BIT(connp)) {
! code = StartRXAFS_StoreData64(callp, &tfid, &inStatus,
0, 0, truncPos.QuadPart);
} else {
if (require_64bit_ops) {
code = CM_ERROR_TOOBIG;
} else {
! code = StartRXAFS_StoreData(callp, &tfid, &inStatus,
0, 0, truncPos.LowPart);
}
}
#else
! code = StartRXAFS_StoreData(callp, &tfid, &inStatus,
0, 0, truncPos.LowPart);
#endif
if (code == 0) {
if (SERVERHAS64BIT(connp))
! code = EndRXAFS_StoreData64(callp, &outStatus, &volSync);
else
! code = EndRXAFS_StoreData(callp, &outStatus, &volSync);
}
! code = rx_EndCall(callp, code);
#ifdef AFS_LARGEFILES
if (code == RXGEN_OPCODE && SERVERHAS64BIT(connp)) {
--- 360,392 ----
retry:
rxconnp = cm_GetRxConn(connp);
! rxcallp = rx_NewCall(rxconnp);
rx_PutConnection(rxconnp);
#ifdef AFS_LARGEFILES
if (SERVERHAS64BIT(connp)) {
! code = StartRXAFS_StoreData64(rxcallp, &tfid, &inStatus,
0, 0, truncPos.QuadPart);
} else {
if (require_64bit_ops) {
code = CM_ERROR_TOOBIG;
} else {
! code = StartRXAFS_StoreData(rxcallp, &tfid, &inStatus,
0, 0, truncPos.LowPart);
}
}
#else
! code = StartRXAFS_StoreData(rxcallp, &tfid, &inStatus,
0, 0, truncPos.LowPart);
#endif
if (code == 0) {
if (SERVERHAS64BIT(connp))
! code = EndRXAFS_StoreData64(rxcallp, &outStatus, &volSync);
else
! code = EndRXAFS_StoreData(rxcallp, &outStatus, &volSync);
}
! code = rx_EndCall(rxcallp, code);
#ifdef AFS_LARGEFILES
if (code == RXGEN_OPCODE && SERVERHAS64BIT(connp)) {
***************
*** 1344,1350 ****
cm_buf_t *tbufp; /* buf we're filling */
osi_queueData_t *qdp; /* q element we're scanning */
AFSFid tfid;
! struct rx_call *callp;
struct rx_connection *rxconnp;
cm_bulkIO_t biod; /* bulk IO descriptor */
cm_conn_t *connp;
--- 1344,1350 ----
cm_buf_t *tbufp; /* buf we're filling */
osi_queueData_t *qdp; /* q element we're scanning */
AFSFid tfid;
! struct rx_call *rxcallp;
struct rx_connection *rxconnp;
cm_bulkIO_t biod; /* bulk IO descriptor */
cm_conn_t *connp;
***************
*** 1499,1505 ****
continue;
rxconnp = cm_GetRxConn(connp);
! callp = rx_NewCall(rxconnp);
rx_PutConnection(rxconnp);
#ifdef AFS_LARGEFILES
--- 1499,1505 ----
continue;
rxconnp = cm_GetRxConn(connp);
! rxcallp = rx_NewCall(rxconnp);
rx_PutConnection(rxconnp);
#ifdef AFS_LARGEFILES
***************
*** 1509,1525 ****
osi_Log4(afsd_logp, "CALL FetchData64 scp 0x%p, off 0x%x:%08x, size 0x%x",
scp, biod.offset.HighPart, biod.offset.LowPart, biod.length);
! code = StartRXAFS_FetchData64(callp, &tfid, biod.offset.QuadPart, biod.length);
if (code == 0) {
! temp = rx_Read(callp, (char *) &nbytes_hi, sizeof(afs_int32));
if (temp == sizeof(afs_int32)) {
nbytes_hi = ntohl(nbytes_hi);
} else {
nbytes_hi = 0;
! code = callp->error;
! rx_EndCall(callp, code);
! callp = NULL;
}
}
}
--- 1509,1525 ----
osi_Log4(afsd_logp, "CALL FetchData64 scp 0x%p, off 0x%x:%08x, size 0x%x",
scp, biod.offset.HighPart, biod.offset.LowPart, biod.length);
! code = StartRXAFS_FetchData64(rxcallp, &tfid, biod.offset.QuadPart, biod.length);
if (code == 0) {
! temp = rx_Read(rxcallp, (char *) &nbytes_hi, sizeof(afs_int32));
if (temp == sizeof(afs_int32)) {
nbytes_hi = ntohl(nbytes_hi);
} else {
nbytes_hi = 0;
! code = rxcallp->error;
! rx_EndCall(rxcallp, code);
! rxcallp = NULL;
}
}
}
***************
*** 1529,1544 ****
osi_Log0(afsd_logp, "Skipping FetchData. Operation requires FetchData64");
code = CM_ERROR_TOOBIG;
} else {
! if (!callp) {
rxconnp = cm_GetRxConn(connp);
! callp = rx_NewCall(rxconnp);
rx_PutConnection(rxconnp);
}
osi_Log3(afsd_logp, "CALL FetchData scp 0x%p, off 0x%x, size 0x%x",
scp, biod.offset.LowPart, biod.length);
! code = StartRXAFS_FetchData(callp, &tfid, biod.offset.LowPart,
biod.length);
SET_SERVERHASNO64BIT(connp);
--- 1529,1544 ----
osi_Log0(afsd_logp, "Skipping FetchData. Operation requires FetchData64");
code = CM_ERROR_TOOBIG;
} else {
! if (!rxcallp) {
rxconnp = cm_GetRxConn(connp);
! rxcallp = rx_NewCall(rxconnp);
rx_PutConnection(rxconnp);
}
osi_Log3(afsd_logp, "CALL FetchData scp 0x%p, off 0x%x, size 0x%x",
scp, biod.offset.LowPart, biod.length);
! code = StartRXAFS_FetchData(rxcallp, &tfid, biod.offset.LowPart,
biod.length);
SET_SERVERHASNO64BIT(connp);
***************
*** 1546,1559 ****
}
if (code == 0) {
! temp = rx_Read(callp, (char *)&nbytes, sizeof(afs_int32));
if (temp == sizeof(afs_int32)) {
nbytes = ntohl(nbytes);
FillInt64(length_found, nbytes_hi, nbytes);
if (length_found > biod.length)
! code = (callp->error < 0) ? callp->error : -1;
} else {
! code = (callp->error < 0) ? callp->error : -1;
}
}
/* for the moment, nbytes_hi will always be 0 if code == 0
--- 1546,1559 ----
}
if (code == 0) {
! temp = rx_Read(rxcallp, (char *)&nbytes, sizeof(afs_int32));
if (temp == sizeof(afs_int32)) {
nbytes = ntohl(nbytes);
FillInt64(length_found, nbytes_hi, nbytes);
if (length_found > biod.length)
! code = (rxcallp->error < 0) ? rxcallp->error : -1;
} else {
! code = (rxcallp->error < 0) ? rxcallp->error : -1;
}
}
/* for the moment, nbytes_hi will always be 0 if code == 0
***************
*** 1562,1580 ****
osi_Log3(afsd_logp, "CALL FetchData scp 0x%p, off 0x%x, size 0x%x",
scp, biod.offset.LowPart, biod.length);
! code = StartRXAFS_FetchData(callp, &tfid, biod.offset.LowPart,
biod.length);
/* now copy the data out of the pipe and put it in the buffer */
if (code == 0) {
! temp = rx_Read(callp, (char *)&nbytes, sizeof(afs_int32));
if (temp == sizeof(afs_int32)) {
nbytes = ntohl(nbytes);
if (nbytes > biod.length)
! code = (callp->error < 0) ? callp->error : -1;
}
else
! code = (callp->error < 0) ? callp->error : -1;
}
#endif
--- 1562,1580 ----
osi_Log3(afsd_logp, "CALL FetchData scp 0x%p, off 0x%x, size 0x%x",
scp, biod.offset.LowPart, biod.length);
! code = StartRXAFS_FetchData(rxcallp, &tfid, biod.offset.LowPart,
biod.length);
/* now copy the data out of the pipe and put it in the buffer */
if (code == 0) {
! temp = rx_Read(rxcallp, (char *)&nbytes, sizeof(afs_int32));
if (temp == sizeof(afs_int32)) {
nbytes = ntohl(nbytes);
if (nbytes > biod.length)
! code = (rxcallp->error < 0) ? rxcallp->error : -1;
}
else
! code = (rxcallp->error < 0) ? rxcallp->error : -1;
}
#endif
***************
*** 1602,1610 ****
/* read rbytes of data */
rbytes = (nbytes > cm_data.buf_blockSize? cm_data.buf_blockSize : nbytes);
! temp = rx_Read(callp, bufferp, rbytes);
if (temp < rbytes) {
! code = (callp->error < 0) ? callp->error : -1;
break;
}
--- 1602,1610 ----
/* read rbytes of data */
rbytes = (nbytes > cm_data.buf_blockSize? cm_data.buf_blockSize : nbytes);
! temp = rx_Read(rxcallp, bufferp, rbytes);
if (temp < rbytes) {
! code = (rxcallp->error < 0) ? rxcallp->error : -1;
break;
}
***************
*** 1669,1677 ****
if (code == 0) {
if (SERVERHAS64BIT(connp))
! code = EndRXAFS_FetchData64(callp, &afsStatus, &callback, &volSync);
else
! code = EndRXAFS_FetchData(callp, &afsStatus, &callback, &volSync);
} else {
if (SERVERHAS64BIT(connp))
osi_Log1(afsd_logp, "CALL EndRXAFS_FetchData64 skipped due to error %d", code);
--- 1669,1677 ----
if (code == 0) {
if (SERVERHAS64BIT(connp))
! code = EndRXAFS_FetchData64(rxcallp, &afsStatus, &callback, &volSync);
else
! code = EndRXAFS_FetchData(rxcallp, &afsStatus, &callback, &volSync);
} else {
if (SERVERHAS64BIT(connp))
osi_Log1(afsd_logp, "CALL EndRXAFS_FetchData64 skipped due to error %d", code);
***************
*** 1679,1686 ****
osi_Log1(afsd_logp, "CALL EndRXAFS_FetchData skipped due to error %d", code);
}
! if (callp)
! code = rx_EndCall(callp, code);
if (code == RXKADUNKNOWNKEY)
osi_Log0(afsd_logp, "CALL EndCall returns RXKADUNKNOWNKEY");
--- 1679,1686 ----
osi_Log1(afsd_logp, "CALL EndRXAFS_FetchData skipped due to error %d", code);
}
! if (rxcallp)
! code = rx_EndCall(rxcallp, code);
if (code == RXKADUNKNOWNKEY)
osi_Log0(afsd_logp, "CALL EndCall returns RXKADUNKNOWNKEY");
Index: openafs/src/WINNT/afsd/cm_ioctl.c
diff -c openafs/src/WINNT/afsd/cm_ioctl.c:1.73.2.50 openafs/src/WINNT/afsd/cm_ioctl.c:1.73.2.51
*** openafs/src/WINNT/afsd/cm_ioctl.c:1.73.2.50 Fri Jul 11 18:27:01 2008
--- openafs/src/WINNT/afsd/cm_ioctl.c Mon Jul 21 12:19:54 2008
***************
*** 381,387 ****
AFSVolSync volSync;
AFSFid afid;
int tlen;
! struct rx_connection * callp;
/* now make the get acl call */
#ifdef AFS_FREELANCE_CLIENT
--- 381,387 ----
AFSVolSync volSync;
AFSFid afid;
int tlen;
! struct rx_connection * rxconnp;
/* now make the get acl call */
#ifdef AFS_FREELANCE_CLIENT
***************
*** 401,409 ****
if (code)
continue;
! callp = cm_GetRxConn(connp);
! code = RXAFS_FetchACL(callp, &afid, &acl, &fileStatus, &volSync);
! rx_PutConnection(callp);
} while (cm_Analyze(connp, userp, reqp, &scp->fid, &volSync, NULL, NULL, code));
code = cm_MapRPCError(code, reqp);
--- 401,409 ----
if (code)
continue;
! rxconnp = cm_GetRxConn(connp);
! code = RXAFS_FetchACL(rxconnp, &afid, &acl, &fileStatus, &volSync);
! rx_PutConnection(rxconnp);
} while (cm_Analyze(connp, userp, reqp, &scp->fid, &volSync, NULL, NULL, code));
code = cm_MapRPCError(code, reqp);
***************
*** 474,480 ****
AFSFetchStatus fileStatus;
AFSVolSync volSync;
AFSFid fid;
! struct rx_connection * callp;
#ifdef AFS_FREELANCE_CLIENT
if ( scp->fid.cell == AFS_FAKE_ROOT_CELL_ID && scp->fid.volume == AFS_FAKE_ROOT_VOL_ID ) {
--- 474,480 ----
AFSFetchStatus fileStatus;
AFSVolSync volSync;
AFSFid fid;
! struct rx_connection * rxconnp;
#ifdef AFS_FREELANCE_CLIENT
if ( scp->fid.cell == AFS_FAKE_ROOT_CELL_ID && scp->fid.volume == AFS_FAKE_ROOT_VOL_ID ) {
***************
*** 493,501 ****
if (code)
continue;
! callp = cm_GetRxConn(connp);
! code = RXAFS_StoreACL(callp, &fid, &acl, &fileStatus, &volSync);
! rx_PutConnection(callp);
} while (cm_Analyze(connp, userp, reqp, &scp->fid, &volSync, NULL, NULL, code));
code = cm_MapRPCError(code, reqp);
--- 493,501 ----
if (code)
continue;
! rxconnp = cm_GetRxConn(connp);
! code = RXAFS_StoreACL(rxconnp, &fid, &acl, &fileStatus, &volSync);
! rx_PutConnection(rxconnp);
} while (cm_Analyze(connp, userp, reqp, &scp->fid, &volSync, NULL, NULL, code));
code = cm_MapRPCError(code, reqp);
***************
*** 607,613 ****
cm_cell_t *cellp;
char *cp;
clientchar_t *strp;
! struct rx_connection * callp;
#ifdef AFS_FREELANCE_CLIENT
if ( scp->fid.cell == AFS_FAKE_ROOT_CELL_ID && scp->fid.volume == AFS_FAKE_ROOT_VOL_ID ) {
--- 607,613 ----
cm_cell_t *cellp;
char *cp;
clientchar_t *strp;
! struct rx_connection * rxconnp;
#ifdef AFS_FREELANCE_CLIENT
if ( scp->fid.cell == AFS_FAKE_ROOT_CELL_ID && scp->fid.volume == AFS_FAKE_ROOT_VOL_ID ) {
***************
*** 661,670 ****
if (code)
continue;
! callp = cm_GetRxConn(tcp);
! code = RXAFS_SetVolumeStatus(callp, scp->fid.volume,
&storeStat, volName, offLineMsg, motd);
! rx_PutConnection(callp);
} while (cm_Analyze(tcp, userp, reqp, &scp->fid, NULL, NULL, NULL, code));
code = cm_MapRPCError(code, reqp);
--- 661,670 ----
if (code)
continue;
! rxconnp = cm_GetRxConn(tcp);
! code = RXAFS_SetVolumeStatus(rxconnp, scp->fid.volume,
&storeStat, volName, offLineMsg, motd);
! rx_PutConnection(rxconnp);
} while (cm_Analyze(tcp, userp, reqp, &scp->fid, NULL, NULL, NULL, code));
code = cm_MapRPCError(code, reqp);
***************
*** 714,720 ****
char *Name;
char *OfflineMsg;
char *MOTD;
! struct rx_connection * callp;
#ifdef AFS_FREELANCE_CLIENT
if ( scp->fid.cell == AFS_FAKE_ROOT_CELL_ID && scp->fid.volume == AFS_FAKE_ROOT_VOL_ID ) {
--- 714,720 ----
char *Name;
char *OfflineMsg;
char *MOTD;
! struct rx_connection * rxconnp;
#ifdef AFS_FREELANCE_CLIENT
if ( scp->fid.cell == AFS_FAKE_ROOT_CELL_ID && scp->fid.volume == AFS_FAKE_ROOT_VOL_ID ) {
***************
*** 737,746 ****
code = cm_ConnFromFID(&scp->fid, userp, reqp, &connp);
if (code) continue;
! callp = cm_GetRxConn(connp);
! code = RXAFS_GetVolumeStatus(callp, scp->fid.volume,
&volStat, &Name, &OfflineMsg, &MOTD);
! rx_PutConnection(callp);
} while (cm_Analyze(connp, userp, reqp, &scp->fid, NULL, NULL, NULL, code));
code = cm_MapRPCError(code, reqp);
--- 737,746 ----
code = cm_ConnFromFID(&scp->fid, userp, reqp, &connp);
if (code) continue;
! rxconnp = cm_GetRxConn(connp);
! code = RXAFS_GetVolumeStatus(rxconnp, scp->fid.volume,
&volStat, &Name, &OfflineMsg, &MOTD);
! rx_PutConnection(rxconnp);
} while (cm_Analyze(connp, userp, reqp, &scp->fid, NULL, NULL, NULL, code));
code = cm_MapRPCError(code, reqp);
Index: openafs/src/WINNT/afsd/cm_vnodeops.c
diff -c openafs/src/WINNT/afsd/cm_vnodeops.c:1.69.2.82 openafs/src/WINNT/afsd/cm_vnodeops.c:1.69.2.85
*** openafs/src/WINNT/afsd/cm_vnodeops.c:1.69.2.82 Wed Jul 16 11:23:46 2008
--- openafs/src/WINNT/afsd/cm_vnodeops.c Thu Jul 24 13:56:54 2008
***************
*** 1492,1498 ****
int sflags;
AFSFetchStatus newDirStatus;
AFSVolSync volSync;
! struct rx_connection * callp;
cm_dirOp_t dirop;
cm_scache_t *scp = NULL;
int free_fnamep = FALSE;
--- 1492,1498 ----
int sflags;
AFSFetchStatus newDirStatus;
AFSVolSync volSync;
! struct rx_connection * rxconnp;
cm_dirOp_t dirop;
cm_scache_t *scp = NULL;
int free_fnamep = FALSE;
***************
*** 1545,1554 ****
if (code)
continue;
! callp = cm_GetRxConn(connp);
! code = RXAFS_RemoveFile(callp, &afsFid, fnamep,
&newDirStatus, &volSync);
! rx_PutConnection(callp);
} while (cm_Analyze(connp, userp, reqp, &dscp->fid, &volSync, NULL, NULL, code));
code = cm_MapRPCError(code, reqp);
--- 1545,1554 ----
if (code)
continue;
! rxconnp = cm_GetRxConn(connp);
! code = RXAFS_RemoveFile(rxconnp, &afsFid, fnamep,
&newDirStatus, &volSync);
! rx_PutConnection(rxconnp);
} while (cm_Analyze(connp, userp, reqp, &dscp->fid, &volSync, NULL, NULL, code));
code = cm_MapRPCError(code, reqp);
***************
*** 2230,2236 ****
long j;
cm_scache_t *scp;
cm_fid_t tfid;
! struct rx_connection * callp;
int inlinebulk = 0; /* Did we use InlineBulkStatus RPC or not? */
/* otherwise, we may have one or more bulk stat's worth of stuff in bb;
--- 2230,2236 ----
long j;
cm_scache_t *scp;
cm_fid_t tfid;
! struct rx_connection * rxconnp;
int inlinebulk = 0; /* Did we use InlineBulkStatus RPC or not? */
/* otherwise, we may have one or more bulk stat's worth of stuff in bb;
***************
*** 2255,2263 ****
if (code)
continue;
! callp = cm_GetRxConn(connp);
if (!(connp->serverp->flags & CM_SERVERFLAG_NOINLINEBULK)) {
! code = RXAFS_InlineBulkStatus(callp, &fidStruct,
&statStruct, &callbackStruct, &volSync);
if (code == RXGEN_OPCODE) {
cm_SetServerNoInlineBulk(connp->serverp, 0);
--- 2255,2263 ----
if (code)
continue;
! rxconnp = cm_GetRxConn(connp);
if (!(connp->serverp->flags & CM_SERVERFLAG_NOINLINEBULK)) {
! code = RXAFS_InlineBulkStatus(rxconnp, &fidStruct,
&statStruct, &callbackStruct, &volSync);
if (code == RXGEN_OPCODE) {
cm_SetServerNoInlineBulk(connp->serverp, 0);
***************
*** 2266,2275 ****
}
}
if (!inlinebulk) {
! code = RXAFS_BulkStatus(callp, &fidStruct,
&statStruct, &callbackStruct, &volSync);
}
! rx_PutConnection(callp);
} while (cm_Analyze(connp, userp, reqp, &dscp->fid,
&volSync, NULL, &cbReq, code));
--- 2266,2275 ----
}
}
if (!inlinebulk) {
! code = RXAFS_BulkStatus(rxconnp, &fidStruct,
&statStruct, &callbackStruct, &volSync);
}
! rx_PutConnection(rxconnp);
} while (cm_Analyze(connp, userp, reqp, &dscp->fid,
&volSync, NULL, &cbReq, code));
***************
*** 2526,2532 ****
cm_conn_t *connp;
AFSFid tfid;
AFSStoreStatus afsInStatus;
! struct rx_connection * callp;
/* handle file length setting */
if (attrp->mask & CM_ATTRMASK_LENGTH)
--- 2526,2532 ----
cm_conn_t *connp;
AFSFid tfid;
AFSStoreStatus afsInStatus;
! struct rx_connection * rxconnp;
/* handle file length setting */
if (attrp->mask & CM_ATTRMASK_LENGTH)
***************
*** 2556,2565 ****
if (code)
continue;
! callp = cm_GetRxConn(connp);
! code = RXAFS_StoreStatus(callp, &tfid,
&afsInStatus, &afsOutStatus, &volSync);
! rx_PutConnection(callp);
} while (cm_Analyze(connp, userp, reqp,
&scp->fid, &volSync, NULL, NULL, code));
--- 2556,2565 ----
if (code)
continue;
! rxconnp = cm_GetRxConn(connp);
! code = RXAFS_StoreStatus(rxconnp, &tfid,
&afsInStatus, &afsOutStatus, &volSync);
! rx_PutConnection(rxconnp);
} while (cm_Analyze(connp, userp, reqp,
&scp->fid, &volSync, NULL, NULL, code));
***************
*** 2601,2607 ****
AFSFetchStatus newFileStatus;
AFSCallBack newFileCallback;
AFSVolSync volSync;
! struct rx_connection * callp;
cm_dirOp_t dirop;
fschar_t * fnamep = NULL;
--- 2601,2607 ----
AFSFetchStatus newFileStatus;
AFSCallBack newFileCallback;
AFSVolSync volSync;
! struct rx_connection * rxconnp;
cm_dirOp_t dirop;
fschar_t * fnamep = NULL;
***************
*** 2655,2666 ****
dirAFSFid.Vnode = dscp->fid.vnode;
dirAFSFid.Unique = dscp->fid.unique;
! callp = cm_GetRxConn(connp);
! code = RXAFS_CreateFile(connp->callp, &dirAFSFid, fnamep,
&inStatus, &newAFSFid, &newFileStatus,
&updatedDirStatus, &newFileCallback,
&volSync);
! rx_PutConnection(callp);
} while (cm_Analyze(connp, userp, reqp,
&dscp->fid, &volSync, NULL, &cbReq, code));
--- 2655,2666 ----
dirAFSFid.Vnode = dscp->fid.vnode;
dirAFSFid.Unique = dscp->fid.unique;
! rxconnp = cm_GetRxConn(connp);
! code = RXAFS_CreateFile(connp->rxconnp, &dirAFSFid, fnamep,
&inStatus, &newAFSFid, &newFileStatus,
&updatedDirStatus, &newFileCallback,
&volSync);
! rx_PutConnection(rxconnp);
} while (cm_Analyze(connp, userp, reqp,
&dscp->fid, &volSync, NULL, &cbReq, code));
***************
*** 2701,2707 ****
didEnd = 1;
}
lock_ReleaseWrite(&scp->rw);
- *scpp = scp;
}
}
--- 2701,2706 ----
***************
*** 2720,2725 ****
--- 2719,2730 ----
if (fnamep)
free(fnamep);
+ if (scp) {
+ if (scpp)
+ *scpp = scp;
+ else
+ cm_ReleaseSCache(scp);
+ }
return code;
}
***************
*** 2747,2753 ****
}
long cm_MakeDir(cm_scache_t *dscp, clientchar_t *cnamep, long flags, cm_attr_t *attrp,
! cm_user_t *userp, cm_req_t *reqp)
{
cm_conn_t *connp;
long code;
--- 2752,2758 ----
}
long cm_MakeDir(cm_scache_t *dscp, clientchar_t *cnamep, long flags, cm_attr_t *attrp,
! cm_user_t *userp, cm_req_t *reqp, cm_scache_t **scpp)
{
cm_conn_t *connp;
long code;
***************
*** 2762,2768 ****
AFSFetchStatus newDirStatus;
AFSCallBack newDirCallback;
AFSVolSync volSync;
! struct rx_connection * callp;
cm_dirOp_t dirop;
fschar_t * fnamep = NULL;
--- 2767,2773 ----
AFSFetchStatus newDirStatus;
AFSCallBack newDirCallback;
AFSVolSync volSync;
! struct rx_connection * rxconnp;
cm_dirOp_t dirop;
fschar_t * fnamep = NULL;
***************
*** 2815,2826 ****
dirAFSFid.Vnode = dscp->fid.vnode;
dirAFSFid.Unique = dscp->fid.unique;
! callp = cm_GetRxConn(connp);
! code = RXAFS_MakeDir(connp->callp, &dirAFSFid, fnamep,
&inStatus, &newAFSFid, &newDirStatus,
&updatedDirStatus, &newDirCallback,
&volSync);
! rx_PutConnection(callp);
} while (cm_Analyze(connp, userp, reqp,
&dscp->fid, &volSync, NULL, &cbReq, code));
--- 2820,2831 ----
dirAFSFid.Vnode = dscp->fid.vnode;
dirAFSFid.Unique = dscp->fid.unique;
! rxconnp = cm_GetRxConn(connp);
! code = RXAFS_MakeDir(connp->rxconnp, &dirAFSFid, fnamep,
&inStatus, &newAFSFid, &newDirStatus,
&updatedDirStatus, &newDirCallback,
&volSync);
! rx_PutConnection(rxconnp);
} while (cm_Analyze(connp, userp, reqp,
&dscp->fid, &volSync, NULL, &cbReq, code));
***************
*** 2860,2866 ****
didEnd = 1;
}
lock_ReleaseWrite(&scp->rw);
- cm_ReleaseSCache(scp);
}
}
--- 2865,2870 ----
***************
*** 2878,2883 ****
--- 2882,2894 ----
free(fnamep);
+ if (scp) {
+ if (scpp)
+ *scpp = scp;
+ else
+ cm_ReleaseSCache(scp);
+ }
+
/* and return error code */
return code;
}
***************
*** 2892,2898 ****
AFSFetchStatus updatedDirStatus;
AFSFetchStatus newLinkStatus;
AFSVolSync volSync;
! struct rx_connection * callp;
cm_dirOp_t dirop;
fschar_t * fnamep = NULL;
--- 2903,2909 ----
AFSFetchStatus updatedDirStatus;
AFSFetchStatus newLinkStatus;
AFSVolSync volSync;
! struct rx_connection * rxconnp;
cm_dirOp_t dirop;
fschar_t * fnamep = NULL;
***************
*** 2927,2936 ****
existingAFSFid.Vnode = sscp->fid.vnode;
existingAFSFid.Unique = sscp->fid.unique;
! callp = cm_GetRxConn(connp);
! code = RXAFS_Link(callp, &dirAFSFid, fnamep, &existingAFSFid,
&newLinkStatus, &updatedDirStatus, &volSync);
! rx_PutConnection(callp);
osi_Log1(afsd_logp," RXAFS_Link returns 0x%x", code);
} while (cm_Analyze(connp, userp, reqp,
--- 2938,2947 ----
existingAFSFid.Vnode = sscp->fid.vnode;
existingAFSFid.Unique = sscp->fid.unique;
! rxconnp = cm_GetRxConn(connp);
! code = RXAFS_Link(rxconnp, &dirAFSFid, fnamep, &existingAFSFid,
&newLinkStatus, &updatedDirStatus, &volSync);
! rx_PutConnection(rxconnp);
osi_Log1(afsd_logp," RXAFS_Link returns 0x%x", code);
} while (cm_Analyze(connp, userp, reqp,
***************
*** 2982,2988 ****
AFSFetchStatus updatedDirStatus;
AFSFetchStatus newLinkStatus;
AFSVolSync volSync;
! struct rx_connection * callp;
cm_dirOp_t dirop;
fschar_t *fnamep = NULL;
--- 2993,2999 ----
AFSFetchStatus updatedDirStatus;
AFSFetchStatus newLinkStatus;
AFSVolSync volSync;
! struct rx_connection * rxconnp;
cm_dirOp_t dirop;
fschar_t *fnamep = NULL;
***************
*** 3015,3025 ****
dirAFSFid.Vnode = dscp->fid.vnode;
dirAFSFid.Unique = dscp->fid.unique;
! callp = cm_GetRxConn(connp);
! code = RXAFS_Symlink(callp, &dirAFSFid, fnamep, contentsp,
&inStatus, &newAFSFid, &newLinkStatus,
&updatedDirStatus, &volSync);
! rx_PutConnection(callp);
} while (cm_Analyze(connp, userp, reqp,
&dscp->fid, &volSync, NULL, NULL, code));
--- 3026,3036 ----
dirAFSFid.Vnode = dscp->fid.vnode;
dirAFSFid.Unique = dscp->fid.unique;
! rxconnp = cm_GetRxConn(connp);
! code = RXAFS_Symlink(rxconnp, &dirAFSFid, fnamep, contentsp,
&inStatus, &newAFSFid, &newLinkStatus,
&updatedDirStatus, &volSync);
! rx_PutConnection(rxconnp);
} while (cm_Analyze(connp, userp, reqp,
&dscp->fid, &volSync, NULL, NULL, code));
***************
*** 3105,3111 ****
int didEnd;
AFSFetchStatus updatedDirStatus;
AFSVolSync volSync;
! struct rx_connection * callp;
cm_dirOp_t dirop;
cm_scache_t *scp = NULL;
int free_fnamep = FALSE;
--- 3116,3122 ----
int didEnd;
AFSFetchStatus updatedDirStatus;
AFSVolSync volSync;
! struct rx_connection * rxconnp;
cm_dirOp_t dirop;
cm_scache_t *scp = NULL;
int free_fnamep = FALSE;
***************
*** 3154,3163 ****
dirAFSFid.Vnode = dscp->fid.vnode;
dirAFSFid.Unique = dscp->fid.unique;
! callp = cm_GetRxConn(connp);
! code = RXAFS_RemoveDir(callp, &dirAFSFid, fnamep,
&updatedDirStatus, &volSync);
! rx_PutConnection(callp);
} while (cm_Analyze(connp, userp, reqp,
&dscp->fid, &volSync, NULL, NULL, code));
--- 3165,3174 ----
dirAFSFid.Vnode = dscp->fid.vnode;
dirAFSFid.Unique = dscp->fid.unique;
! rxconnp = cm_GetRxConn(connp);
! code = RXAFS_RemoveDir(rxconnp, &dirAFSFid, fnamep,
&updatedDirStatus, &volSync);
! rx_PutConnection(rxconnp);
} while (cm_Analyze(connp, userp, reqp,
&dscp->fid, &volSync, NULL, NULL, code));
***************
*** 3262,3268 ****
AFSFetchStatus updatedNewDirStatus;
AFSVolSync volSync;
int oneDir;
! struct rx_connection * callp;
cm_dirOp_t oldDirOp;
cm_fid_t fileFid;
int diropCode = -1;
--- 3273,3279 ----
AFSFetchStatus updatedNewDirStatus;
AFSVolSync volSync;
int oneDir;
! struct rx_connection * rxconnp;
cm_dirOp_t oldDirOp;
cm_fid_t fileFid;
int diropCode = -1;
***************
*** 3270,3275 ****
--- 3281,3291 ----
fschar_t * newNamep = NULL;
int free_oldNamep = FALSE;
+ if (cOldNamep == NULL || cNewNamep == NULL ||
+ cm_ClientStrLen(cOldNamep) == 0 ||
+ cm_ClientStrLen(cNewNamep) == 0)
+ return CM_ERROR_INVAL;
+
if (oldNamep == NULL) {
code = -1;
#ifdef USE_BPLUS
***************
*** 3281,3288 ****
cm_EndDirOp(&oldDirOp);
}
#endif
! if (code)
goto done;
}
--- 3297,3307 ----
cm_EndDirOp(&oldDirOp);
}
#endif
! if (code) {
! osi_Log2(afsd_logp, "cm_Rename oldDscp 0x%p cOldName %S Original Name lookup failed",
! oldDscp, osi_LogSaveStringW(afsd_logp, cOldNamep));
goto done;
+ }
}
***************
*** 3294,3299 ****
--- 3313,3320 ----
if (oldDscp == newDscp) {
/* check for identical names */
if (cm_ClientStrCmp(cOldNamep, cNewNamep) == 0) {
+ osi_Log2(afsd_logp, "cm_Rename oldDscp 0x%p newDscp 0x%p CM_ERROR_RENAME_IDENTICAL",
+ oldDscp, newDscp);
code = CM_ERROR_RENAME_IDENTICAL;
goto done;
}
***************
*** 3315,3320 ****
--- 3336,3343 ----
oneDir = 0;
if (oldDscp->fid.cell != newDscp->fid.cell ||
oldDscp->fid.volume != newDscp->fid.volume) {
+ osi_Log2(afsd_logp, "cm_Rename oldDscp 0x%p newDscp 0x%p CM_ERROR_CROSSDEVLINK",
+ oldDscp, newDscp);
code = CM_ERROR_CROSSDEVLINK;
goto done;
}
***************
*** 3324,3329 ****
--- 3347,3354 ----
* stale info. Avoid deadlocks and quit now.
*/
if (oldDscp->fid.vnode == newDscp->fid.vnode) {
+ osi_Log2(afsd_logp, "cm_Rename oldDscp 0x%p newDscp 0x%p vnode collision",
+ oldDscp, newDscp);
code = CM_ERROR_CROSSDEVLINK;
goto done;
}
***************
*** 3409,3420 ****
newDirAFSFid.Vnode = newDscp->fid.vnode;
newDirAFSFid.Unique = newDscp->fid.unique;
! callp = cm_GetRxConn(connp);
! code = RXAFS_Rename(callp, &oldDirAFSFid, oldNamep,
&newDirAFSFid, newNamep,
&updatedOldDirStatus, &updatedNewDirStatus,
&volSync);
! rx_PutConnection(callp);
} while (cm_Analyze(connp, userp, reqp, &oldDscp->fid,
&volSync, NULL, NULL, code));
--- 3434,3445 ----
newDirAFSFid.Vnode = newDscp->fid.vnode;
newDirAFSFid.Unique = newDscp->fid.unique;
! rxconnp = cm_GetRxConn(connp);
! code = RXAFS_Rename(rxconnp, &oldDirAFSFid, oldNamep,
&newDirAFSFid, newNamep,
&updatedOldDirStatus, &updatedNewDirStatus,
&volSync);
! rx_PutConnection(rxconnp);
} while (cm_Analyze(connp, userp, reqp, &oldDscp->fid,
&volSync, NULL, NULL, code));
***************
*** 4022,4028 ****
AFSFid tfid;
cm_fid_t cfid;
cm_conn_t * connp;
! struct rx_connection * callp;
AFSVolSync volSync;
afs_uint32 reqflags = reqp->flags;
--- 4047,4053 ----
AFSFid tfid;
cm_fid_t cfid;
cm_conn_t * connp;
! struct rx_connection * rxconnp;
AFSVolSync volSync;
afs_uint32 reqflags = reqp->flags;
***************
*** 4041,4050 ****
if (code)
break;
! callp = cm_GetRxConn(connp);
! code = RXAFS_SetLock(callp, &tfid, lockType,
&volSync);
! rx_PutConnection(callp);
} while (cm_Analyze(connp, userp, reqp, &cfid, &volSync,
NULL, NULL, code));
--- 4066,4075 ----
if (code)
break;
! rxconnp = cm_GetRxConn(connp);
! code = RXAFS_SetLock(rxconnp, &tfid, lockType,
&volSync);
! rx_PutConnection(rxconnp);
} while (cm_Analyze(connp, userp, reqp, &cfid, &volSync,
NULL, NULL, code));
***************
*** 4068,4074 ****
AFSFid tfid;
cm_fid_t cfid;
cm_conn_t * connp;
! struct rx_connection * callp;
AFSVolSync volSync;
tfid.Volume = scp->fid.volume;
--- 4093,4099 ----
AFSFid tfid;
cm_fid_t cfid;
cm_conn_t * connp;
! struct rx_connection * rxconnp;
AFSVolSync volSync;
tfid.Volume = scp->fid.volume;
***************
*** 4085,4093 ****
if (code)
break;
! callp = cm_GetRxConn(connp);
! code = RXAFS_ReleaseLock(callp, &tfid, &volSync);
! rx_PutConnection(callp);
} while (cm_Analyze(connp, userp, reqp, &cfid, &volSync,
NULL, NULL, code));
--- 4110,4118 ----
if (code)
break;
! rxconnp = cm_GetRxConn(connp);
! code = RXAFS_ReleaseLock(rxconnp, &tfid, &volSync);
! rx_PutConnection(rxconnp);
} while (cm_Analyze(connp, userp, reqp, &cfid, &volSync,
NULL, NULL, code));
***************
*** 4977,4983 ****
AFSVolSync volSync;
cm_conn_t *connp;
long code;
! struct rx_connection * callp;
cm_scache_t * scp;
cm_InitReq(&req);
--- 5002,5008 ----
AFSVolSync volSync;
cm_conn_t *connp;
long code;
! struct rx_connection * rxconnp;
cm_scache_t * scp;
cm_InitReq(&req);
***************
*** 5079,5088 ****
if (code)
break;
! callp = cm_GetRxConn(connp);
! code = RXAFS_ExtendLock(callp, &tfid,
&volSync);
! rx_PutConnection(callp);
osi_Log1(afsd_logp, " ExtendLock returns %d", code);
--- 5104,5113 ----
if (code)
break;
! rxconnp = cm_GetRxConn(connp);
! code = RXAFS_ExtendLock(rxconnp, &tfid,
&volSync);
! rx_PutConnection(rxconnp);
osi_Log1(afsd_logp, " ExtendLock returns %d", code);
Index: openafs/src/WINNT/afsd/cm_vnodeops.h
diff -c openafs/src/WINNT/afsd/cm_vnodeops.h:1.14.4.12 openafs/src/WINNT/afsd/cm_vnodeops.h:1.14.4.13
*** openafs/src/WINNT/afsd/cm_vnodeops.h:1.14.4.12 Mon Jul 14 09:01:31 2008
--- openafs/src/WINNT/afsd/cm_vnodeops.h Thu Jul 24 13:56:54 2008
***************
*** 124,130 ****
cm_scache_t **retscp);
extern long cm_MakeDir(cm_scache_t *dscp, clientchar_t *lastNamep, long flags,
! cm_attr_t *attrp, cm_user_t *userp, cm_req_t *reqp);
extern long cm_RemoveDir(cm_scache_t *dscp, fschar_t *lastNamep, clientchar_t *originalNamep,
cm_user_t *userp, cm_req_t *reqp);
--- 124,131 ----
cm_scache_t **retscp);
extern long cm_MakeDir(cm_scache_t *dscp, clientchar_t *lastNamep, long flags,
! cm_attr_t *attrp, cm_user_t *userp, cm_req_t *reqp,
! cm_scache_t **scpp);
extern long cm_RemoveDir(cm_scache_t *dscp, fschar_t *lastNamep, clientchar_t *originalNamep,
cm_user_t *userp, cm_req_t *reqp);
Index: openafs/src/WINNT/afsd/cm_volume.c
diff -c openafs/src/WINNT/afsd/cm_volume.c:1.14.4.40 openafs/src/WINNT/afsd/cm_volume.c:1.14.4.46
*** openafs/src/WINNT/afsd/cm_volume.c:1.14.4.40 Thu Jun 26 10:38:24 2008
--- openafs/src/WINNT/afsd/cm_volume.c Wed Jul 23 00:56:59 2008
***************
*** 102,107 ****
--- 102,108 ----
lock_InitializeRWLock(&volp->rw, "cm_volume_t rwlock");
volp->flags |= CM_VOLUMEFLAG_RESET;
+ volp->flags &= ~CM_VOLUMEFLAG_UPDATING_VL;
for (volType = RWVOL; volType < NUM_VOL_TYPES; volType++) {
volp->vol[volType].state = vl_unknown;
volp->vol[volType].serversp = NULL;
***************
*** 184,195 ****
#endif
afs_uint32 volType;
- /* clear out old bindings */
- for ( volType = RWVOL; volType < NUM_VOL_TYPES; volType++) {
- if (volp->vol[volType].serversp)
- cm_FreeServerList(&volp->vol[volType].serversp, CM_FREESERVERLIST_DELETE);
- }
-
#ifdef AFS_FREELANCE_CLIENT
if ( cellp->cellID == AFS_FAKE_ROOT_CELL_ID && volp->vol[RWVOL].ID == AFS_FAKE_ROOT_VOL_ID )
{
--- 185,190 ----
***************
*** 203,213 ****
#endif
{
while (volp->flags & CM_VOLUMEFLAG_UPDATING_VL) {
osi_SleepW((LONG_PTR) &volp->flags, &volp->rw);
lock_ObtainWrite(&volp->rw);
!
! if (!(volp->flags & CM_VOLUMEFLAG_RESET))
return 0;
}
volp->flags |= CM_VOLUMEFLAG_UPDATING_VL;
--- 198,221 ----
#endif
{
while (volp->flags & CM_VOLUMEFLAG_UPDATING_VL) {
+ osi_Log3(afsd_logp, "cm_UpdateVolumeLocation sleeping name %s:%s flags 0x%x",
+ volp->cellp->name, volp->namep, volp->flags);
osi_SleepW((LONG_PTR) &volp->flags, &volp->rw);
lock_ObtainWrite(&volp->rw);
! osi_Log3(afsd_logp, "cm_UpdateVolumeLocation awake name %s:%s flags 0x%x",
! volp->cellp->name, volp->namep, volp->flags);
! if (!(volp->flags & CM_VOLUMEFLAG_RESET)) {
! osi_Log3(afsd_logp, "cm_UpdateVolumeLocation nothing to do, waking others name %s:%s flags 0x%x",
! volp->cellp->name, volp->namep, volp->flags);
! osi_Wakeup((LONG_PTR) &volp->flags);
return 0;
+ }
+ }
+
+ /* clear out old bindings */
+ for ( volType = RWVOL; volType < NUM_VOL_TYPES; volType++) {
+ if (volp->vol[volType].serversp)
+ cm_FreeServerList(&volp->vol[volType].serversp, CM_FREESERVERLIST_DELETE);
}
volp->flags |= CM_VOLUMEFLAG_UPDATING_VL;
***************
*** 219,240 ****
/* now we have volume structure locked and held; make RPC to fill it */
osi_Log2(afsd_logp, "CALL VL_GetEntryByName{UNO} name %s:%s", volp->cellp->name, volp->namep);
do {
code = cm_ConnByMServers(cellp->vlServersp, userp, reqp, &connp);
if (code)
continue;
#ifdef MULTIHOMED
! code = VL_GetEntryByNameU(connp->callp, volp->namep, &uvldbEntry);
method = 2;
if ( code == RXGEN_OPCODE )
#endif
{
! code = VL_GetEntryByNameN(connp->callp, volp->namep, &nvldbEntry);
method = 1;
}
if ( code == RXGEN_OPCODE ) {
! code = VL_GetEntryByNameO(connp->callp, volp->namep, &vldbEntry);
method = 0;
}
} while (cm_Analyze(connp, userp, reqp, NULL, NULL, cellp->vlServersp, NULL, code));
code = cm_MapVLRPCError(code, reqp);
if ( code )
--- 227,253 ----
/* now we have volume structure locked and held; make RPC to fill it */
osi_Log2(afsd_logp, "CALL VL_GetEntryByName{UNO} name %s:%s", volp->cellp->name, volp->namep);
do {
+ struct rx_connection * rxconnp;
+
code = cm_ConnByMServers(cellp->vlServersp, userp, reqp, &connp);
if (code)
continue;
+
+ rxconnp = cm_GetRxConn(connp);
#ifdef MULTIHOMED
! code = VL_GetEntryByNameU(rxconnp, volp->namep, &uvldbEntry);
method = 2;
if ( code == RXGEN_OPCODE )
#endif
{
! code = VL_GetEntryByNameN(rxconnp, volp->namep, &nvldbEntry);
method = 1;
}
if ( code == RXGEN_OPCODE ) {
! code = VL_GetEntryByNameO(rxconnp, volp->namep, &vldbEntry);
method = 0;
}
+ rx_PutConnection(rxconnp);
} while (cm_Analyze(connp, userp, reqp, NULL, NULL, cellp->vlServersp, NULL, code));
code = cm_MapVLRPCError(code, reqp);
if ( code )
***************
*** 259,280 ****
osi_Log2(afsd_logp, "CALL VL_GetEntryByName{UNO} name %s:%s", volp->cellp->name,
osi_LogSaveString(afsd_logp,name));
do {
code = cm_ConnByMServers(cellp->vlServersp, userp, reqp, &connp);
if (code)
continue;
#ifdef MULTIHOMED
! code = VL_GetEntryByNameU(connp->callp, name, &uvldbEntry);
method = 2;
if ( code == RXGEN_OPCODE )
#endif
{
! code = VL_GetEntryByNameN(connp->callp, name, &nvldbEntry);
method = 1;
}
if ( code == RXGEN_OPCODE ) {
! code = VL_GetEntryByNameO(connp->callp, name, &vldbEntry);
method = 0;
}
} while (cm_Analyze(connp, userp, reqp, NULL, NULL, cellp->vlServersp, NULL, code));
code = cm_MapVLRPCError(code, reqp);
if ( code )
--- 272,298 ----
osi_Log2(afsd_logp, "CALL VL_GetEntryByName{UNO} name %s:%s", volp->cellp->name,
osi_LogSaveString(afsd_logp,name));
do {
+ struct rx_connection * rxconnp;
+
code = cm_ConnByMServers(cellp->vlServersp, userp, reqp, &connp);
if (code)
continue;
+
+ rxconnp = cm_GetRxConn(connp);
#ifdef MULTIHOMED
! code = VL_GetEntryByNameU(connp->rxconnp, name, &uvldbEntry);
method = 2;
if ( code == RXGEN_OPCODE )
#endif
{
! code = VL_GetEntryByNameN(connp->rxconnp, name, &nvldbEntry);
method = 1;
}
if ( code == RXGEN_OPCODE ) {
! code = VL_GetEntryByNameO(connp->rxconnp, name, &vldbEntry);
method = 0;
}
+ rx_PutConnection(rxconnp);
} while (cm_Analyze(connp, userp, reqp, NULL, NULL, cellp->vlServersp, NULL, code));
code = cm_MapVLRPCError(code, reqp);
if ( code )
***************
*** 338,344 ****
rwID = uvldbEntry.volumeId[0];
roID = uvldbEntry.volumeId[1];
bkID = uvldbEntry.volumeId[2];
! for ( i=0, j=0; ivlServersp, userp, reqp, &connp);
if (code)
continue;
! code = VL_GetAddrsU(connp->callp, &attrs, &uuid, &unique, &nentries, &addrs);
!
! if (code == 0 && nentries == 0)
! code = VL_NOENT;
} while (cm_Analyze(connp, userp, reqp, NULL, NULL, cellp->vlServersp, NULL, code));
! code = cm_MapVLRPCError(code, reqp);
! if (code)
! return code;
addrp = addrs.bulkaddrs_val;
for (k = 0; k < nentries && j < NMAXNSERVERS; j++, k++) {
--- 374,397 ----
memset((char *)&addrs, 0, sizeof(addrs));
do {
+ struct rx_connection *rxconnp;
+
code = cm_ConnByMServers(cellp->vlServersp, userp, reqp, &connp);
if (code)
continue;
! rxconnp = cm_GetRxConn(connp);
! code = VL_GetAddrsU(rxconnp, &attrs, &uuid, &unique, &nentries, &addrs);
! rx_PutConnection(rxconnp);
} while (cm_Analyze(connp, userp, reqp, NULL, NULL, cellp->vlServersp, NULL, code));
!
! if ( code ) {
! code = cm_MapVLRPCError(code, reqp);
! osi_Log2(afsd_logp, "CALL VL_GetAddrsU serverNumber %u FAILURE, code 0x%x",
! i, code);
! continue;
! }
! osi_Log1(afsd_logp, "CALL VL_GetAddrsU serverNumber %u SUCCESS", i);
addrp = addrs.bulkaddrs_val;
for (k = 0; k < nentries && j < NMAXNSERVERS; j++, k++) {
***************
*** 376,381 ****
--- 400,408 ----
}
free(addrs.bulkaddrs_val); /* This is wrong */
+
+ if (nentries == 0)
+ code = CM_ERROR_INVAL;
}
}
nServers = j; /* update the server count */
***************
*** 454,463 ****
tempAddr = htonl(serverNumber[i]);
tsockAddr.sin_addr.s_addr = tempAddr;
tsp = cm_FindServer(&tsockAddr, CM_SERVER_FILE);
! if (!tsp)
! tsp = cm_NewServer(&tsockAddr, CM_SERVER_FILE,
! cellp, 0);
!
/* if this server was created by fs setserverprefs */
if ( !tsp->cellp )
tsp->cellp = cellp;
--- 481,493 ----
tempAddr = htonl(serverNumber[i]);
tsockAddr.sin_addr.s_addr = tempAddr;
tsp = cm_FindServer(&tsockAddr, CM_SERVER_FILE);
! if (!tsp) {
! /* cm_NewServer will probe the server which in turn will
! * update the state on the volume group object */
! lock_ReleaseWrite(&volp->rw);
! tsp = cm_NewServer(&tsockAddr, CM_SERVER_FILE, cellp, 0);
! lock_ObtainWrite(&volp->rw);
! }
/* if this server was created by fs setserverprefs */
if ( !tsp->cellp )
tsp->cellp = cellp;
***************
*** 567,573 ****
--- 597,608 ----
volp->vol[BACKVOL].state = bkNewstate;
}
+ if (code == 0)
+ volp->flags &= ~CM_VOLUMEFLAG_RESET;
+
volp->flags &= ~CM_VOLUMEFLAG_UPDATING_VL;
+ osi_Log4(afsd_logp, "cm_UpdateVolumeLocation done, waking others name %s:%s flags 0x%x code 0x%x",
+ volp->cellp->name, volp->namep, volp->flags, code);
osi_Wakeup((LONG_PTR) &volp->flags);
return code;
***************
*** 682,689 ****
code = 0;
if ((volp->flags & CM_VOLUMEFLAG_RESET) && !(flags & CM_GETVOL_FLAG_NO_RESET)) {
code = cm_UpdateVolumeLocation(cellp, userp, reqp, volp);
- if (code == 0)
- volp->flags &= ~CM_VOLUMEFLAG_RESET;
}
lock_ReleaseWrite(&volp->rw);
if (code == 0) {
--- 717,722 ----
***************
*** 844,851 ****
/* if we get here we are holding the mutex */
if ((volp->flags & CM_VOLUMEFLAG_RESET) && !(flags & CM_GETVOL_FLAG_NO_RESET)) {
code = cm_UpdateVolumeLocation(cellp, userp, reqp, volp);
- if (code == 0)
- volp->flags &= ~CM_VOLUMEFLAG_RESET;
}
lock_ReleaseWrite(&volp->rw);
--- 877,882 ----
***************
*** 947,954 ****
* occur.
*/
code = cm_UpdateVolumeLocation(cellp, userp, reqp, volp);
- if (code == 0)
- volp->flags &= ~CM_VOLUMEFLAG_RESET;
#endif
lock_ReleaseWrite(&volp->rw);
--- 978,983 ----
***************
*** 1063,1069 ****
char *OfflineMsg;
char *MOTD;
cm_req_t req;
! struct rx_connection * callp;
char volName[32];
char offLineMsg[256];
char motd[256];
--- 1092,1098 ----
char *OfflineMsg;
char *MOTD;
cm_req_t req;
! struct rx_connection * rxconnp;
char volName[32];
char offLineMsg[256];
char motd[256];
***************
*** 1079,1086 ****
if (volp->flags & CM_VOLUMEFLAG_RESET) {
cm_InitReq(&req);
code = cm_UpdateVolumeLocation(volp->cellp, cm_rootUserp, &req, volp);
- if (code == 0)
- volp->flags &= ~CM_VOLUMEFLAG_RESET;
}
if (volp->vol[RWVOL].ID != 0 && (!volID || volID == volp->vol[RWVOL].ID) &&
--- 1108,1113 ----
***************
*** 1102,1111 ****
if (code)
continue;
! callp = cm_GetRxConn(connp);
! code = RXAFS_GetVolumeStatus(callp, volp->vol[RWVOL].ID,
&volStat, &Name, &OfflineMsg, &MOTD);
! rx_PutConnection(callp);
} while (cm_Analyze(connp, cm_rootUserp, &req, NULL, NULL, NULL, NULL, code));
code = cm_MapRPCError(code, &req);
--- 1129,1138 ----
if (code)
continue;
! rxconnp = cm_GetRxConn(connp);
! code = RXAFS_GetVolumeStatus(rxconnp, volp->vol[RWVOL].ID,
&volStat, &Name, &OfflineMsg, &MOTD);
! rx_PutConnection(rxconnp);
} while (cm_Analyze(connp, cm_rootUserp, &req, NULL, NULL, NULL, NULL, code));
code = cm_MapRPCError(code, &req);
***************
*** 1142,1151 ****
if (code)
continue;
! callp = cm_GetRxConn(connp);
! code = RXAFS_GetVolumeStatus(callp, volp->vol[ROVOL].ID,
&volStat, &Name, &OfflineMsg, &MOTD);
! rx_PutConnection(callp);
} while (cm_Analyze(connp, cm_rootUserp, &req, NULL, NULL, NULL, NULL, code));
code = cm_MapRPCError(code, &req);
--- 1169,1178 ----
if (code)
continue;
! rxconnp = cm_GetRxConn(connp);
! code = RXAFS_GetVolumeStatus(rxconnp, volp->vol[ROVOL].ID,
&volStat, &Name, &OfflineMsg, &MOTD);
! rx_PutConnection(rxconnp);
} while (cm_Analyze(connp, cm_rootUserp, &req, NULL, NULL, NULL, NULL, code));
code = cm_MapRPCError(code, &req);
***************
*** 1182,1191 ****
if (code)
continue;
! callp = cm_GetRxConn(connp);
! code = RXAFS_GetVolumeStatus(callp, volp->vol[BACKVOL].ID,
&volStat, &Name, &OfflineMsg, &MOTD);
! rx_PutConnection(callp);
} while (cm_Analyze(connp, cm_rootUserp, &req, NULL, NULL, NULL, NULL, code));
code = cm_MapRPCError(code, &req);
--- 1209,1218 ----
if (code)
continue;
! rxconnp = cm_GetRxConn(connp);
! code = RXAFS_GetVolumeStatus(rxconnp, volp->vol[BACKVOL].ID,
&volStat, &Name, &OfflineMsg, &MOTD);
! rx_PutConnection(rxconnp);
} while (cm_Analyze(connp, cm_rootUserp, &req, NULL, NULL, NULL, NULL, code));
code = cm_MapRPCError(code, &req);
Index: openafs/src/WINNT/afsd/rawops.c
diff -c openafs/src/WINNT/afsd/rawops.c:1.2.4.7 openafs/src/WINNT/afsd/rawops.c:1.2.4.8
*** openafs/src/WINNT/afsd/rawops.c:1.2.4.7 Thu Jun 26 10:38:24 2008
--- openafs/src/WINNT/afsd/rawops.c Thu Jul 24 15:37:46 2008
***************
*** 322,336 ****
/* now copy the data */
memcpy(bufferp->datap + bufIndex, op, nbytes);
! buf_SetDirty(bufferp, bufIndex, nbytes);
!
! /* and record the last writer */
! if (bufferp->userp != userp) {
! cm_HoldUser(userp);
! if (bufferp->userp)
! cm_ReleaseUser(bufferp->userp);
! bufferp->userp = userp;
! }
/* adjust counters, pointers, etc. */
op += nbytes;
--- 322,328 ----
/* now copy the data */
memcpy(bufferp->datap + bufIndex, op, nbytes);
! buf_SetDirty(bufferp, bufIndex, nbytes, userp);
/* adjust counters, pointers, etc. */
op += nbytes;
Index: openafs/src/WINNT/afsd/smb.c
diff -c openafs/src/WINNT/afsd/smb.c:1.118.2.81 openafs/src/WINNT/afsd/smb.c:1.118.2.84
*** openafs/src/WINNT/afsd/smb.c:1.118.2.81 Wed Jul 16 11:23:46 2008
--- openafs/src/WINNT/afsd/smb.c Thu Jul 24 15:37:46 2008
***************
*** 190,195 ****
--- 190,201 ----
/* Faux server GUID. This is never checked. */
GUID smb_ServerGUID = { 0x40015cb8, 0x058a, 0x44fc, { 0xae, 0x7e, 0xbb, 0x29, 0x52, 0xee, 0x7e, 0xff }};
+ void smb_InitReq(cm_req_t *reqp)
+ {
+ cm_InitReq(reqp);
+ reqp->flags |= CM_REQ_SOURCE_SMB;
+ }
+
void smb_ResetServerPriority()
{
void * p = TlsGetValue(smb_TlsRequestSlot);
***************
*** 1801,1807 ****
/* attempt to locate a partial match in root.afs. This is because
when using the ANSI RAP calls, the share name is limited to 13 chars
and hence is truncated. Of course we prefer exact matches. */
! cm_InitReq(&req);
thyper.HighPart = 0;
thyper.LowPart = 0;
--- 1807,1813 ----
/* attempt to locate a partial match in root.afs. This is because
when using the ANSI RAP calls, the share name is limited to 13 chars
and hence is truncated. Of course we prefer exact matches. */
! smb_InitReq(&req);
thyper.HighPart = 0;
thyper.LowPart = 0;
***************
*** 3797,3803 ****
scp = wlRequest->scp;
osi_Log2(smb_logp,"smb_WaitingLocksDaemon wlRequest 0x%p scp 0x%p", wlRequest, scp);
! cm_InitReq(&req);
lock_ObtainWrite(&scp->rw);
--- 3803,3809 ----
scp = wlRequest->scp;
osi_Log2(smb_logp,"smb_WaitingLocksDaemon wlRequest 0x%p scp 0x%p", wlRequest, scp);
! smb_InitReq(&req);
lock_ObtainWrite(&scp->rw);
***************
*** 4250,4256 ****
cm_fid_t fid;
int fileType;
! cm_InitReq(&req);
maxCount = smb_GetSMBParm(inp, 0);
--- 4256,4262 ----
cm_fid_t fid;
int fileType;
! smb_InitReq(&req);
maxCount = smb_GetSMBParm(inp, 0);
***************
*** 4772,4778 ****
cm_req_t req;
char * pdata;
! cm_InitReq(&req);
pdata = smb_GetSMBData(inp, NULL);
pathp = smb_ParseASCIIBlock(inp, pdata, NULL, SMB_STRF_ANSIPATH);
--- 4778,4784 ----
cm_req_t req;
char * pdata;
! smb_InitReq(&req);
pdata = smb_GetSMBData(inp, NULL);
pathp = smb_ParseASCIIBlock(inp, pdata, NULL, SMB_STRF_ANSIPATH);
***************
*** 4856,4862 ****
char * datap;
cm_req_t req;
! cm_InitReq(&req);
/* decode basic attributes we're passed */
attribute = smb_GetSMBParm(inp, 0);
--- 4862,4868 ----
char * datap;
cm_req_t req;
! smb_InitReq(&req);
/* decode basic attributes we're passed */
attribute = smb_GetSMBParm(inp, 0);
***************
*** 4972,4978 ****
char * datap;
cm_req_t req;
! cm_InitReq(&req);
datap = smb_GetSMBData(inp, NULL);
pathp = smb_ParseASCIIBlock(inp, datap, NULL, SMB_STRF_ANSIPATH);
--- 4978,4984 ----
char * datap;
cm_req_t req;
! smb_InitReq(&req);
datap = smb_GetSMBData(inp, NULL);
pathp = smb_ParseASCIIBlock(inp, datap, NULL, SMB_STRF_ANSIPATH);
***************
*** 5158,5164 ****
char * datap;
cm_req_t req;
! cm_InitReq(&req);
datap = smb_GetSMBData(inp, NULL);
pathp = smb_ParseASCIIBlock(inp, datap, NULL, SMB_STRF_ANSIPATH);
--- 5164,5170 ----
char * datap;
cm_req_t req;
! smb_InitReq(&req);
datap = smb_GetSMBData(inp, NULL);
pathp = smb_ParseASCIIBlock(inp, datap, NULL, SMB_STRF_ANSIPATH);
***************
*** 5361,5367 ****
clientchar_t *tidPathp;
cm_req_t req;
! cm_InitReq(&req);
attribute = smb_GetSMBParm(inp, 0);
--- 5367,5373 ----
clientchar_t *tidPathp;
cm_req_t req;
! smb_InitReq(&req);
attribute = smb_GetSMBParm(inp, 0);
***************
*** 5552,5558 ****
return CM_ERROR_NOSUCHPATH;
}
! cm_InitReq(&req);
spacep = inp->spacep;
smb_StripLastComponent(spacep->wdata, &oldLastNamep, oldPathp);
--- 5558,5564 ----
return CM_ERROR_NOSUCHPATH;
}
! smb_InitReq(&req);
spacep = inp->spacep;
smb_StripLastComponent(spacep->wdata, &oldLastNamep, oldPathp);
***************
*** 5760,5766 ****
return CM_ERROR_NOSUCHPATH;
}
! cm_InitReq(&req);
caseFold = CM_FLAG_FOLLOW | CM_FLAG_CASEFOLD;
--- 5766,5772 ----
return CM_ERROR_NOSUCHPATH;
}
! smb_InitReq(&req);
caseFold = CM_FLAG_FOLLOW | CM_FLAG_CASEFOLD;
***************
*** 5970,5976 ****
clientchar_t *tidPathp;
cm_req_t req;
! cm_InitReq(&req);
tp = smb_GetSMBData(inp, NULL);
pathp = smb_ParseASCIIBlock(inp, tp, &tp, SMB_STRF_ANSIPATH);
--- 5976,5982 ----
clientchar_t *tidPathp;
cm_req_t req;
! smb_InitReq(&req);
tp = smb_GetSMBData(inp, NULL);
pathp = smb_ParseASCIIBlock(inp, tp, &tp, SMB_STRF_ANSIPATH);
***************
*** 6077,6083 ****
long code = 0;
cm_req_t req;
! cm_InitReq(&req);
fid = smb_GetSMBParm(inp, 0);
--- 6083,6089 ----
long code = 0;
cm_req_t req;
! smb_InitReq(&req);
fid = smb_GetSMBParm(inp, 0);
***************
*** 6208,6214 ****
lock_ReleaseMutex(&fidp->mx);
}
! cm_InitReq(&req);
lock_ObtainWrite(&smb_rctLock);
if (fidp->deleteOk) {
--- 6214,6220 ----
lock_ReleaseMutex(&fidp->mx);
}
! smb_InitReq(&req);
lock_ObtainWrite(&smb_rctLock);
if (fidp->deleteOk) {
***************
*** 6448,6454 ****
goto done2;
}
! cm_InitReq(&req);
bufferp = NULL;
offset = *offsetp;
--- 6454,6460 ----
goto done2;
}
! smb_InitReq(&req);
bufferp = NULL;
offset = *offsetp;
***************
*** 6619,6625 ****
goto done2;
}
! cm_InitReq(&req);
scp = fidp->scp;
cm_HoldSCache(scp);
--- 6625,6631 ----
goto done2;
}
! smb_InitReq(&req);
scp = fidp->scp;
cm_HoldSCache(scp);
***************
*** 6781,6795 ****
/* now copy the data */
memcpy(bufferp->datap + bufIndex, op, nbytes);
! buf_SetDirty(bufferp, bufIndex, nbytes);
!
! /* and record the last writer */
! if (bufferp->userp != userp) {
! cm_HoldUser(userp);
! if (bufferp->userp)
! cm_ReleaseUser(bufferp->userp);
! bufferp->userp = userp;
! }
/* adjust counters, pointers, etc. */
op += nbytes;
--- 6787,6793 ----
/* now copy the data */
memcpy(bufferp->datap + bufIndex, op, nbytes);
! buf_SetDirty(bufferp, bufIndex, nbytes, userp);
/* adjust counters, pointers, etc. */
op += nbytes;
***************
*** 6929,6935 ****
osi_Log1(smb_logp, "smb_ReceiveCoreWrite truncation to length 0x%x", offset.LowPart);
! cm_InitReq(&req);
truncAttr.mask = CM_ATTRMASK_LENGTH;
truncAttr.length.LowPart = offset.LowPart;
--- 6927,6933 ----
osi_Log1(smb_logp, "smb_ReceiveCoreWrite truncation to length 0x%x", offset.LowPart);
! smb_InitReq(&req);
truncAttr.mask = CM_ATTRMASK_LENGTH;
truncAttr.length.LowPart = offset.LowPart;
***************
*** 7348,7354 ****
clientchar_t *tidPathp;
cm_req_t req;
! cm_InitReq(&req);
scp = NULL;
--- 7346,7352 ----
clientchar_t *tidPathp;
cm_req_t req;
! smb_InitReq(&req);
scp = NULL;
***************
*** 7413,7419 ****
setAttr.mask = CM_ATTRMASK_CLIENTMODTIME;
setAttr.clientModTime = time(NULL);
! code = cm_MakeDir(dscp, lastNamep, 0, &setAttr, userp, &req);
if (code == 0 && (dscp->flags & CM_SCACHEFLAG_ANYWATCH))
smb_NotifyChange(FILE_ACTION_ADDED,
FILE_NOTIFY_CHANGE_DIR_NAME,
--- 7411,7417 ----
setAttr.mask = CM_ATTRMASK_CLIENTMODTIME;
setAttr.clientModTime = time(NULL);
! code = cm_MakeDir(dscp, lastNamep, 0, &setAttr, userp, &req, NULL);
if (code == 0 && (dscp->flags & CM_SCACHEFLAG_ANYWATCH))
smb_NotifyChange(FILE_ACTION_ADDED,
FILE_NOTIFY_CHANGE_DIR_NAME,
***************
*** 7471,7477 ****
cm_req_t req;
int created = 0; /* the file was new */
! cm_InitReq(&req);
scp = NULL;
excl = (inp->inCom == 0x03)? 0 : 1;
--- 7469,7475 ----
cm_req_t req;
int created = 0; /* the file was new */
! smb_InitReq(&req);
scp = NULL;
excl = (inp->inCom == 0x03)? 0 : 1;
***************
*** 7660,7666 ****
cm_user_t *userp;
cm_req_t req;
! cm_InitReq(&req);
fd = smb_GetSMBParm(inp, 0);
whence = smb_GetSMBParm(inp, 1);
--- 7658,7664 ----
cm_user_t *userp;
cm_req_t req;
! smb_InitReq(&req);
fd = smb_GetSMBParm(inp, 0);
whence = smb_GetSMBParm(inp, 1);
Index: openafs/src/WINNT/afsd/smb.h
diff -c openafs/src/WINNT/afsd/smb.h:1.41.2.32 openafs/src/WINNT/afsd/smb.h:1.41.2.34
*** openafs/src/WINNT/afsd/smb.h:1.41.2.32 Thu Jun 26 12:38:31 2008
--- openafs/src/WINNT/afsd/smb.h Mon Jul 28 19:05:34 2008
***************
*** 18,26 ****
#include
- /* Support largefiles by default */
- #define AFS_LARGEFILES
-
/* basic core protocol SMB structure */
#pragma pack(push, 1)
typedef struct smb {
--- 18,23 ----
***************
*** 742,747 ****
--- 739,745 ----
extern void smb_LanAdapterChange(int);
extern void smb_SetLanAdapterChangeDetected(void);
+ extern void smb_InitReq(cm_req_t *reqp);
#define SMB_LISTENER_UNINITIALIZED -1
#define SMB_LISTENER_STOPPED 0
Index: openafs/src/WINNT/afsd/smb3.c
diff -c openafs/src/WINNT/afsd/smb3.c:1.95.2.66 openafs/src/WINNT/afsd/smb3.c:1.95.2.68
*** openafs/src/WINNT/afsd/smb3.c:1.95.2.66 Mon Jul 14 09:38:23 2008
--- openafs/src/WINNT/afsd/smb3.c Thu Jul 24 13:56:55 2008
***************
*** 1651,1657 ****
rootShares.cShare = 0;
rootShares.shares = malloc( sizeof(smb_rap_share_info_0_t) * SMB_RAP_MAX_SHARES );
! cm_InitReq(&req);
userp = smb_GetTran2User(vcp,p);
--- 1651,1657 ----
rootShares.cShare = 0;
rootShares.shares = malloc( sizeof(smb_rap_share_info_0_t) * SMB_RAP_MAX_SHARES );
! smb_InitReq(&req);
userp = smb_GetTran2User(vcp,p);
***************
*** 1773,1779 ****
cm_user_t *userp;
cm_req_t req;
! cm_InitReq(&req);
tp = p->parmsp + 1; /* skip over function number (always 1) */
--- 1773,1779 ----
cm_user_t *userp;
cm_req_t req;
! smb_InitReq(&req);
tp = p->parmsp + 1; /* skip over function number (always 1) */
***************
*** 2249,2255 ****
cm_req_t req;
int created = 0;
! cm_InitReq(&req);
scp = NULL;
--- 2249,2255 ----
cm_req_t req;
int created = 0;
! smb_InitReq(&req);
scp = NULL;
***************
*** 2856,2862 ****
clientchar_t *lastComp;
cm_req_t req;
! cm_InitReq(&req);
infoLevel = p->parmsp[0];
if (infoLevel == SMB_INFO_IS_NAME_VALID)
--- 2856,2862 ----
clientchar_t *lastComp;
cm_req_t req;
! smb_InitReq(&req);
infoLevel = p->parmsp[0];
if (infoLevel == SMB_INFO_IS_NAME_VALID)
***************
*** 3160,3166 ****
clientchar_t *tidPathp;
clientchar_t *lastComp;
! cm_InitReq(&req);
infoLevel = p->parmsp[0];
osi_Log1(smb_logp,"ReceiveTran2SetPathInfo type 0x%x", infoLevel);
--- 3160,3166 ----
clientchar_t *tidPathp;
clientchar_t *lastComp;
! smb_InitReq(&req);
infoLevel = p->parmsp[0];
osi_Log1(smb_logp,"ReceiveTran2SetPathInfo type 0x%x", infoLevel);
***************
*** 3386,3392 ****
int readlock = 0;
cm_req_t req;
! cm_InitReq(&req);
fid = p->parmsp[0];
fidp = smb_FindFID(vcp, fid, 0);
--- 3386,3392 ----
int readlock = 0;
cm_req_t req;
! smb_InitReq(&req);
fid = p->parmsp[0];
fidp = smb_FindFID(vcp, fid, 0);
***************
*** 3529,3535 ****
cm_scache_t *scp = NULL;
cm_req_t req;
! cm_InitReq(&req);
fid = p->parmsp[0];
fidp = smb_FindFID(vcp, fid, 0);
--- 3529,3535 ----
cm_scache_t *scp = NULL;
cm_req_t req;
! smb_InitReq(&req);
fid = p->parmsp[0];
fidp = smb_FindFID(vcp, fid, 0);
***************
*** 3791,3797 ****
int i, nbnLen, reqLen, refLen;
int idx;
! cm_InitReq(&req);
maxReferralLevel = p->parmsp[0];
--- 3791,3797 ----
int i, nbnLen, reqLen, refLen;
int idx;
! smb_InitReq(&req);
maxReferralLevel = p->parmsp[0];
***************
*** 4283,4289 ****
void * attrp = NULL;
smb_tran2Find_t * fp;
! cm_InitReq(&req);
eos = 0;
osi_assertx(p->opcode == 1, "invalid opcode");
--- 4283,4289 ----
void * attrp = NULL;
smb_tran2Find_t * fp;
! smb_InitReq(&req);
eos = 0;
osi_assertx(p->opcode == 1, "invalid opcode");
***************
*** 4751,4757 ****
char * s;
smb_tran2Find_t * fp;
! cm_InitReq(&req);
eos = 0;
if (p->opcode == 1) {
--- 4751,4757 ----
char * s;
smb_tran2Find_t * fp;
! smb_InitReq(&req);
eos = 0;
if (p->opcode == 1) {
***************
*** 5535,5541 ****
cm_req_t req;
int created = 0;
! cm_InitReq(&req);
scp = NULL;
--- 5535,5541 ----
cm_req_t req;
int created = 0;
! smb_InitReq(&req);
scp = NULL;
***************
*** 5878,5884 ****
cm_key_t key;
unsigned int pid;
! cm_InitReq(&req);
fid = smb_GetSMBParm(inp, 2);
fid = smb_ChainFID(fid, inp);
--- 5878,5884 ----
cm_key_t key;
unsigned int pid;
! smb_InitReq(&req);
fid = smb_GetSMBParm(inp, 2);
fid = smb_ChainFID(fid, inp);
***************
*** 6164,6170 ****
cm_req_t req;
int readlock = 0;
! cm_InitReq(&req);
fid = smb_GetSMBParm(inp, 0);
fid = smb_ChainFID(fid, inp);
--- 6164,6170 ----
cm_req_t req;
int readlock = 0;
! smb_InitReq(&req);
fid = smb_GetSMBParm(inp, 0);
fid = smb_ChainFID(fid, inp);
***************
*** 6253,6259 ****
cm_attr_t attrs;
cm_req_t req;
! cm_InitReq(&req);
fid = smb_GetSMBParm(inp, 0);
fid = smb_ChainFID(fid, inp);
--- 6253,6259 ----
cm_attr_t attrs;
cm_req_t req;
! smb_InitReq(&req);
fid = smb_GetSMBParm(inp, 0);
fid = smb_ChainFID(fid, inp);
***************
*** 6642,6648 ****
int created = 0;
cm_lock_data_t *ldp = NULL;
! cm_InitReq(&req);
/* This code is very long and has a lot of if-then-else clauses
* scp and dscp get reused frequently and we need to ensure that
--- 6642,6648 ----
int created = 0;
cm_lock_data_t *ldp = NULL;
! smb_InitReq(&req);
/* This code is very long and has a lot of if-then-else clauses
* scp and dscp get reused frequently and we need to ensure that
***************
*** 7201,7207 ****
continue; /* the supplied path can't have consecutive slashes either , but */
/* cp is the next component to be created. */
! code = cm_MakeDir(tscp1, cp, 0, &setAttr, userp, &req);
if (code == 0 && (tscp1->flags & CM_SCACHEFLAG_ANYWATCH))
smb_NotifyChange(FILE_ACTION_ADDED,
FILE_NOTIFY_CHANGE_DIR_NAME,
--- 7201,7207 ----
continue; /* the supplied path can't have consecutive slashes either , but */
/* cp is the next component to be created. */
! code = cm_MakeDir(tscp1, cp, 0, &setAttr, userp, &req, NULL);
if (code == 0 && (tscp1->flags & CM_SCACHEFLAG_ANYWATCH))
smb_NotifyChange(FILE_ACTION_ADDED,
FILE_NOTIFY_CHANGE_DIR_NAME,
***************
*** 7488,7494 ****
int created = 0;
cm_lock_data_t *ldp = NULL;
! cm_InitReq(&req);
foundscp = FALSE;
scp = NULL;
--- 7488,7494 ----
int created = 0;
cm_lock_data_t *ldp = NULL;
! smb_InitReq(&req);
foundscp = FALSE;
scp = NULL;
***************
*** 7897,7903 ****
openAction = 2; /* created directory */
setAttr.mask = CM_ATTRMASK_CLIENTMODTIME;
setAttr.clientModTime = time(NULL);
! code = cm_MakeDir(dscp, lastNamep, 0, &setAttr, userp, &req);
if (code == 0 && (dscp->flags & CM_SCACHEFLAG_ANYWATCH))
smb_NotifyChange(FILE_ACTION_ADDED,
FILE_NOTIFY_CHANGE_DIR_NAME,
--- 7897,7903 ----
openAction = 2; /* created directory */
setAttr.mask = CM_ATTRMASK_CLIENTMODTIME;
setAttr.clientModTime = time(NULL);
! code = cm_MakeDir(dscp, lastNamep, 0, &setAttr, userp, &req, NULL);
if (code == 0 && (dscp->flags & CM_SCACHEFLAG_ANYWATCH))
smb_NotifyChange(FILE_ACTION_ADDED,
FILE_NOTIFY_CHANGE_DIR_NAME,
Index: openafs/src/WINNT/afsd/smb_ioctl.c
diff -c openafs/src/WINNT/afsd/smb_ioctl.c:1.25.2.13 openafs/src/WINNT/afsd/smb_ioctl.c:1.25.2.16
*** openafs/src/WINNT/afsd/smb_ioctl.c:1.25.2.13 Fri Jul 11 18:27:01 2008
--- openafs/src/WINNT/afsd/smb_ioctl.c Sat Jul 26 22:48:11 2008
***************
*** 108,114 ****
}
if (prefix) {
copyPrefix = cm_GetSpace();
! StringCbCopy(copyPrefix->data, CM_UTILS_SPACESIZE, prefix->data);
fidp->ioctlp->prefix = copyPrefix;
}
lock_ReleaseMutex(&fidp->mx);
--- 108,114 ----
}
if (prefix) {
copyPrefix = cm_GetSpace();
! memcpy(copyPrefix->data, prefix->data, CM_UTILS_SPACESIZE);
fidp->ioctlp->prefix = copyPrefix;
}
lock_ReleaseMutex(&fidp->mx);
***************
*** 1086,1092 ****
cm_ioctlQueryOptions_t *optionsp;
afs_uint32 flags = 0;
! cm_InitReq(&req);
optionsp = cm_IoctlGetQueryOptions(&ioctlp->ioctl, userp);
if (optionsp && CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
--- 1086,1092 ----
cm_ioctlQueryOptions_t *optionsp;
afs_uint32 flags = 0;
! smb_InitReq(&req);
optionsp = cm_IoctlGetQueryOptions(&ioctlp->ioctl, userp);
if (optionsp && CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
***************
*** 1116,1139 ****
cm_scache_t *scp;
afs_int32 code;
cm_req_t req;
- cm_ioctlQueryOptions_t *optionsp;
afs_uint32 flags = 0;
! cm_InitReq(&req);
!
! optionsp = cm_IoctlGetQueryOptions(&ioctlp->ioctl, userp);
! if (optionsp && CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
! flags |= (optionsp->literal ? CM_PARSE_FLAG_LITERAL : 0);
! if (optionsp && CM_IOCTL_QOPTS_HAVE_FID(optionsp)) {
! cm_fid_t fid;
! cm_SkipIoctlPath(&ioctlp->ioctl);
! cm_SetFid(&fid, optionsp->fid.cell, optionsp->fid.volume,
! optionsp->fid.vnode, optionsp->fid.unique);
! code = cm_GetSCache(&fid, &scp, userp, &req);
! } else {
! code = smb_ParseIoctlPath(ioctlp, userp, &req, &scp, flags);
! }
if (code)
return code;
--- 1116,1126 ----
cm_scache_t *scp;
afs_int32 code;
cm_req_t req;
afs_uint32 flags = 0;
! smb_InitReq(&req);
! code = smb_ParseIoctlPath(ioctlp, userp, &req, &scp, flags);
if (code)
return code;
***************
*** 1152,1158 ****
cm_ioctlQueryOptions_t *optionsp;
afs_uint32 flags = 0;
! cm_InitReq(&req);
optionsp = cm_IoctlGetQueryOptions(&ioctlp->ioctl, userp);
if (optionsp && CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
--- 1139,1145 ----
cm_ioctlQueryOptions_t *optionsp;
afs_uint32 flags = 0;
! smb_InitReq(&req);
optionsp = cm_IoctlGetQueryOptions(&ioctlp->ioctl, userp);
if (optionsp && CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
***************
*** 1182,1188 ****
{
cm_req_t req;
! cm_InitReq(&req);
cm_SkipIoctlPath(&ioctlp->ioctl); /* we don't care about the path */
--- 1169,1175 ----
{
cm_req_t req;
! smb_InitReq(&req);
cm_SkipIoctlPath(&ioctlp->ioctl); /* we don't care about the path */
***************
*** 1198,1204 ****
cm_ioctlQueryOptions_t *optionsp;
afs_uint32 flags = 0;
! cm_InitReq(&req);
optionsp = cm_IoctlGetQueryOptions(&ioctlp->ioctl, userp);
if (optionsp && CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
--- 1185,1191 ----
cm_ioctlQueryOptions_t *optionsp;
afs_uint32 flags = 0;
! smb_InitReq(&req);
optionsp = cm_IoctlGetQueryOptions(&ioctlp->ioctl, userp);
if (optionsp && CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
***************
*** 1232,1238 ****
cm_ioctlQueryOptions_t *optionsp;
afs_uint32 flags = 0;
! cm_InitReq(&req);
optionsp = cm_IoctlGetQueryOptions(&ioctlp->ioctl, userp);
if (optionsp && CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
--- 1219,1225 ----
cm_ioctlQueryOptions_t *optionsp;
afs_uint32 flags = 0;
! smb_InitReq(&req);
optionsp = cm_IoctlGetQueryOptions(&ioctlp->ioctl, userp);
if (optionsp && CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
***************
*** 1263,1269 ****
cm_scache_t *scp;
cm_req_t req;
! cm_InitReq(&req);
code = smb_ParseIoctlPath(ioctlp, userp, &req, &scp, 0);
if (code) return code;
--- 1250,1256 ----
cm_scache_t *scp;
cm_req_t req;
! smb_InitReq(&req);
code = smb_ParseIoctlPath(ioctlp, userp, &req, &scp, 0);
if (code) return code;
***************
*** 1283,1289 ****
afs_uint32 flags = 0;
cm_req_t req;
! cm_InitReq(&req);
optionsp = cm_IoctlGetQueryOptions(&ioctlp->ioctl, userp);
if (optionsp && CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
--- 1270,1276 ----
afs_uint32 flags = 0;
cm_req_t req;
! smb_InitReq(&req);
optionsp = cm_IoctlGetQueryOptions(&ioctlp->ioctl, userp);
if (optionsp && CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
***************
*** 1317,1323 ****
cm_ioctlQueryOptions_t * optionsp;
afs_uint32 flags = 0;
! cm_InitReq(&req);
optionsp = cm_IoctlGetQueryOptions(&ioctlp->ioctl, userp);
if (optionsp && CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
--- 1304,1310 ----
cm_ioctlQueryOptions_t * optionsp;
afs_uint32 flags = 0;
! smb_InitReq(&req);
optionsp = cm_IoctlGetQueryOptions(&ioctlp->ioctl, userp);
if (optionsp && CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
***************
*** 1343,1349 ****
cm_ioctlQueryOptions_t * optionsp;
afs_uint32 flags = 0;
! cm_InitReq(&req);
optionsp = cm_IoctlGetQueryOptions(&ioctlp->ioctl, userp);
if (optionsp && CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
--- 1330,1336 ----
cm_ioctlQueryOptions_t * optionsp;
afs_uint32 flags = 0;
! smb_InitReq(&req);
optionsp = cm_IoctlGetQueryOptions(&ioctlp->ioctl, userp);
if (optionsp && CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
***************
*** 1377,1383 ****
cm_ioctlQueryOptions_t *optionsp;
afs_uint32 flags = 0;
! cm_InitReq(&req);
optionsp = cm_IoctlGetQueryOptions(&ioctlp->ioctl, userp);
if (optionsp && CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
--- 1364,1370 ----
cm_ioctlQueryOptions_t *optionsp;
afs_uint32 flags = 0;
! smb_InitReq(&req);
optionsp = cm_IoctlGetQueryOptions(&ioctlp->ioctl, userp);
if (optionsp && CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
***************
*** 1411,1417 ****
cm_ioctlQueryOptions_t *optionsp;
afs_uint32 flags = 0;
! cm_InitReq(&req);
optionsp = cm_IoctlGetQueryOptions(&ioctlp->ioctl, userp);
if (optionsp && CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
--- 1398,1404 ----
cm_ioctlQueryOptions_t *optionsp;
afs_uint32 flags = 0;
! smb_InitReq(&req);
optionsp = cm_IoctlGetQueryOptions(&ioctlp->ioctl, userp);
if (optionsp && CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
***************
*** 1444,1450 ****
cm_scache_t *dscp;
cm_req_t req;
! cm_InitReq(&req);
code = smb_ParseIoctlPath(ioctlp, userp, &req, &dscp, 0);
if (code)
--- 1431,1437 ----
cm_scache_t *dscp;
cm_req_t req;
! smb_InitReq(&req);
code = smb_ParseIoctlPath(ioctlp, userp, &req, &dscp, 0);
if (code)
***************
*** 1464,1470 ****
cm_scache_t *dscp;
cm_req_t req;
! cm_InitReq(&req);
code = smb_ParseIoctlPath(ioctlp, userp, &req, &dscp, 0);
if (code)
--- 1451,1457 ----
cm_scache_t *dscp;
cm_req_t req;
! smb_InitReq(&req);
code = smb_ParseIoctlPath(ioctlp, userp, &req, &dscp, 0);
if (code)
***************
*** 1605,1611 ****
clientchar_t leaf[LEAF_SIZE];
cm_req_t req;
! cm_InitReq(&req);
code = smb_ParseIoctlParent(ioctlp, userp, &req, &dscp, leaf);
if (code)
--- 1592,1598 ----
clientchar_t leaf[LEAF_SIZE];
cm_req_t req;
! smb_InitReq(&req);
code = smb_ParseIoctlParent(ioctlp, userp, &req, &dscp, leaf);
if (code)
***************
*** 1625,1631 ****
clientchar_t leaf[LEAF_SIZE];
cm_req_t req;
! cm_InitReq(&req);
code = smb_ParseIoctlParent(ioctlp, userp, &req, &dscp, leaf);
if (code) return code;
--- 1612,1618 ----
clientchar_t leaf[LEAF_SIZE];
cm_req_t req;
! smb_InitReq(&req);
code = smb_ParseIoctlParent(ioctlp, userp, &req, &dscp, leaf);
if (code) return code;
***************
*** 1644,1650 ****
cm_scache_t *dscp;
cm_req_t req;
! cm_InitReq(&req);
code = smb_ParseIoctlPath(ioctlp, userp, &req, &dscp, 0);
if (code) return code;
--- 1631,1637 ----
cm_scache_t *dscp;
cm_req_t req;
! smb_InitReq(&req);
code = smb_ParseIoctlPath(ioctlp, userp, &req, &dscp, 0);
if (code) return code;
***************
*** 1662,1668 ****
cm_scache_t *dscp;
cm_req_t req;
! cm_InitReq(&req);
code = smb_ParseIoctlPath(ioctlp, userp, &req, &dscp, 0);
if (code) return code;
--- 1649,1655 ----
cm_scache_t *dscp;
cm_req_t req;
! smb_InitReq(&req);
code = smb_ParseIoctlPath(ioctlp, userp, &req, &dscp, 0);
if (code) return code;
***************
*** 1681,1687 ****
cm_scache_t *dscp;
cm_req_t req;
! cm_InitReq(&req);
code = smb_ParseIoctlPath(ioctlp, userp, &req, &dscp, 0);
if (code) return code;
--- 1668,1674 ----
cm_scache_t *dscp;
cm_req_t req;
! smb_InitReq(&req);
code = smb_ParseIoctlPath(ioctlp, userp, &req, &dscp, 0);
if (code) return code;
***************
*** 1803,1809 ****
cm_ioctlQueryOptions_t *optionsp;
afs_uint32 flags = 0;
! cm_InitReq(&req);
optionsp = cm_IoctlGetQueryOptions(&ioctlp->ioctl, userp);
if (optionsp && CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
--- 1790,1796 ----
cm_ioctlQueryOptions_t *optionsp;
afs_uint32 flags = 0;
! smb_InitReq(&req);
optionsp = cm_IoctlGetQueryOptions(&ioctlp->ioctl, userp);
if (optionsp && CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
***************
*** 1831,1837 ****
{
cm_req_t req;
! cm_InitReq(&req);
cm_SkipIoctlPath(&ioctlp->ioctl);
--- 1818,1824 ----
{
cm_req_t req;
! smb_InitReq(&req);
cm_SkipIoctlPath(&ioctlp->ioctl);
Index: openafs/src/WINNT/doc/install/Documentation/en_US/html/index.htm
diff -c openafs/src/WINNT/doc/install/Documentation/en_US/html/index.htm:1.5.4.35 openafs/src/WINNT/doc/install/Documentation/en_US/html/index.htm:1.5.4.36
*** openafs/src/WINNT/doc/install/Documentation/en_US/html/index.htm:1.5.4.35 Wed Jul 16 01:34:53 2008
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/index.htm Fri Jul 25 15:59:31 2008
***************
*** 57,63 ****
OpenAFS for Windows
! Version 1.5.50
--- 57,63 ----
OpenAFS for Windows
! Version 1.5.51
***************
*** 78,84 ****
·
OpenAFS for Windows 1.5.50
Release Notes
--- 78,84 ----
·
OpenAFS for Windows 1.5.51
Release Notes
Index: openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo.htm
diff -c openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo.htm:1.1.6.33 openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo.htm:1.1.6.34
*** openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo.htm:1.1.6.33 Wed Jul 16 01:34:56 2008
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo.htm Fri Jul 25 15:59:35 2008
***************
*** 18,24 ****
.shape {behavior:url(#default#VML);}
!
OpenAFS for Windows 1.5.50 Release Notes
! OpenAFS for Windows 1.5.51 Release Notes
! OpenAFS for Windows 1.5.50 Release Notes
! OpenAFS for Windows 1.5.51 Release Notes
! OpenAFS for Windows 1.5.50 (with Unicode Support)
Release Notes
The Andrew File System (AFS) is a location-independent
--- 1380,1386 ----
!
OpenAFS for Windows 1.5.51 (with Unicode Support)
Release Notes
The Andrew File System (AFS) is a location-independent
Index: openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/toc.htm
diff -c openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/toc.htm:1.2.6.34 openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/toc.htm:1.2.6.35
*** openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/toc.htm:1.2.6.34 Wed Jul 16 01:34:58 2008
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/toc.htm Fri Jul 25 15:59:37 2008
***************
*** 11,17 ****
!
OpenAFS for Windows 1.5.50 Table of Contents