On Mon, Jul 24, 2017 at 11:06:12AM -0600, Ross Zwisler wrote:
> @@ -1658,14 +1658,35 @@ static int insert_pfn(struct vm_area_struct *vma, 
> unsigned long addr,
>       if (!pte)
>               goto out;
>       retval = -EBUSY;
> -     if (!pte_none(*pte))
> -             goto out_unlock;
> +     if (!pte_none(*pte)) {
> +             if (mkwrite) {
> +                     /*
> +                      * For read faults on private mappings the PFN passed
> +                      * in may not match the PFN we have mapped if the
> +                      * mapped PFN is a writeable COW page.  In the mkwrite
> +                      * case we are creating a writable PTE for a shared
> +                      * mapping and we expect the PFNs to match.
> +                      */

Can we?

I guess it's up to filesystem if it wants to reuse the same spot to write
data or not. I think your assumptions works for ext4 and xfs. I wouldn't
be that sure for btrfs or other filesystems with CoW support.

-- 
 Kirill A. Shutemov

Reply via email to