#ifdef AFSIFS
int i;
#endif
+ if (!msgp)
+ msgp = "unspecified assert";
if (filep)
LogEvent(EVENTLOG_ERROR_TYPE, MSG_SERVICE_ERROR_STOP_WITH_MSG_AND_LOCATION,
osi_hyper_t thyper;
LARGE_INTEGER start, end;
- osi_assert(scp->dirBplus == NULL);
+ osi_assertx(scp->dirBplus == NULL, "cm_BPlusDirBuildTree called on non-empty tree");
lock_AssertWrite(&scp->dirlock);
void buf_HoldLocked(cm_buf_t *bp)
{
- osi_assert(bp->magic == CM_BUF_MAGIC);
+ osi_assertx(bp->magic == CM_BUF_MAGIC,"incorrect cm_buf_t magic");
bp->refCount++;
}
void buf_ReleaseLocked(cm_buf_t *bp)
{
/* ensure that we're in the LRU queue if our ref count is 0 */
- osi_assert(bp->magic == CM_BUF_MAGIC);
+ osi_assertx(bp->magic == CM_BUF_MAGIC,"incorrect cm_buf_t magic");
#ifdef DEBUG
if (bp->refCount == 0)
osi_panic("buf refcount 0",__FILE__,__LINE__);;
#else
- osi_assert(bp->refCount > 0);
+ osi_assertx(bp->refCount > 0, "cm_buf_t refCount == 0");
#endif
if (--bp->refCount == 0) {
if (!(bp->flags & CM_BUF_INLRU)) {
cm_data.buf_allp = NULL;
for (i=0; i<cm_data.buf_nbuffers; i++) {
- osi_assert(bp >= cm_data.bufHeaderBaseAddress && bp < (cm_buf_t *)cm_data.bufDataBaseAddress);
- osi_assert(data >= cm_data.bufDataBaseAddress && data < cm_data.bufEndOfData);
+ osi_assertx(bp >= cm_data.bufHeaderBaseAddress && bp < (cm_buf_t *)cm_data.bufDataBaseAddress,
+ "invalid cm_buf_t address");
+ osi_assertx(data >= cm_data.bufDataBaseAddress && data < cm_data.bufEndOfData,
+ "invalid cm_buf_t data address");
/* allocate and zero some storage */
memset(bp, 0, sizeof(cm_buf_t));
int release = 0;
if (scp)
- osi_assert(scp->magic == CM_SCACHE_MAGIC);
- osi_assert(bp->magic == CM_BUF_MAGIC);
+ osi_assertx(scp->magic == CM_SCACHE_MAGIC, "invalid cm_scache_t magic");
+ osi_assertx(bp->magic == CM_BUF_MAGIC, "invalid cm_buf_t magic");
while (1) {
/* if no IO is happening, we're done */
cm_scache_t * scp = NULL;
osi_hyper_t offset;
- osi_assert(bp->magic == CM_BUF_MAGIC);
+ osi_assertx(bp->magic == CM_BUF_MAGIC, "invalid cm_buf_t magic");
while ((bp->flags & CM_BUF_DIRTY) == CM_BUF_DIRTY) {
isdirty = 1;
cm_buf_t *tbp;
cm_buf_t *prevBp, *nextBp;
- osi_assert(bp->magic == CM_BUF_MAGIC);
+ osi_assertx(bp->magic == CM_BUF_MAGIC, "invalid cm_buf_t magic");
/* if we get here, we know that the buffer still has a 0 ref count,
* and that it is clean and has no currently pending I/O. This is
osi_Log3( buf_logp, "buf_Recycle recycles 0x%p, off 0x%x:%08x",
bp, bp->offset.HighPart, bp->offset.LowPart);
- osi_assert(bp->refCount == 0);
- osi_assert(!(bp->flags & (CM_BUF_READING | CM_BUF_WRITING | CM_BUF_DIRTY)));
+ osi_assertx(bp->refCount == 0, "cm_buf_t refcount != 0");
+ osi_assertx(!(bp->flags & (CM_BUF_READING | CM_BUF_WRITING | CM_BUF_DIRTY)),
+ "incorrect cm_buf_t flags");
lock_AssertWrite(&buf_globalLock);
if (bp->flags & CM_BUF_INHASH) {
*/
if (created) {
/* load the page; freshly created pages should be idle */
- osi_assert(!(bp->flags & (CM_BUF_READING | CM_BUF_WRITING)));
+ osi_assertx(!(bp->flags & (CM_BUF_READING | CM_BUF_WRITING)), "incorrect cm_buf_t flags");
/* start the I/O; may drop lock */
bp->flags |= CM_BUF_READING;
long buf_CleanAsync(cm_buf_t *bp, cm_req_t *reqp)
{
long code;
- osi_assert(bp->magic == CM_BUF_MAGIC);
+ osi_assertx(bp->magic == CM_BUF_MAGIC, "invalid cm_buf_t magic");
lock_ObtainMutex(&bp->mx);
code = buf_CleanAsyncLocked(bp, reqp);
/* wait for a buffer's cleaning to finish */
void buf_CleanWait(cm_scache_t * scp, cm_buf_t *bp)
{
- osi_assert(bp->magic == CM_BUF_MAGIC);
+ osi_assertx(bp->magic == CM_BUF_MAGIC, "invalid cm_buf_t magic");
lock_ObtainMutex(&bp->mx);
if (bp->flags & CM_BUF_WRITING) {
*/
void buf_SetDirty(cm_buf_t *bp, afs_uint32 offset, afs_uint32 length)
{
- osi_assert(bp->magic == CM_BUF_MAGIC);
- osi_assert(bp->refCount > 0);
+ osi_assertx(bp->magic == CM_BUF_MAGIC, "invalid cm_buf_t magic");
+ osi_assertx(bp->refCount > 0, "cm_buf_t refcount 0");
lock_ObtainWrite(&buf_globalLock);
if (bp->flags & CM_BUF_DIRTY) {
* visible again.
*/
bufferPos = sizep->LowPart & (cm_data.buf_blockSize - 1);
- osi_assert(bufferPos != 0);
+ osi_assertx(bufferPos != 0, "non-zero bufferPos");
memset(bufp->datap + bufferPos, 0,
cm_data.buf_blockSize - bufferPos);
}
#ifndef SIZE_MAX
#define SIZE_MAX UINT_MAX
#endif
- osi_assert(allocsize < SIZE_MAX);
+ osi_assertx(allocsize < SIZE_MAX, "allocsize >= SIZE_MAX");
#endif
*configCount = (afs_uint32)allocsize;
config->cacheConfig_val = t_config;
lock_ObtainWrite(&cm_callbackLock);
if (flags & CM_CALLBACK_MAINTAINCOUNT) {
- osi_assert(cm_activeCallbackGrantingCalls > 0);
+ osi_assertx(cm_activeCallbackGrantingCalls > 0,
+ "CM_CALLBACK_MAINTAINCOUNT && cm_activeCallbackGrantingCalls == 0");
}
else {
- osi_assert(cm_activeCallbackGrantingCalls-- > 0);
+ osi_assertx(cm_activeCallbackGrantingCalls-- > 0,
+ "!CM_CALLBACK_MAINTAINCOUNT && cm_activeCallbackGrantingCalls == 0");
}
if (cm_activeCallbackGrantingCalls == 0)
freeFlag = 1;
void cm_PutConn(cm_conn_t *connp)
{
lock_ObtainWrite(&cm_connLock);
- osi_assert(connp->refCount-- > 0);
+ osi_assertx(connp->refCount-- > 0, "cm_conn_t refcount 0");
lock_ReleaseWrite(&cm_connLock);
}
serviceID = 52;
}
else {
- osi_assert(serverp->type == CM_SERVER_FILE);
+ osi_assertx(serverp->type == CM_SERVER_FILE, "incorrect server type");
port = htons(7000);
serviceID = 1;
}
tcp->cryptlevel = rxkad_clear;
secObjp = rxnull_NewClientSecurityObject();
}
- osi_assert(secObjp != NULL);
+ osi_assertx(secObjp != NULL, "null rx_securityClass");
tcp->callp = rx_NewConnection(serverp->addr.sin_addr.s_addr,
port,
serviceID,
}
osi_QRemoveHT((osi_queue_t **) &cm_bkgListp, (osi_queue_t **) &cm_bkgListEndp, &rp->q);
- osi_assert(cm_bkgQueueCount-- > 0);
+ osi_assertx(cm_bkgQueueCount-- > 0, "cm_bkgQueueCount 0");
lock_ReleaseWrite(&cm_daemonLock);
osi_Log1(afsd_logp,"cm_BkgDaemon processing request 0x%p", rp);
/* creating IP Address Change monitor daemon */
phandle = thrd_Create((SecurityAttrib) 0, 0,
(ThreadFunc) cm_IpAddrDaemon, 0, 0, &pid, "cm_IpAddrDaemon");
- osi_assert(phandle != NULL);
+ osi_assertx(phandle != NULL, "cm_IpAddrDaemon thread creation failure");
thrd_CloseHandle(phandle);
/* creating pinging daemon */
phandle = thrd_Create((SecurityAttrib) 0, 0,
(ThreadFunc) cm_Daemon, 0, 0, &pid, "cm_Daemon");
- osi_assert(phandle != NULL);
+ osi_assertx(phandle != NULL, "cm_Daemon thread creation failure");
thrd_CloseHandle(phandle);
for(i=0; i < nDaemons; i++) {
phandle = thrd_Create((SecurityAttrib) 0, 0,
(ThreadFunc) cm_BkgDaemon, 0, 0, &pid,
"cm_BkgDaemon");
- osi_assert(phandle != NULL);
+ osi_assertx(phandle != NULL, "cm_BkgDaemon thread creation failure");
thrd_CloseHandle(phandle);
}
}
cm_bulkIO_t biod; /* bulk IO descriptor */
int require_64bit_ops = 0;
- osi_assert(userp != NULL);
- osi_assert(scp != NULL);
+ osi_assertx(userp != NULL, "null cm_user_t");
+ osi_assertx(scp != NULL, "null cm_scache_t");
/* now, the buffer may or may not be filled with good data (buf_GetNew
* drops lots of locks, and may indeed return a properly initialized
qdp = biod.bufListEndp;
else
qdp = (osi_queueData_t *) osi_QPrev(&qdp->q);
- osi_assert(qdp != NULL);
+ osi_assertx(qdp != NULL, "null osi_queueData_t");
bufp = osi_GetQData(qdp);
bufferp = bufp->datap;
wbytes = nbytes;
* our check above for nbytes being less than
* biod.length should ensure this.
*/
- osi_assert(bufferp != NULL);
+ osi_assertx(bufferp != NULL, "null cm_buf_t");
/* read rbytes of data */
rbytes = (nbytes > cm_data.buf_blockSize? cm_data.buf_blockSize : nbytes);
* all of the rest of the pages.
*/
/* bytes fetched */
- osi_assert((bufferp - tbufp->datap) < LONG_MAX);
+ osi_assertx((bufferp - tbufp->datap) < LONG_MAX, "data >= LONG_MAX");
rbytes = (long) (bufferp - tbufp->datap);
/* bytes left to zero */
/* Start the registry monitor */
phandle = thrd_Create(NULL, 65536, (ThreadFunc) cm_FreelanceChangeNotifier,
NULL, 0, &lpid, "cm_FreelanceChangeNotifier");
- osi_assert(phandle != NULL);
+ osi_assertx(phandle != NULL, "cm_FreelanceChangeNotifier thread create failure");
thrd_CloseHandle(phandle);
phandle = thrd_Create(NULL, 65536, (ThreadFunc) cm_FreelanceSymlinkChangeNotifier,
NULL, 0, &lpid, "cm_FreelanceSymlinkChangeNotifier");
- osi_assert(phandle != NULL);
+ osi_assertx(phandle != NULL, "cm_FreelanceSymlinkChangeNotifier thread create failure");
thrd_CloseHandle(phandle);
}
#endif
{
cellp = cm_FindCellByID(scp->fid.cell);
- osi_assert(cellp);
+ osi_assertx(cellp, "null cm_cell_t");
if (scp->flags & CM_SCACHEFLAG_RO) {
cm_ReleaseSCache(scp);
buf_CleanDirtyBuffers(scp);
} else {
/* look for things that shouldn't still be set */
- osi_assert(scp->bufWritesp == NULL);
- osi_assert(scp->bufReadsp == NULL);
+ osi_assertx(scp->bufWritesp == NULL, "non-null cm_scache_t bufWritesp");
+ osi_assertx(scp->bufReadsp == NULL, "non-null cm_scache_t bufReadsp");
}
#endif
scp;
scp = (cm_scache_t *) osi_QPrev(&scp->q))
{
- osi_assert(scp >= cm_data.scacheBaseAddress && scp < (cm_scache_t *)cm_data.scacheHashTablep);
+ osi_assertx(scp >= cm_data.scacheBaseAddress && scp < (cm_scache_t *)cm_data.scacheHashTablep,
+ "invalid cm_scache_t address");
if (scp->refCount == 0) {
if (scp->flags & CM_SCACHEFLAG_DELETED) {
* quota or we have a leak and need to allocate a new one to avoid panicing.
*/
scp = cm_data.scacheBaseAddress + cm_data.currentSCaches;
- osi_assert(scp >= cm_data.scacheBaseAddress && scp < (cm_scache_t *)cm_data.scacheHashTablep);
+ osi_assertx(scp >= cm_data.scacheBaseAddress && scp < (cm_scache_t *)cm_data.scacheHashTablep,
+ "invalid cm_scache_t address");
memset(scp, 0, sizeof(cm_scache_t));
scp->magic = CM_SCACHE_MAGIC;
lock_InitializeMutex(&scp->mx, "cm_scache_t mutex");
hash = CM_SCACHE_HASH(fidp);
- osi_assert(fidp->cell != 0);
+ osi_assertx(fidp->cell != NULL, "null cm_cell_t");
if (fidp->cell== cm_data.rootFid.cell &&
fidp->volume==cm_data.rootFid.volume &&
osi_Log1(afsd_logp,"cm_GetSCache (3) outScpp 0x%p", scp);
#endif
cm_HoldSCacheNoLock(scp);
- osi_assert(scp->volp == volp);
+ osi_assertx(scp->volp == volp, "cm_scache_t volume has unexpected value");
cm_AdjustScacheLRU(scp);
lock_ReleaseWrite(&cm_scacheLock);
if (volp)
}
osi_Log2(afsd_logp,"cm_GetNewSCache returns scp 0x%x flags 0x%x", scp, scp->flags);
- osi_assert(!(scp->flags & CM_SCACHEFLAG_INHASH));
+ osi_assertx(!(scp->flags & CM_SCACHEFLAG_INHASH), "CM_SCACHEFLAG_INHASH set");
#if not_too_dangerous
/* dropping the cm_scacheLock allows more than one thread
}
}
- osi_assert(w != NULL);
+ osi_assertx(w != NULL, "null cm_scache_waiter_t");
this_is_me = (w->threadId == thrd_Current());
lock_ReleaseRead(&cm_scacheLock);
bufLocked = flags & CM_SCACHESYNC_BUFLOCKED;
if (bufp)
- osi_assert(bufp->refCount > 0);
+ osi_assertx(bufp->refCount > 0, "cm_buf_t refCount 0");
/* Do the access check. Now we don't really do the access check
if (rights) {
/* can't check access rights without a callback */
- osi_assert(flags & CM_SCACHESYNC_NEEDCALLBACK);
+ osi_assertx(flags & CM_SCACHESYNC_NEEDCALLBACK, "!CM_SCACHESYNC_NEEDCALLBACK");
if ((rights & PRSFS_WRITE) && (scp->flags & CM_SCACHEFLAG_RO))
return CM_ERROR_READONLY;
if (bufp) {
for(qdp = scp->bufReadsp; qdp; qdp = (osi_queueData_t *) osi_QNext(&qdp->q)) {
tbufp = osi_GetQData(qdp);
- osi_assert(tbufp != bufp);
+ osi_assertx(tbufp != bufp, "unexpected cm_buf_t value");
}
}
if (bufp) {
for(qdp = scp->bufWritesp; qdp; qdp = (osi_queueData_t *) osi_QNext(&qdp->q)) {
tbufp = osi_GetQData(qdp);
- osi_assert(tbufp != bufp);
+ osi_assertx(tbufp != bufp, "unexpected cm_buf_t value");
}
}
if (flags & CM_SCACHESYNC_WRITE) {
if (bufp) {
- osi_assert(bufp->cmFlags & CM_BUF_CMWRITING);
+ osi_assertx(bufp->cmFlags & CM_BUF_CMWRITING, "!CM_BUF_CMWRITING");
bufp->cmFlags &= ~CM_BUF_CMWRITING;
}
void cm_HoldSCacheNoLock(cm_scache_t *scp)
#endif
{
- osi_assert(scp != 0);
+ osi_assertx(scp != NULL, "null cm_scache_t");
scp->refCount++;
#ifdef DEBUG_REFCOUNT
osi_Log2(afsd_logp,"cm_HoldSCacheNoLock scp 0x%p ref %d",scp, scp->refCount);
void cm_HoldSCache(cm_scache_t *scp)
#endif
{
- osi_assert(scp != 0);
+ osi_assertx(scp != NULL, "null cm_scache_t");
lock_ObtainWrite(&cm_scacheLock);
scp->refCount++;
#ifdef DEBUG_REFCOUNT
void cm_ReleaseSCacheNoLock(cm_scache_t *scp)
#endif
{
- osi_assert(scp != NULL);
+ osi_assertx(scp != NULL, "null cm_scache_t");
if (scp->refCount == 0)
osi_Log1(afsd_logp,"cm_ReleaseSCacheNoLock about to panic scp 0x%x",scp);
- osi_assert(scp->refCount-- >= 0);
+ osi_assertx(scp->refCount-- >= 0, "cm_scache_t refCount 0");
#ifdef DEBUG_REFCOUNT
osi_Log2(afsd_logp,"cm_ReleaseSCacheNoLock scp 0x%p ref %d",scp,scp->refCount);
afsi_log("%s:%d cm_ReleaseSCacheNoLock scp 0x%p ref %d", file, line, scp, scp->refCount);
void cm_ReleaseSCache(cm_scache_t *scp)
#endif
{
- osi_assert(scp != NULL);
+ osi_assertx(scp != NULL, "null cm_scache_t");
lock_ObtainWrite(&cm_scacheLock);
if (scp->refCount == 0)
osi_Log1(afsd_logp,"cm_ReleaseSCache about to panic scp 0x%x",scp);
- osi_assert(scp->refCount != 0);
+ osi_assertx(scp->refCount != 0, "cm_scache_t refCount 0");
scp->refCount--;
#ifdef DEBUG_REFCOUNT
osi_Log2(afsd_logp,"cm_ReleaseSCache scp 0x%p ref %d",scp,scp->refCount);
hash = CM_SCACHE_HASH(fidp);
- osi_assert(fidp->cell != 0);
+ osi_assertx(fidp->cell != NULL, "null cm_cell_t");
lock_ObtainWrite(&cm_scacheLock);
for (scp=cm_data.scacheHashTablep[hash]; scp; scp=scp->nextp) {
void cm_PutServer(cm_server_t *serverp)
{
lock_ObtainWrite(&cm_serverLock);
- osi_assert(serverp->refCount-- > 0);
+ osi_assertx(serverp->refCount-- > 0, "cm_server_t refCount 0");
lock_ReleaseWrite(&cm_serverLock);
}
void cm_PutServerNoLock(cm_server_t *serverp)
{
- osi_assert(serverp->refCount-- > 0);
+ osi_assertx(serverp->refCount-- > 0, "cm_server_t refCount 0");
}
void cm_SetServerNo64Bit(cm_server_t * serverp, int no64bit)
cm_server_t *cm_NewServer(struct sockaddr_in *socketp, int type, cm_cell_t *cellp) {
cm_server_t *tsp;
- osi_assert(socketp->sin_family == AF_INET);
+ osi_assertx(socketp->sin_family == AF_INET, "unexpected socket family");
tsp = malloc(sizeof(*tsp));
if (tsp) {
{
cm_server_t *tsp;
- osi_assert(addrp->sin_family == AF_INET);
+ osi_assertx(addrp->sin_family == AF_INET, "unexpected socket value");
lock_ObtainWrite(&cm_serverLock);
for (tsp = cm_allServersp; tsp; tsp=tsp->allNextp) {
return;
lock_ObtainWrite(&cm_userLock);
- osi_assert(userp->refCount-- > 0);
+ osi_assertx(userp->refCount-- > 0, "cm_user_t refCount 0");
if (userp->refCount == 0) {
lock_FinalizeMutex(&userp->mx);
for (ucp = userp->cellInfop; ucp; ucp = ncp) {
void cm_ReleaseUserVCRef(cm_user_t *userp)
{
lock_ObtainMutex(&userp->mx);
- osi_assert(userp->vcRefs-- > 0);
+ osi_assertx(userp->vcRefs-- > 0, "cm_user_t refCount 0");
lock_ReleaseMutex(&userp->mx);
}
long rights;
long code;
- osi_assert(ldpp != NULL);
+ osi_assertx(ldpp != NULL, "null cm_lock_data_t");
*ldpp = NULL;
/* Always allow delete; the RPC will tell us if it's OK */
osi_Log1(afsd_logp, "cm_TryBulkStat dir 0x%p", dscp);
/* should be on a buffer boundary */
- osi_assert((offsetp->LowPart & (cm_data.buf_blockSize - 1)) == 0);
+ osi_assertx((offsetp->LowPart & (cm_data.buf_blockSize - 1)) == 0, "invalid offset");
memset(&bb, 0, sizeof(bb));
bb.bufOffset = *offsetp;
osi_QRemove(&cm_freeFileLocks, &l->q);
} else {
l = malloc(sizeof(cm_file_lock_t));
- osi_assert(l);
+ osi_assertx(l, "null cm_file_lock_t");
}
memset(l, 0, sizeof(cm_file_lock_t));
rights |= PRSFS_WRITE | PRSFS_LOCK;
else {
/* hmmkay */
- osi_assert(FALSE);
+ osi_assertx(FALSE, "invalid lock type");
return 0;
}
newLock = Which;
/* am I sane? */
- osi_assert(newLock == LockRead);
+ osi_assertx(newLock == LockRead, "lock type not read");
code = cm_IntSetLock(scp, userp, newLock, reqp);
}
fileLock->scp->fid.volume,
fileLock->scp->fid.vnode,
fileLock->scp->fid.unique);
- osi_assert(FALSE);
+ osi_assertx(FALSE, "invalid fid value");
}
#endif
fileLock->scp->fid.volume,
fileLock->scp->fid.vnode,
fileLock->scp->fid.unique);
- osi_assert(FALSE);
+ osi_assertx(FALSE, "invalid fid value");
}
#endif
if (!IS_LOCK_DELETED(fileLock) &&
#ifdef DEBUG
/* With the current code, we can't lose a lock on a RO scp */
- osi_assert(!(scp->flags & CM_SCACHEFLAG_RO));
+ osi_assertx(!(scp->flags & CM_SCACHEFLAG_RO), "CM_SCACHEFLAG_RO unexpected");
#endif
/* cm_scacheLock needed because we are modifying fileLock->flags */
/* Server locks must have been enabled for us to have
received an active non-client-only lock. */
- osi_assert(cm_enableServerLocks);
+ osi_assertx(cm_enableServerLocks, "!cm_enableServerLocks");
scp = fileLock->scp;
- osi_assert(scp != NULL);
+ osi_assertx(scp != NULL, "null cm_scache_t");
cm_HoldSCacheNoLock(scp);
fileLock->scp->fid.volume,
fileLock->scp->fid.vnode,
fileLock->scp->fid.unique);
- osi_assert(FALSE);
+ osi_assertx(FALSE, "invalid fid");
}
#endif
/* Server locks are extended once per scp per refresh
scp = oldFileLock->scp;
- osi_assert(scp != NULL);
+ osi_assertx(scp != NULL, "null cm_scache_t");
lock_ReleaseRead(&cm_scacheLock);
lock_ObtainMutex(&scp->mx);
oldFileLock->flags |= CM_FILELOCK_FLAG_WAITLOCK;
}
- osi_assert(IS_LOCK_WAITLOCK(oldFileLock));
+ osi_assertx(IS_LOCK_WAITLOCK(oldFileLock), "!IS_LOCK_WAITLOCK");
if (force_client_lock ||
!SERVERLOCKS_ENABLED(scp) ||
if (scp->serverLock == LockRead) {
- osi_assert(newLock == LockWrite);
+ osi_assertx(newLock == LockWrite, "!LockWrite");
osi_Log0(afsd_logp, " Attempting to UPGRADE from LockRead to LockWrite");
cm_key_t cm_GenerateKey(unsigned int session_id, unsigned long process_id, unsigned int file_id)
{
#ifdef DEBUG
- osi_assert((process_id & 0xffffffff) == process_id);
- osi_assert((session_id & 0xffff) == session_id);
- osi_assert((file_id & 0xffff) == file_id);
+ osi_assertx((process_id & 0xffffffff) == process_id, "unexpected process_id");
+ osi_assertx((session_id & 0xffff) == session_id, "unexpected session_id");
+ osi_assertx((file_id & 0xffff) == file_id, "unexpected file_id");
#endif
return
if ( !tsp->cellp )
tsp->cellp = cellp;
- osi_assert(tsp != NULL);
+ osi_assertx(tsp != NULL, "null cm_server_t");
/* and add it to the list(s). */
/*
}
#ifdef SEARCH_ALL_VOLUMES
- osi_assert(volp == volp2);
+ osi_assertx(volp == volp2, "unexpected cm_vol_t");
#endif
lock_ReleaseRead(&cm_volumeLock);
}
#ifdef SEARCH_ALL_VOLUMES
- osi_assert(volp2 == volp);
+ osi_assertx(volp2 == volp, "unexpected cm_vol_t");
#endif
if (!volp && (flags & CM_GETVOL_FLAG_CREATE)) {
}
#ifdef SEARCH_ALL_VOLUMES
- osi_assert(volp == volp2);
+ osi_assertx(volp == volp2, "unexpected cm_vol_t");
#endif
lock_ReleaseRead(&cm_volumeLock);
void cm_PutVolume(cm_volume_t *volp)
{
lock_ObtainWrite(&cm_volumeLock);
- osi_assert(volp->refCount-- > 0);
+ osi_assertx(volp->refCount-- > 0, "cm_volume_t refCount 0");
lock_ReleaseWrite(&cm_volumeLock);
}
lock_ReleaseMutex(&volp->mx);
lock_ObtainWrite(&cm_volumeLock);
- osi_assert(volp->refCount-- > 0);
+ osi_assertx(volp->refCount-- > 0, "cm_volume_t refCount 0");
}
lock_ReleaseWrite(&cm_volumeLock);
cm_CheckOfflineVolume(volp, 0);
lock_ObtainWrite(&cm_volumeLock);
- osi_assert(volp->refCount-- > 0);
+ osi_assertx(volp->refCount-- > 0, "cm_volume_t refCount 0");
}
lock_ReleaseWrite(&cm_volumeLock);
}
lock_ReleaseMutex(&volp->mx);
lock_ObtainWrite(&cm_volumeLock);
- osi_assert(volp->refCount-- > 0);
+ osi_assertx(volp->refCount-- > 0, "cm_volume_t refCount 0");
}
lock_ReleaseWrite(&cm_volumeLock);
}
{
time_t diff_t = unixTime - smb_localZero;
#if defined(DEBUG) && !defined(_USE_32BIT_TIME_T)
- osi_assert(diff_t < _UI32_MAX);
+ osi_assertx(diff_t < _UI32_MAX, "time_t > _UI32_MAX");
#endif
*dosUTimep = (afs_uint32)diff_t;
}
if (nts != STATUS_SUCCESS)
osi_Log4(smb_logp,"MsV1_0Lm20ChallengeRequest failure: nts 0x%x ntsEx 0x%x respSize is %u needs %u",
nts, ntsEx, sizeof(lsaReq), lsaRespSize);
- osi_assert(nts == STATUS_SUCCESS); /* this had better work! */
+ osi_assertx(nts == STATUS_SUCCESS, "LsaCallAuthenticationPackage failed"); /* this had better work! */
memcpy(vcp->encKey, lsaResp->ChallengeToClient, MSV1_0_CHALLENGE_LENGTH);
LsaFreeReturnBuffer(lsaResp);
userp = NULL;
lock_ObtainWrite(&smb_rctLock);
- osi_assert(tidp->refCount-- > 0);
+ osi_assertx(tidp->refCount-- > 0, "smb_tid_t refCount 0");
if (tidp->refCount == 0 && (tidp->delete)) {
ltpp = &tidp->vcp->tidsp;
for(tp = *ltpp; tp; ltpp = &tp->nextp, tp = *ltpp) {
if (tp == tidp)
break;
}
- osi_assert(tp != NULL);
+ osi_assertx(tp != NULL, "null smb_tid_t");
*ltpp = tp->nextp;
lock_FinalizeMutex(&tidp->mx);
userp = tidp->userp; /* remember to drop ref later */
time_t now = osi_Time();
lock_ObtainWrite(&smb_rctLock);
- osi_assert(unp->refCount-- > 0);
+ osi_assertx(unp->refCount-- > 0, "smb_username_t refCount 0");
if (unp->refCount == 0 && !(unp->flags & SMB_USERNAMEFLAG_AFSLOGON) &&
(unp->flags & SMB_USERNAMEFLAG_LOGOFF)) {
lupp = &usernamesp;
if (up == unp)
break;
}
- osi_assert(up != NULL);
+ osi_assertx(up != NULL, "null smb_username_t");
*lupp = up->nextp;
up->nextp = NULL; /* do not remove this */
lock_FinalizeMutex(&unp->mx);
smb_username_t *unp = NULL;
lock_ObtainWrite(&smb_rctLock);
- osi_assert(uidp->refCount-- > 0);
+ osi_assertx(uidp->refCount-- > 0, "smb_user_t refCount 0");
if (uidp->refCount == 0) {
lupp = &uidp->vcp->usersp;
for(up = *lupp; up; lupp = &up->nextp, up = *lupp) {
if (up == uidp)
break;
}
- osi_assert(up != NULL);
+ osi_assertx(up != NULL, "null smb_user_t");
*lupp = up->nextp;
lock_FinalizeMutex(&uidp->mx);
unp = uidp->unp;
lock_ObtainMutex(&fidp->mx);
lock_ObtainWrite(&smb_rctLock);
- osi_assert(fidp->refCount-- > 0);
+ osi_assertx(fidp->refCount-- > 0, "smb_fid_t refCount 0");
if (fidp->refCount == 0 && (fidp->delete)) {
vcp = fidp->vcp;
fidp->vcp = NULL;
cm_scache_t *scp = NULL;
lock_ObtainMutex(&dsp->mx);
- osi_assert(dsp->refCount-- > 0);
+ osi_assertx(dsp->refCount-- > 0, "cm_scache_t refCount 0");
if (dsp->refCount == 0 && (dsp->flags & SMB_DIRSEARCH_DELETE)) {
if (&dsp->q == (osi_queue_t *) smb_lastDirSearchp)
smb_lastDirSearchp = (smb_dirSearch_t *) osi_QPrev(&smb_lastDirSearchp->q);
tbp->spacep = NULL;
}
- osi_assert(tbp->magic == SMB_PACKETMAGIC);
+ osi_assertx(tbp->magic == SMB_PACKETMAGIC, "invalid smb_packet_t magic");
return tbp;
}
tbp->magic = SMB_NCBMAGIC;
}
- osi_assert(tbp->magic == SMB_NCBMAGIC);
+ osi_assertx(tbp->magic == SMB_NCBMAGIC, "invalid smb_packet_t magic");
memset(&tbp->ncb, 0, sizeof(NCB));
ncbp = &tbp->ncb;
void smb_FreePacket(smb_packet_t *tbp)
{
smb_vc_t * vcp = NULL;
- osi_assert(tbp->magic == SMB_PACKETMAGIC);
+ osi_assertx(tbp->magic == SMB_PACKETMAGIC, "invalid smb_packet_t magic");
lock_ObtainWrite(&smb_globalLock);
tbp->nextp = smb_packetFreeListp;
smb_ncb_t *tbp;
tbp = (smb_ncb_t *) bufferp;
- osi_assert(tbp->magic == SMB_NCBMAGIC);
+ osi_assertx(tbp->magic == SMB_NCBMAGIC, "invalid smb_packet_t magic");
lock_ObtainWrite(&smb_globalLock);
tbp->nextp = smb_ncbFreeListp;
if (wl->state == SMB_WAITINGLOCKSTATE_DONE)
continue;
- osi_assert(wl->state != SMB_WAITINGLOCKSTATE_ERROR);
+ osi_assertx(wl->state != SMB_WAITINGLOCKSTATE_ERROR, "!SMB_WAITINGLOCKSTATE_ERROR");
/* wl->state is either _DONE or _WAITING. _ERROR
would no longer be on the queue. */
/* pull pathname and stat block out of request */
tp = smb_GetSMBData(inp, NULL);
pathp = smb_ParseASCIIBlock(tp, (char **) &tp);
- osi_assert(pathp != NULL);
+ osi_assertx(pathp != NULL, "null path");
if (smb_StoreAnsiFilenames)
OemToChar(pathp,pathp);
statBlockp = smb_ParseVblBlock(tp, (char **) &tp, &statLen);
- osi_assert(statBlockp != NULL);
+ osi_assertx(statBlockp != NULL, "null statBlock");
if (statLen == 0) {
statBlockp = initStatBlock;
statBlockp[0] = 8;
* Deduct for them and fill in the length field.
*/
temp -= 3; /* deduct vbl block info */
- osi_assert(temp == (43 * returnedNames));
+ osi_assertx(temp == (43 * returnedNames), "unexpected data length");
origOp[1] = (char)(temp & 0xff);
origOp[2] = (char)((temp>>8) & 0xff);
if (returnedNames == 0)
}
fidp = smb_FindFID(vcp, 0, SMB_FLAG_CREATE);
- osi_assert(fidp);
+ osi_assertx(fidp, "null smb_fid_t");
/* save a pointer to the vnode */
fidp->scp = scp;
fidp->NTopen_pathp = NULL;
fidp->flags &= ~SMB_FID_NTOPEN;
} else {
- osi_assert(fidp->NTopen_dscp == NULL);
- osi_assert(fidp->NTopen_pathp == NULL);
+ osi_assertx(fidp->NTopen_dscp == NULL, "null NTopen_dsc");
+ osi_assertx(fidp->NTopen_pathp == NULL, "null NTopen_path");
}
if (fidp->NTopen_wholepathp) {
/* now all we have to do is open the file itself */
fidp = smb_FindFID(vcp, 0, SMB_FLAG_CREATE);
- osi_assert(fidp);
+ osi_assertx(fidp, "null smb_fid_t");
cm_HoldUser(userp);
{
/* this is fatal - log as much as possible */
osi_Log1(smb_logp, "Fatal: NCBevents idx [ %d ] out of range.\n", idx);
- osi_assert(0);
+ osi_assertx(0, "invalid index");
}
thrd_ResetEvent(NCBevents[idx]);
{
/* this is fatal - log as much as possible */
osi_Log1(smb_logp, "Fatal: session idx [ %d ] out of range.\n", idx_session);
- osi_assert(0);
+ osi_assertx(0, "invalid index");
}
/* Get an NCB */
{
/* this is fatal - log as much as possible */
osi_Log1(smb_logp, "Fatal: idx_NCB [ %d ] out of range.\n", idx_NCB);
- osi_assert(0);
+ osi_assertx(0, "invalid index");
}
/* Link them together */
{
/* this is fatal - log as much as possible */
osi_Log1(smb_logp, "Fatal: idx_NCB %d out of range.\n", idx_NCB);
- osi_assert(0);
+ osi_assertx(0, "invalid index");
}
ncbp = NCBs[idx_NCB];
int i;
char eventName[MAX_PATH];
- osi_assert( idx < (sizeof(NCBs) / sizeof(NCBs[0])) );
+ osi_assertx( idx < (sizeof(NCBs) / sizeof(NCBs[0])), "invalid index" );
NCBs[idx] = GetNCB();
sprintf(eventName,"NCBavails[%d]", idx);
* we should probably want to wait for a session to be freed in case
* we run out.
*/
- osi_assert(session < SESSION_MAX - 1);
- osi_assert(numNCBs < NCB_MAX - 1); /* if we pass this test we can allocate one more */
+ osi_assertx(session < SESSION_MAX - 1, "invalid session");
+ osi_assertx(numNCBs < NCB_MAX - 1, "invalid numNCBs"); /* if we pass this test we can allocate one more */
lock_ObtainMutex(&vcp->mx);
vcp->session = session;
}
}
- osi_assert(lana_list.length >= 0);
+ osi_assertx(lana_list.length >= 0, "empty lana list");
if (!lana_found) {
afsi_log("No valid LANA numbers found!");
lana_list.length = 0;
continue;
phandle = thrd_Create(NULL, 65536, (ThreadFunc) smb_Listener,
(void*)lana_list.lana[i], 0, &lpid, "smb_Listener");
- osi_assert(phandle != NULL);
+ osi_assertx(phandle != NULL, "smb_Listener thread creation failure");
thrd_CloseHandle(phandle);
}
}
phandle = thrd_Create(NULL, 65536, (ThreadFunc) smb_ClientWaiter,
NULL, 0, &lpid, "smb_ClientWaiter");
- osi_assert(phandle != NULL);
+ osi_assertx(phandle != NULL, , "smb_ClientWaiter thread creation failure");
thrd_CloseHandle(phandle);
phandle = thrd_Create(NULL, 65536, (ThreadFunc) smb_ServerWaiter,
NULL, 0, &lpid, "smb_ServerWaiter");
- osi_assert(phandle != NULL);
+ osi_assertx(phandle != NULL, "smb_ServerWaiter thread creation failure");
thrd_CloseHandle(phandle);
for (i=0; i<smb_NumServerThreads; i++) {
phandle = thrd_Create(NULL, 65536, (ThreadFunc) smb_Server,
(void *) i, 0, &lpid, "smb_Server");
- osi_assert(phandle != NULL);
+ osi_assertx(phandle != NULL, "smb_Server thread creation failure");
thrd_CloseHandle(phandle);
}
phandle = thrd_Create(NULL, 65536, (ThreadFunc) smb_Daemon,
NULL, 0, &lpid, "smb_Daemon");
- osi_assert(phandle != NULL);
+ osi_assertx(phandle != NULL, "smb_Daemon thread creation failure");
thrd_CloseHandle(phandle);
phandle = thrd_Create(NULL, 65536, (ThreadFunc) smb_WaitingLocksDaemon,
NULL, 0, &lpid, "smb_WaitingLocksDaemon");
- osi_assert(phandle != NULL);
+ osi_assertx(phandle != NULL, "smb_WaitingLocksDaemon thread creation failure");
thrd_CloseHandle(phandle);
return;
/* don't create if not found */
if (dscp)
cm_ReleaseSCache(dscp);
- osi_assert(scp == NULL);
+ osi_assertx(scp == NULL, "null cm_scache_t");
cm_ReleaseUser(userp);
smb_FreeTran2Packet(outp);
return CM_ERROR_NOSUCHFILE;
}
else {
- osi_assert(dscp != NULL && scp == NULL);
+ osi_assertx(dscp != NULL && scp == NULL, "null dsc || non-null sc");
openAction = 2; /* created file */
setAttr.mask = CM_ATTRMASK_CLIENTMODTIME;
smb_UnixTimeFromSearchTime(&setAttr.clientModTime, dosTime);
/* now all we have to do is open the file itself */
fidp = smb_FindFID(vcp, 0, SMB_FLAG_CREATE);
- osi_assert(fidp);
+ osi_assertx(fidp, "null smb_fid_t");
cm_HoldUser(userp);
lock_ObtainMutex(&fidp->mx);
cm_InitReq(&req);
eos = 0;
- osi_assert(p->opcode == 1);
+ osi_assertx(p->opcode == 1, "invalid opcode");
/* find first; obtain basic parameters from request */
strcpy(dsp->mask, maskp); /* and save mask */
}
else {
- osi_assert(p->opcode == 2);
+ osi_assertx(p->opcode == 2, "invalid opcode");
/* find next; obtain basic parameters from request or open dir file */
dsp = smb_FindDirSearch(p->parmsp[0]);
maxCount = p->parmsp[1];
return CM_ERROR_NOSUCHFILE;
}
else {
- osi_assert(dscp != NULL);
+ osi_assertx(dscp != NULL, "null cm_scache_t");
osi_Log1(smb_logp, "smb_ReceiveV3OpenX creating file %s",
osi_LogSaveString(smb_logp, lastNamep));
openAction = 2; /* created file */
/* now all we have to do is open the file itself */
fidp = smb_FindFID(vcp, 0, SMB_FLAG_CREATE);
- osi_assert(fidp);
+ osi_assertx(fidp, "null smb_fid_t");
cm_HoldUser(userp);
lock_ObtainMutex(&fidp->mx);
wlRequest = malloc(sizeof(smb_waitingLockRequest_t));
- osi_assert(wlRequest != NULL);
+ osi_assertx(wlRequest != NULL, "null wlRequest");
wlRequest->vcp = vcp;
smb_HoldVC(vcp);
wLock = malloc(sizeof(smb_waitingLock_t));
- osi_assert(wLock != NULL);
+ osi_assertx(wLock != NULL, "null smb_waitingLock_t");
wLock->key = tkey;
wLock->LOffset = tOffset;
wLock = malloc(sizeof(smb_waitingLock_t));
- osi_assert(wLock != NULL);
+ osi_assertx(wLock != NULL, "null smb_waitingLock_t");
wLock->key = key;
wLock->LOffset = LOffset;
code = 0;
while (code == 0 && scp->fileType == CM_SCACHETYPE_SYMLINK) {
targetScp = 0;
- osi_assert(dscp != NULL);
+ osi_assertx(dscp != NULL, "null cm_scache_t");
code = cm_EvaluateSymLink(dscp, scp, &targetScp, userp, &req);
if (code == 0) {
/* we have a more accurate file to use (the
free(realPathp);
return CM_ERROR_NOSUCHFILE;
} else if (realDirFlag == 0 || realDirFlag == -1) {
- osi_assert(dscp != NULL);
+ osi_assertx(dscp != NULL, "null cm_scache_t");
osi_Log1(smb_logp, "smb_ReceiveNTCreateX creating file %s",
osi_LogSaveString(smb_logp, lastNamep));
openAction = 2; /* created file */
/* create directory */
if ( !treeCreate )
treeStartp = lastNamep;
- osi_assert(dscp != NULL);
+ osi_assertx(dscp != NULL, "null cm_scache_t");
osi_Log1(smb_logp, "smb_ReceiveNTCreateX creating directory [%s]",
osi_LogSaveString(smb_logp, treeStartp));
openAction = 2; /* created directory */
/* open the file itself */
fidp = smb_FindFID(vcp, 0, SMB_FLAG_CREATE);
- osi_assert(fidp);
+ osi_assertx(fidp, "null smb_fid_t");
/* save a reference to the user */
cm_HoldUser(userp);
return CM_ERROR_NOSUCHFILE;
}
else if (realDirFlag == 0 || realDirFlag == -1) {
- osi_assert(dscp != NULL);
+ osi_assertx(dscp != NULL, "null cm_scache_t");
osi_Log1(smb_logp, "smb_ReceiveNTTranCreate creating file %s",
osi_LogSaveString(smb_logp, lastNamep));
openAction = 2; /* created file */
}
} else {
/* create directory */
- osi_assert(dscp != NULL);
+ osi_assertx(dscp != NULL, "null cm_scache_t");
osi_Log1(smb_logp,
"smb_ReceiveNTTranCreate creating directory %s",
osi_LogSaveString(smb_logp, lastNamep));
/* open the file itself */
fidp = smb_FindFID(vcp, 0, SMB_FLAG_CREATE);
- osi_assert(fidp);
+ osi_assertx(fidp, "null smb_fid_t");
/* save a reference to the user */
cm_HoldUser(userp);
uidp = smb_FindUID(vcp, ((smb_t *)inp)->uid, 0);
userp = smb_GetUserFromUID(uidp);
- osi_assert(userp != 0);
+ osi_assertx(userp != NULL, "null cm_user_t");
iop->uidp = uidp;
if (uidp && uidp->unp) {
osi_Log3(afsd_logp, "Ioctl uid %d user %x name %s",