Hiberfile: read more than written

We observe strange behavior in Windows 2008R2 and Win8 dev preview:

When going to hibernation, the last LBA written is less than last LBA read when it resumes back. We see it on the wire trace. Same discrepancy is observed with third party HBAs, too.

We see intermittent OS hangs during switch from winresume to the kernel.
Our dump driver max transfer size is 64K.

Why do you think that’s strange? Not all the data written is the resume
file.

Jake Oshins
Hyper-V I/O Architect
Windows Kernel Group

This post implies no warranties and confers no rights.


wrote in message news:xxxxx@ntdev…

We observe strange behavior in Windows 2008R2 and Win8 dev preview:

When going to hibernation, the last LBA written is less than last LBA read
when it resumes back. We see it on the wire trace. Same discrepancy is
observed with third party HBAs, too.

We see intermittent OS hangs during switch from winresume to the kernel.
Our dump driver max transfer size is 64K.

“Why do you think that’s strange? Not all the data written is the resume
file.”

In the wire trace, during hibernation, I see large write operations to contiguous LBAs, for example, X to Y. They all are MaxTransferLength as big. The last small read/write pair finalizes the hiberfile. During resume, I see contiguous reads from X to Y+z, that’s some data is read immediately after the written end. Those extra LBA are never seen written during hibernation, not even during hibernation init. Those LBA numbers are different every time, because amount of hibernation data is different every time (and cannot be predicted at hibernation init time, because of compression). THis means that area is unlikely to contain any determinate data.

Is this a sign of a bug?

I doubt it.

Jake Oshins
Hyper-V I/O Architect
Windows Kernel Group

This post implies no warranties and confers no rights.


wrote in message news:xxxxx@ntdev…

“Why do you think that’s strange? Not all the data written is the resume
file.”

In the wire trace, during hibernation, I see large write operations to
contiguous LBAs, for example, X to Y. They all are MaxTransferLength as big.
The last small read/write pair finalizes the hiberfile. During resume, I see
contiguous reads from X to Y+z, that’s some data is read immediately after
the written end. Those extra LBA are never seen written during hibernation,
not even during hibernation init. Those LBA numbers are different every
time, because amount of hibernation data is different every time (and cannot
be predicted at hibernation init time, because of compression). THis means
that area is unlikely to contain any determinate data.

Is this a sign of a bug?

Doubt what? That this is a bug? Or that this behavior actually happens?