CcSetFileSizes crashs in CcExtendVacbArray

Dear All,

I am running out of ideas now and I hope someone has a clue or can tell me
how I can proceed solving this problem, thanks.

My virtual FSD crashs the system if I do the following:

  • read or write a file and init the cache map for this file
  • close the file (I receive the cleanup, CC keeps its ref to the FO)
  • open the file again
  • issue a read and init the cache map for this new FO
  • issue a write which appends data

When appending the data I call CcSetFileSizes() to inform CC that the file
has been increased. At this point I get the following:

IRQL_NOT_LESS_OR_EQUAL (a)
Arguments:
Arg1: 00000000, memory referenced
Arg2: 00000002, IRQL
Arg3: 00000001, value 0 = read operation, 1 = write operation
Arg4: 8041598d, address which referenced memory

Details:
Write address 00000000, Nonpaged pool
Current IRQL 2
Faulting IP 8041598d ( ntoskrnl!CcExtendVacbArray+190 )

I call CcSetFileSizes() with the 2nd FO before calling CcCopyWrite(). If I
do not append data and therefore do not call CcSetFileSizes(), the
CcCopyWrite() results in the expected paging io with the 1st FO and nothing
crashs.

Also, if I do the append with the original FO (which initiated the caching
for this FCB) all works fine.

Moreover, If I skip the read and just start appending data it crashs few
writes later (at the same point), if do the read first, it crashs
immediately.

I am talking about W2K SP1. Driver Verifier is not blaming on me.

Well, I hope you can tell me: “Ah, you forgot to…” or at least what I
should look for now.

Thanks,
Detlef


You are currently subscribed to ntfsd as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com

Hi,

FYI:
I called CcSetAdditionalCacheAttributes() to disable write-behind. When I
remove this and just use FO_WRITE_THROUGH everything works fine.
In NT4 it works in any case.

Since CcSetAdditionalCacheAttributes() is documented as I used it, I presume
this is not my bug.

Regards,
Detlef

-----Original Message-----
From: xxxxx@gmx.de [mailto:xxxxx@gmx.de]
Sent: Wednesday, September 26, 2001 2:00 AM
To: File Systems Developers
Subject: [ntfsd] CcSetFileSizes crashs in CcExtendVacbArray

Dear All,

I am running out of ideas now and I hope someone has a clue or can tell me
how I can proceed solving this problem, thanks.

My virtual FSD crashs the system if I do the following:

  • read or write a file and init the cache map for this file
  • close the file (I receive the cleanup, CC keeps its ref to the FO)
  • open the file again
  • issue a read and init the cache map for this new FO
  • issue a write which appends data

When appending the data I call CcSetFileSizes() to inform CC that the file
has been increased. At this point I get the following:

IRQL_NOT_LESS_OR_EQUAL (a)
Arguments:
Arg1: 00000000, memory referenced
Arg2: 00000002, IRQL
Arg3: 00000001, value 0 = read operation, 1 = write operation
Arg4: 8041598d, address which referenced memory

Details:
Write address 00000000, Nonpaged pool
Current IRQL 2
Faulting IP 8041598d ( ntoskrnl!CcExtendVacbArray+190 )

I call CcSetFileSizes() with the 2nd FO before calling CcCopyWrite(). If I
do not append data and therefore do not call CcSetFileSizes(), the
CcCopyWrite() results in the expected paging io with the 1st FO and nothing
crashs.

Also, if I do the append with the original FO (which initiated the caching
for this FCB) all works fine.

Moreover, If I skip the read and just start appending data it crashs few
writes later (at the same point), if do the read first, it crashs
immediately.

I am talking about W2K SP1. Driver Verifier is not blaming on me.

Well, I hope you can tell me: “Ah, you forgot to…” or at least what I
should look for now.

Thanks,
Detlef


GMX - Die Kommunikationsplattform im Internet.
http://www.gmx.net


You are currently subscribed to ntfsd as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com