RDBSS and SetFileInfo/DispositionInfo/DeleteFile=1 problem

Hi guys,

Did anybody see this behavior in RDBSS based miniredirectors? Here is the trace of events that I see in my redirector:

  1. Open (existing) file foo.bar (no delete on close flag set)
  2. Call SetFileInfo -> DispositionInfo -> DeleteFile = 1 (so, it’s this kind of file deletion)
  3. Open file foo.bar again (no cleanup for the previous FO so file didn’t get deleted)

And I end up with two different FCBs for foo.bar. So, it seems like RDBSS “thinks” that foo.bar has been deleted (although there were no cleanup at all on any FOs for this file) and creates a new FCB for it.
Since this is such a basic thing I tend to think that this is me who somehow does something wrong. But I can’t even imagine what. Can anybody shed any light on that?

Well, disassembling RDBSS code reveals that RDBSS indeed unconditionally (i.e. always!) removes FCB from its internale table (RxRemoveNameNetFcb) when DeleteFile=1 and that’s why second open creates new FCB even though file has not been deleted and there still is potential for deletion cancellation. To me this seems to be a bug in RDBSS which makes me wandering how SMB redirector avoids it…