On Mon, Apr 08, 2013 at 04:57:44PM -0400, KOSAKI Motohiro wrote: > > - if (absent || > > + /* > > + * is_swap_pte test covers both is_hugetlb_entry_hwpoisoned > > + * and hugepages under migration in which case > > + * hugetlb_fault waits for the migration and bails out > > + * properly for HWPosined pages. > > + */ > > + if (absent || is_swap_pte(huge_ptep_get(pte)) || > > ((flags & FOLL_WRITE) && !pte_write(huge_ptep_get(pte)))) { > > int ret; > > Your comment describe what the code is. However we want the comment describe > why. In migration case, calling hugetlb_fault() is natural. but in > hwpoison case, it is > needed more explanation. We should call hugetlb_fault() when we encounter any kind of swap type entry. It's consistent with handling of normal pages. > Why can't we call is_hugetlb_hwpoisoned() directly? We can use it, but I like to make code simple. I rewrite the comment here, how about this? - if (absent || + /* + * We need call hugetlb_fault for both hugepages under migration + * (in which case hugetlb_fault waits for the migration,) and + * hwpoisoned hugepages (in which case we need to prevent the + * caller from accessing to them.) In order to do this, we use + * here is_swap_pte instead of is_hugetlb_entry_migration and + * is_hugetlb_entry_hwpoisoned. This is because it simply covers + * both cases, and because we can't follow correct pages directly + * from any kind of swap entries. + */ + if (absent || is_swap_pte(huge_ptep_get(pte)) || ((flags & FOLL_WRITE) && !pte_write(huge_ptep_get(pte)))) { int ret; Thanks, Naoya -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>