How does srv.sys determine raw vs core mode depending on the underlying file system?

We are developing a file system for Windows using the IFS Kit. We began to investigate a performance issue that caused the file system I / O process to be much slower when shared over the network. Looking at this with FileMon and TCPView from Sysinternals , we found that if the file system was shared with NTFS / FAT, then the client and SMB server had I / O transfers in blocks of 60K, and when we shared our file system, it used 4K blocks .

These two block sizes correspond to the "main" and "raw" SMB modes - this is explained here from Microsoft.

The problem is that we cannot understand that in our file system the Windows share server (srv.sys) selects the main mode (4K) for our file system and the raw mode (60K) for NTFS and FAT.

Even hints of what to check are welcome.

KIV

+3
source share
2 answers

The problem was resolved by setting the FO_CACHE_SUPPORTED flag in the file system object.

+1
source

On the support page:

When you use Windows NT Explorer to copy a file from a client to a remote computer, data is usually transferred in Core mode to 4 KB blocks.

Have you tried this from the command line?

0
source

Source: https://habr.com/ru/post/1713940/


All Articles