replace all DebugBreak() calls with osi_panic.
remove calls to cm_RecycleSCache from VNOVNODE handler as its not
lock safe to drop and re-obtain locks to adhere to the locking
hierarchy
restore reference to CM_SCACHESYNC_STOREDATA that should
not have been removed.
remove attempts to adhere to locking hierarching from cm_GetNewSCache.
dropping the cm_scacheLock is too dangerous
add a check to ensure that the scache refcount is not zero if there
is a valid smb_fid_t pointing to it.
more debug logging
still tracking down issues when large numbers of temporary files
are created and deleted in the same directory from multiple
machines.
VNOVNODE must return CM_ERROR_BADFD
ensure that all calls to cm_GetCallback are made from cm_SyncOp.
add CM_SCACHESYNC_FORCECB logic to cm_SyncOp so that it can be
removed from cm_GetAccess
don't mix CM_SCACHESYNC_NEEDCALLBACK with CM_SCACHESYNC_STOREDATA
or CM_SCACHESYNC_FETCHDATA
more cleanup from recent patches. comment out the recycling code because
it is not possible to implement it using the current locking hierarchy.
change cm_BufWrite to take a pointer to cm_scache_t instead of a fid
which must be used to look up a new reference to the cm_scache_t.
more often than not we already have the scp and in the one case we
don't we can let the caller look up the scp and then call cm_BufWrite
if it is found. If not, we have saved a function call and a bunch
of lock operations.
add a lot more logging.
improve the scp mutex handling within smb_CloseFID
Fix the following problems:
it is possible for a file to be created, buffers to become dirty from
writes, the file to be deleted, the stat cache entry to be reused, and
the dirty buffers to remain dirty until the end of time.
stat cache entry starvation can occur because of large numbers of dirty
buffers which take too long to be written to the file server. The
thread that writes dirty buffers in background writes/checks a small
number of buffers, SQRT(buf-count), and then sleeps for 5 seconds.
Writing all of the dirty buffers via this algorithm produces untimely
results.
threads can end up waiting for a callback on the same stat cache entry
even though there are no threads actually attempting to perform the
FetchStatus.
And:
Fix prototypes
Optimize cm_GetNewSCache to reuse scache entries for deleted files
and entries not in the hashtable before allocating a new one. This
keeps the entries in the hashtable to a minimum and thereby improving
performance for all other operations which must lookup a scache entry
by FID.
Add support for Sequential and Random Access flags