Random read/write or block read/write ?

Hi,

Is there a way to make sure that in a read/write operation from/to an
ordinary file, that the data is always read/written in blocks of a
predefined size ?

To give an example: Can one prevent (or avoid) that a file filter driver
intercepts a IRP_MJ_READ command to read 17 bytes from offset 87611 in a
file, but rather that (for 512-byte blocks) 512 bytes are read from offset
87552 ?

With kind regards,

Bartjan Wattel

> To give an example: Can one prevent (or avoid) that a file filter driver

intercepts a IRP_MJ_READ command to read 17 bytes from offset 87611 in a
file, but rather that (for 512-byte blocks) 512 bytes are read from offset
87552 ?

Intercept only the noncached IO - paging and non-paging - in your filter.
(any cached IO will be intercepted too - it is processed by page faults in
the cache area - which are the noncached paging IO - and by page writes from
the lazy writer/CcFlushCache - which are the noncached paging IO too).
Paging IO is aligned on page size.
Noncached non-paging IO originates in the app (like the database server)
opened file with FILE_NO_INTERMEDIATE_BUFFERING and will always be aligned
on the disk’s sector size.

Max

Hi Bartjan!

It depends on the operation path.

NORMAL (CACHED) PATH:
Read and writes could be issued from any offset
and in any length.

NON-CACHED PATH:
All reads and writes must be well aligned in
both staring offset and length. The alignment is
usually taken from physical device’s sector size
(mostly 512 bytes)

Paul

-----Original Message-----
From: Bartjan Wattel [mailto:xxxxx@wxs.nl]
Sent: Friday, September 01, 2000 4:36 PM
To: File Systems Developers
Subject: [ntfsd] Random read/write or block read/write ?

Hi,

Is there a way to make sure that in a read/write operation from/to an
ordinary file, that the data is always read/written in blocks of a
predefined size ?

To give an example: Can one prevent (or avoid) that a file filter driver

intercepts a IRP_MJ_READ command to read 17 bytes from offset 87611 in a

file, but rather that (for 512-byte blocks) 512 bytes are read from
offset
87552 ?

With kind regards,

Bartjan Wattel


You are currently subscribed to ntfsd as: xxxxx@sodatsw.cz
To unsubscribe send a blank email to $subst(‘Email.Unsub’)