Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp796680imu; Thu, 13 Dec 2018 04:45:54 -0800 (PST) X-Google-Smtp-Source: AFSGD/U0sH7jRDG8IoPGD1H55frPBsXyXQsTF3B1jRnfwICzegXZAru3BrNlSWnYdRjvP5LsbOkB X-Received: by 2002:a17:902:33c1:: with SMTP id b59mr23224833plc.220.1544705154415; Thu, 13 Dec 2018 04:45:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544705154; cv=none; d=google.com; s=arc-20160816; b=bHjlhPRH4KhXKgxPSA+MHY6OhhCzBIA8wueJNsbY08s1bQRZELwHcv33dffiQeE3Oh 4qmUevdxF13HHhcwVzJY4G73MZYWIlrmayXJEBvxyZtGbulOg0XZ0d+jWhNGGJNtdHmq k5ilghv40ogzQ5fIURa60YiyVPjYBV0P6d5hNE2lRarBQjvUNrIet7ZnmzZxfe+ZHD0P zZUJDWYMTky4/Xex+XgeFz8sx/O56bBQqoR3w3gZUVWmrWwllVhuKfbyLvFszg+hfrN5 F0CgPBmyp4kmtx8B50MLSRzbpRM0nzrETsBSjlb5dPIkeikw16BcrTwI5oHrmTQA37EQ FJkA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-transfer-encoding:content-disposition:mime-version :references:message-id:subject:cc:to:from:date; bh=5jLSJGeXh+lD/Yq+geqDxIXvqzTDKx08f+0lHwV5fEA=; b=Y62tHHov9nN0eFzBUeR7jpCRR0pt11cH3kg6hQiqQ10M0sx0zj6DlZdvMCs5tQZFgE KDlV4MADyxACQr2+BfVNzVzT8E2bYAApxmXi+8Lb4XZczv6vQKiVC7u+vK4cqZUngGJW ubPVqLIZcRdoaMMDL2CrLMSZ5BtVafnb9MpmdUI94vPuF+PFkdpUMKuk/OfND6DR4lKU xovxwHtTyInPeI+pGYCWzfhQVT0wc9Vrc6497Ssc9e84mZDhP8RHVE7IlIQxiDyPFBVE ayLEcZ3AHa23237L3sI91Bu2n0Z8mxY52rMTUgiCdG4uhQiu3q4GnW1GRuR/+hIb8j7d FQlA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l24si1479049pgj.171.2018.12.13.04.45.38; Thu, 13 Dec 2018 04:45:54 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729228AbeLMMnb (ORCPT + 99 others); Thu, 13 Dec 2018 07:43:31 -0500 Received: from mx1.redhat.com ([209.132.183.28]:60384 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728517AbeLMMnb (ORCPT ); Thu, 13 Dec 2018 07:43:31 -0500 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E238330832C4; Thu, 13 Dec 2018 12:43:29 +0000 (UTC) Received: from redhat.com (ovpn-121-185.rdu2.redhat.com [10.10.121.185]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 58FCC648B4; Thu, 13 Dec 2018 12:43:27 +0000 (UTC) Date: Thu, 13 Dec 2018 07:43:25 -0500 From: Jerome Glisse To: Jason Gunthorpe Cc: Dan Williams , Jan Kara , John Hubbard , Matthew Wilcox , John Hubbard , Andrew Morton , Linux MM , tom@talpey.com, Al Viro , benve@cisco.com, Christoph Hellwig , Christopher Lameter , "Dalessandro, Dennis" , Doug Ledford , Michal Hocko , Mike Marciniszyn , rcampbell@nvidia.com, Linux Kernel Mailing List , linux-fsdevel , "Weiny, Ira" Subject: Re: [PATCH 1/2] mm: introduce put_user_page*(), placeholder versions Message-ID: <20181213124325.GA3186@redhat.com> References: <20181208022445.GA7024@redhat.com> <20181210102846.GC29289@quack2.suse.cz> <20181212150319.GA3432@redhat.com> <20181212213005.GE5037@redhat.com> <20181212215348.GF5037@redhat.com> <20181212233703.GB2947@ziepe.ca> <20181213000109.GK5037@redhat.com> <20181213032043.GA3204@ziepe.ca> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20181213032043.GA3204@ziepe.ca> User-Agent: Mutt/1.10.1 (2018-07-13) X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.44]); Thu, 13 Dec 2018 12:43:30 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Dec 12, 2018 at 08:20:43PM -0700, Jason Gunthorpe wrote: > On Wed, Dec 12, 2018 at 07:01:09PM -0500, Jerome Glisse wrote: > > On Wed, Dec 12, 2018 at 04:37:03PM -0700, Jason Gunthorpe wrote: > > > On Wed, Dec 12, 2018 at 04:53:49PM -0500, Jerome Glisse wrote: > > > > > Almost, we need some safety around assuming that DMA is complete the > > > > > page, so the notification would need to go all to way to userspace > > > > > with something like a file lease notification. It would also need to > > > > > be backstopped by an IOMMU in the case where the hardware does not / > > > > > can not stop in-flight DMA. > > > > > > > > You can always reprogram the hardware right away it will redirect > > > > any dma to the crappy page. > > > > > > That causes silent data corruption for RDMA users - we can't do that. > > > > > > The only way out for current hardware is to forcibly terminate the > > > RDMA activity somehow (and I'm not even sure this is possible, at > > > least it would be driver specific) > > > > > > Even the IOMMU idea probably doesn't work, I doubt all current > > > hardware can handle a PCI-E error TLP properly. > > > > What i saying is reprogram hardware to crappy page ie valid page > > dma map but that just has random content as a last resort to allow > > filesystem to reuse block. So their should be no PCIE error unless > > hardware freak out to see its page table reprogram randomly. > > No, that isn't an option. You can't silently provide corrupted data > for RDMA to transfer out onto the network, or silently discard data > coming in!! > > Think of the consequences of that - I have a fileserver process and > someone does ftruncate and now my clients receive corrupted data?? This is what happens _today_ ie today someone do GUP on page file and then someone else do truncate the first GUP is effectively streaming _random_ data to network as the page does not correspond to anything anymore and once the RDMA MR goes aways and release the page the page content will be lost. So i am not changing anything here, what i proposed was to make it explicit to device driver at least that they were streaming random data. Right now this is all silent but this is what is happening wether you like it or not :) Note that i am saying do that only for truncate to allow to be nice to fs. But again i am fine with whatever solution but you can not please everyone here. Either block truncate and fs folks will hate you or make it clear to device driver that you are streaming random things and RDMA people hates you. > The only option is to prevent the RDMA transfer from ever happening, > and we just don't have hardware support (beyond destroy everything) to > do that. > > > The question is who do you want to punish ? RDMA user that pin stuff > > and expect thing to work forever without worrying for other fs > > activities ? Or filesystem to pin block forever :) > > I don't want to punish everyone, I want both sides to have complete > data integrity as the USER has deliberately decided to combine DAX and > RDMA. So either stop it at the front end (ie get_user_pages_longterm) > or make it work in a way that guarantees integrity for both. > > > S2: notify userspace program through device/sub-system > > specific API and delay ftruncate. After a while if there > > is no answer just be mean and force hardware to use > > crappy page as anyway this is what happens today > > I don't think this happens today (outside of DAX).. Does it? It does it is just silent, i don't remember anything in the code that would stop a truncate to happen because of elevated refcount. This does not happen with ODP mlx5 as it does abide by _all_ mmu notifier. This is for anything that does ODP without support for mmu notifier. > .. and the remedy here is to kill the process, not provide corrupt > data. Kill the process is likely to not go over well with any real > users that want this combination. > > Think Samba serving files over RDMA - you can't have random unpriv > users calling ftruncate and causing smbd to be killed or serve corrupt > data. So what i am saying is there is a choice and it would be better to decide something than let the existing status quo where we just keep streaming random data after truncate to a GUPed page. Cheers, J?r?me