Hi!
I've made a data decompressing file system filter driver based on sfilter. I perform decompressing during processing of IRP_MJ_READ, this is done by generating own IRP_MJ_READ packets and sending them to the underlying filter, after I get enough data I decompress it, fill the buffer of the original IRP_MJ_READ request and complete it.
I get the endless loop:
59 10:57:55 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 6144 Length: 131072
60 10:57:55 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 6144 Length: 131072
61 10:57:55 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 13312 Length: 262144
62 10:57:55 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 13312 Length: 262144
63 10:57:56 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 26624 Length: 262144
64 10:57:56 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 26624 Length: 262144
65 10:57:58 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 28672 Length: 262144
66 10:57:58 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 28672 Length: 262144
67 10:57:59 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 28672 Length: 262144
68 10:57:59 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 28672 Length: 262144
69 10:58:00 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 28672 Length: 262144
70 10:58:00 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 28672 Length: 262144
71 10:58:02 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 28672 Length: 262144
72 10:58:02 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 28672 Length: 262144
......
And so on.
Also the driver changes file sizes in IRP_MJ_DIRECTORY_CONTROL and IRP_MJ_QUERY_INFORMATION so a user see decompressed sizes.
The driver filters CDFS only.
What can be the reason for that?
Thanks.
Do you return STATUS_END_OF_FILE when the read extends or starts beyond end of the file?
–
Slava Imameyev, xxxxx@hotmail.com
“Roman Kudinov” wrote in message news:xxxxx@ntfsd…
Hi!
I’ve made a data decompressing file system filter driver based on sfilter. I perform decompressing during processing of IRP_MJ_READ, this is done by generating own IRP_MJ_READ packets and sending them to the underlying filter, after I get enough data I decompress it, fill the buffer of the original IRP_MJ_READ request and complete it.
I get the endless loop:
-------------------------------------------------------------------------------------------------------------
59 10:57:55 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 6144 Length: 131072
60 10:57:55 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 6144 Length: 131072
61 10:57:55 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 13312 Length: 262144
62 10:57:55 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 13312 Length: 262144
63 10:57:56 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 26624 Length: 262144
64 10:57:56 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 26624 Length: 262144
65 10:57:58 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 28672 Length: 262144
66 10:57:58 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 28672 Length: 262144
67 10:57:59 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 28672 Length: 262144
68 10:57:59 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 28672 Length: 262144
69 10:58:00 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 28672 Length: 262144
70 10:58:00 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 28672 Length: 262144
71 10:58:02 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 28672 Length: 262144
72 10:58:02 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 28672 Length: 262144
…
And so on.
-------------------------------------------------------------------------------------------------------------
Also the driver changes file sizes in IRP_MJ_DIRECTORY_CONTROL and IRP_MJ_QUERY_INFORMATION so a user see decompressed sizes.
The driver filters CDFS only.
What can be the reason for that?
Thanks.
Look at the call stack in debugger, it should tell you where
the endless loop come from.
L.
----- Original Message -----
From: Roman Kudinov
Newsgroups: ntfsd
To: Windows File Systems Devs Interest List
Sent: Monday, September 11, 2006 8:11 AM
Subject: [ntfsd] endless loop
Hi!
I've made a data decompressing file system filter driver based on sfilter. I perform decompressing during processing of IRP_MJ_READ, this is done by generating own IRP_MJ_READ packets and sending them to the underlying filter, after I get enough data I decompress it, fill the buffer of the original IRP_MJ_READ request and complete it.
I get the endless loop:
59 10:57:55 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 6144 Length: 131072
60 10:57:55 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 6144 Length: 131072
61 10:57:55 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 13312 Length: 262144
62 10:57:55 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 13312 Length: 262144
63 10:57:56 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 26624 Length: 262144
64 10:57:56 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 26624 Length: 262144
65 10:57:58 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 28672 Length: 262144
66 10:57:58 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 28672 Length: 262144
67 10:57:59 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 28672 Length: 262144
68 10:57:59 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 28672 Length: 262144
69 10:58:00 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 28672 Length: 262144
70 10:58:00 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 28672 Length: 262144
71 10:58:02 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 28672 Length: 262144
72 10:58:02 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 28672 Length: 262144
......
And so on.
Also the driver changes file sizes in IRP_MJ_DIRECTORY_CONTROL and IRP_MJ_QUERY_INFORMATION so a user see decompressed sizes.
The driver filters CDFS only.
What can be the reason for that?
Thanks.
Questions? First check the IFS FAQ at The NT Insider:Windows NT Virtual Memory (Part I)
You are currently subscribed to ntfsd as: unknown lmsubst tag argument: ''
To unsubscribe send a blank email to xxxxx@lists.osr.com
Yes, I return it. And moreover the file end lays far beyond the requested portion of data.
“Slava Imameyev” ???/??? ? ??? ???: news:xxxxx@ntfsd…
Do you return STATUS_END_OF_FILE when the read extends or starts beyond end of the file?
–
Slava Imameyev, xxxxx@hotmail.com
“Roman Kudinov” wrote in message news:xxxxx@ntfsd…
Hi!
I’ve made a data decompressing file system filter driver based on sfilter. I perform decompressing during processing of IRP_MJ_READ, this is done by generating own IRP_MJ_READ packets and sending them to the underlying filter, after I get enough data I decompress it, fill the buffer of the original IRP_MJ_READ request and complete it.
I get the endless loop:
-------------------------------------------------------------------------------------------------------------
59 10:57:55 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 6144 Length: 131072
60 10:57:55 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 6144 Length: 131072
61 10:57:55 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 13312 Length: 262144
62 10:57:55 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 13312 Length: 262144
63 10:57:56 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 26624 Length: 262144
64 10:57:56 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 26624 Length: 262144
65 10:57:58 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 28672 Length: 262144
66 10:57:58 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 28672 Length: 262144
67 10:57:59 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 28672 Length: 262144
68 10:57:59 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 28672 Length: 262144
69 10:58:00 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 28672 Length: 262144
70 10:58:00 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 28672 Length: 262144
71 10:58:02 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 28672 Length: 262144
72 10:58:02 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 28672 Length: 262144
…
And so on.
-------------------------------------------------------------------------------------------------------------
Also the driver changes file sizes in IRP_MJ_DIRECTORY_CONTROL and IRP_MJ_QUERY_INFORMATION so a user see decompressed sizes.
The driver filters CDFS only.
What can be the reason for that?
Thanks.
It sounds like you may not be updating the CurrentByteOffset field
properly.
Tony
Tony Mason
Consulting Partner
OSR Open Systems Resources, Inc.
http://www.osr.com http:</http:>
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Roman Kudinov
Sent: Sunday, September 10, 2006 11:11 PM
To: ntfsd redirect
Subject: [ntfsd] endless loop
Hi!
I've made a data decompressing file system filter driver based on
sfilter. I perform decompressing during processing of IRP_MJ_READ, this
is done by generating own IRP_MJ_READ packets and sending them to the
underlying filter, after I get enough data I decompress it, fill the
buffer of the original IRP_MJ_READ request and complete it.
I get the endless loop:
59 10:57:55 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset:
6144 Length: 131072
60 10:57:55 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset:
6144 Length: 131072
61 10:57:55 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset:
13312 Length: 262144
62 10:57:55 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset:
13312 Length: 262144
63 10:57:56 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset:
26624 Length: 262144
64 10:57:56 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset:
26624 Length: 262144
65 10:57:58 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset:
28672 Length: 262144
66 10:57:58 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset:
28672 Length: 262144
67 10:57:59 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset:
28672 Length: 262144
68 10:57:59 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset:
28672 Length: 262144
69 10:58:00 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset:
28672 Length: 262144
70 10:58:00 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset:
28672 Length: 262144
71 10:58:02 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset:
28672 Length: 262144
72 10:58:02 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset:
28672 Length: 262144
......
And so on.
Also the driver changes file sizes in IRP_MJ_DIRECTORY_CONTROL and
IRP_MJ_QUERY_INFORMATION so a user see decompressed sizes.
The driver filters CDFS only.
What can be the reason for that?
Thanks.
Questions? First check the IFS FAQ at
You are currently subscribed to ntfsd as: unknown lmsubst tag argument:
''
To unsubscribe send a blank email to xxxxx@lists.osr.com
Yes this was the reason, thanks a lot!
“Tony Mason” сообщил/сообщила в новостях следующее: news:xxxxx@ntfsd…
It sounds like you may not be updating the CurrentByteOffset field properly.
Tony
Tony Mason
Consulting Partner
OSR Open Systems Resources, Inc.
http://www.osr.com
------------------------------------------------------------------------------
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Roman Kudinov
Sent: Sunday, September 10, 2006 11:11 PM
To: ntfsd redirect
Subject: [ntfsd] endless loop
Hi!
I’ve made a data decompressing file system filter driver based on sfilter. I perform decompressing during processing of IRP_MJ_READ, this is done by generating own IRP_MJ_READ packets and sending them to the underlying filter, after I get enough data I decompress it, fill the buffer of the original IRP_MJ_READ request and complete it.
I get the endless loop:
-------------------------------------------------------------------------------------------------------------
59 10:57:55 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 6144 Length: 131072
60 10:57:55 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 6144 Length: 131072
61 10:57:55 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 13312 Length: 262144
62 10:57:55 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 13312 Length: 262144
63 10:57:56 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 26624 Length: 262144
64 10:57:56 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 26624 Length: 262144
65 10:57:58 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 28672 Length: 262144
66 10:57:58 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 28672 Length: 262144
67 10:57:59 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 28672 Length: 262144
68 10:57:59 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 28672 Length: 262144
69 10:58:00 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 28672 Length: 262144
70 10:58:00 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 28672 Length: 262144
71 10:58:02 Far.exe:1908 FASTIO_READ D:\test.zlb2000 FAILURE Offset: 28672 Length: 262144
72 10:58:02 Far.exe:1908 IRP_MJ_READ D:\test.zlb2000 SUCCESS Offset: 28672 Length: 262144
…
And so on.
-------------------------------------------------------------------------------------------------------------
Also the driver changes file sizes in IRP_MJ_DIRECTORY_CONTROL and IRP_MJ_QUERY_INFORMATION so a user see decompressed sizes.
The driver filters CDFS only.
What can be the reason for that?
Thanks.
—
Questions? First check the IFS FAQ at https://www.osronline.com/article.cfm?id=17
You are currently subscribed to ntfsd as: unknown lmsubst tag argument: ‘’
To unsubscribe send a blank email to xxxxx@lists.osr.com