Windows: PrimaryVolumeWorkerThread Garbage Collect Fcb
authorJeffrey Altman <jaltman@your-file-system.com>
Tue, 27 Nov 2012 05:35:20 +0000 (00:35 -0500)
committerJeffrey Altman <jaltman@your-file-system.com>
Mon, 3 Dec 2012 21:59:29 +0000 (13:59 -0800)
commita428033bfe78c00dad84af9c14645723344297cf
tree53eaed691cd1940c94d2c83442f9b34b417d1767
parent8e68e08901b0ad003ad1e5114a155bfac83bdd83
Windows: PrimaryVolumeWorkerThread Garbage Collect Fcb

Revert commit cecd99abd3837ef820d78fb15e450c8688b0f39b.  Failing
to garbage collect the FCB from the ObjectInformationCB at the
earliest opportunity opens the door to a deadlock with Trend Micro's
anti-virus driver.  Trend Micro attempts to make a copy of the
file data each time a CcPurgeCacheSection() is performed on the
FCB.  If during AFSValidateEntry or AFSVerifyEntry a DirectoryCB->
ObjectInformationCB->FCB is discovered which has a non-NULL
SectionObjectPointers.DataSectionObject and the data version in
the DirEnumEntryCB differs from the ObjectInformationCB, a
CcPurgeCacheSection() call is performed while holding the
FCB->NPFcb->Resource exclusively.  Trend Micro will deadlock the
thread making the CcPurgeCacheSection() call when it attempts
to open the file in one of its worker threads.

Change-Id: I912f22ab3695ad8faf1edcdbf2d50ff9a76277db
Reviewed-on: http://gerrit.openafs.org/8529
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>
Tested-by: Jeffrey Altman <jaltman@your-file-system.com>
src/WINNT/afsrdr/kernel/lib/AFSWorker.cpp