RE: [RFC] reduce hugetlb_instantiation_mutex usage

Chen, Kenneth W
2006-11-01T10:17:28Z

Nick Piggin wrote on Tuesday, October 31, 2006 10:19 PM
> So what does the normal page fault path do? Just invalidates the private
> page out of the page tables. A subsequent fault goes through the normal
> shared page path, which detects the truncation as it would with any
> shared fault. Right?
>
> hugetlb seems to pretty well follow the same pattern as memory.c in this
> regard. I don't see the race?

I was originally worried about a case that one thread fault on a private
mapping and get hold of a fresh page via alloc_huge_page(). While it executes
clear_huge_page(), 2nd thread come by did a ftruncate. After first thread
finish zeroing, I thought it will happily install a pte. But no, the inode
size check will prevent that from happening.

I was mislead by the comments in hugetlb_no_page() that page lock is used to
guard against racing truncation. Now I'm drifting back into what "racing
truncation" the comment is referring to. What race does it trying to protect
with page lock?

- Ken