Messages in this thread | | | From | Jason Behmer <> | Date | Mon, 1 Apr 2019 06:49:07 -0700 | Subject | Correct commit mask for page data size |
| |
Hi Steven, We're wondering what the correct number of bits to take from the commit field is when determining the size of the page data. The format file shows the bottom 56 bits not overlapping with anything:
field: local_t commit; offset:8; size:8; signed:1; field: int overwrite; offset:8; size:1; signed:1;
We first naively interpreted this as the size, but eventually ran into cases where this gave back a nonsense result. But then in our investigation of what the correct thing to do is, we found conflicting answers.
In the kernel we see that commit is often updated to write, which is masked against RB_WRITE_MASK. So it seems taking the bottom 20 bits is correct. However, in trace-cmd, a fairly authoritative parser, we see that COMMIT_MASK is set to take the bottom 27 bits and set that to the page data size.
Could you provide some guidance?
Thanks, Jason
| |