Received: by 2002:a05:6a10:413:0:0:0:0 with SMTP id 19csp1672698pxp; Thu, 17 Mar 2022 14:09:54 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxNNLSm5mtsZSY/WnzhAoY9FMR9vFLo15MMkcuwktIw/XBXY+H3hUUL7KYZe9OQHIq0k0XN X-Received: by 2002:a17:90a:bd04:b0:1bf:951d:5bf2 with SMTP id y4-20020a17090abd0400b001bf951d5bf2mr17992061pjr.18.1647551394287; Thu, 17 Mar 2022 14:09:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1647551394; cv=none; d=google.com; s=arc-20160816; b=nq2G+wQDVT1VWL1WtEynY/hEH4yNO+eZB1KS3950qho2IOeVaa4ihF2Djmm2e8a7VZ l1Sbv4jHdg1f1iH5fGvumTacR+l6i0BSuAmyAXoRLZkv9mKwY9A53PiWGu/Uvwr0jXIx dq4nMTRJOdY86lqOhBCwFN4/cujpK95DjiEc4dBwD6dJEwOWSgC1Vf7tRR7iygbYuvRC slzLAymvfl3RBY1wcRUDIuzy02+nUAWb2hJZlev5xGu3UECsikR0d2cjl13YskTcGRO/ i8yU5h85rkXr7Ex1XHBESbROstontNJXqRuXDcxX2OVOEfammTdawaM9O+s210aP3cab RT2w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:to:references:message-id :content-transfer-encoding:cc:date:in-reply-to:from:subject :mime-version:dkim-signature; bh=XXPxc8xF2CJlGObdw/eC6baiwA/XpPKEd/Jy1SJ3ol8=; b=CHN80/Bz1hgBZ4qU1AeyD85aJKUBnbJs1sNxU8HZqfJIO8oFBNNHlKkOeC7m244ogF FYD2cVm/VdhckvWKy7Rww/HoyR7oslzsTbrVfCIv377OGC3S4qygsfEdquKbabHZLGh+ S4MedvurBVEwemLNFiabBZjZ07FOfMgly6KbYBErzQKPQUGqV52iMBHCAJ+xnD//xgSd JYJzTtupEHfrbyOkd3Uo7q3/z6vPo9AOhpbucD133uyBPpkCw0qrKxxNJW7HCbQ9LPHW uRTM6VbFfahaEZPybb9fKJW0RV/mGmgtJFERQxv41WsAOBq2HnAbl5HSidJYER6pHB5z vwAQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=N4ZQLI8t; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id y37-20020a634965000000b003816043f128si2939509pgk.797.2022.03.17.14.09.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Mar 2022 14:09:54 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=N4ZQLI8t; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 7308F14146D; Thu, 17 Mar 2022 13:39:11 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229793AbiCQUkO (ORCPT + 99 others); Thu, 17 Mar 2022 16:40:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53048 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229775AbiCQUkM (ORCPT ); Thu, 17 Mar 2022 16:40:12 -0400 Received: from mail-pg1-x535.google.com (mail-pg1-x535.google.com [IPv6:2607:f8b0:4864:20::535]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DD4BCBB917; Thu, 17 Mar 2022 13:38:55 -0700 (PDT) Received: by mail-pg1-x535.google.com with SMTP id t14so3550527pgr.3; Thu, 17 Mar 2022 13:38:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=XXPxc8xF2CJlGObdw/eC6baiwA/XpPKEd/Jy1SJ3ol8=; b=N4ZQLI8tGuL3HO7LWthMx63lUi8bBwKx4ejXuWr+Hzv7vwlGzlxOUjoKPnvOZtq6LC 31S3SSnT23US3dSeCl6I85ttzhDYlywg0PL1/sUs2kkuMe2MyUurbXzOrpAxeVqZ8lQc cnLaBIH8VKhUDUqZhHwYk1sh0Nrx1leIl+rjGh1uYlbRS0RVXSiQf88LVt1YKLteXs1t kIVkVDOgTu/Zn6yPssRCO23eCMwYwz0NSeZYOxu5OoUPZWgtmVKovnId9+FtBfkCe0Fs FjQxP05od8Q1gogWspX2xQ1vEgZ8DXY9+9/oMckgpGGK8kBLYpi0NDX9/yle3+1Ci1p9 XmNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=XXPxc8xF2CJlGObdw/eC6baiwA/XpPKEd/Jy1SJ3ol8=; b=wckDgOy+TXQ3cNd/MG7qiqW/YvYLp8XEnwOCsoLJ2g57FukOzzUy3leqF93AOTuV1A 8sRjpCNf4zwBQRPCjyq1qSYEzBKz+C3uqmrw1y3UPXddcQ1Hmt/hDXpvgh5zzfM8N8Hk +CE0/FBHNJH+dNlKr3QVCN46LhFk/UOwpLPUdsClNM7o3ZtlyMS/A30rvoIosM7dL4DP q9buC1csOEsFDAlHlMU6/in3c8ntAopFnW4YjpIaOs1+TuTDh/yWK/JillL+sKq3K2Kn cfUqLq3x8ialiW4f2Y9ifGnkgmv9Ai87VcK9bCZLtKqlUc2gY0cDQBTUzZUpUCzGY/gI +seA== X-Gm-Message-State: AOAM531/XQT4NbZjapcQvmE7LZTPKzyrvlf1zivayiImS8CqKYhpDG0y twVmQOki8Fy6vhbzBi6D/a8= X-Received: by 2002:aa7:92cf:0:b0:4fa:3b47:7408 with SMTP id k15-20020aa792cf000000b004fa3b477408mr5232524pfa.72.1647549535202; Thu, 17 Mar 2022 13:38:55 -0700 (PDT) Received: from smtpclient.apple ([66.170.99.2]) by smtp.gmail.com with ESMTPSA id a38-20020a056a001d2600b004f70d5e92basm7673990pfx.34.2022.03.17.13.38.53 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 Mar 2022 13:38:54 -0700 (PDT) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.80.82.1.1\)) Subject: Re: [PATCH V2,2/2] mm: madvise: skip unmapped vma holes passed to process_madvise From: Nadav Amit In-Reply-To: Date: Thu, 17 Mar 2022 13:38:52 -0700 Cc: Minchan Kim , Andrew Morton , Charan Teja Kalla , Vlastimil Babka , David Rientjes , Stephen Rothwell , =?utf-8?Q?Edgar_Arriaga_Garc=C3=ADa?= , Michal Hocko , linux-mm , LKML , "# 5 . 10+" Content-Transfer-Encoding: quoted-printable Message-Id: References: <4f091776142f2ebf7b94018146de72318474e686.1647008754.git.quic_charante@quicinc.com> <20220315164807.7a9cf1694ee2db8709a8597c@linux-foundation.org> <5428f192-1537-fa03-8e9c-4a8322772546@quicinc.com> <20220316142906.e41e39d2315e35ef43f4aad6@linux-foundation.org> To: Suren Baghdasaryan X-Mailer: Apple Mail (2.3696.80.82.1.1) X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RDNS_NONE, SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org > On Mar 17, 2022, at 9:53 AM, Suren Baghdasaryan = wrote: >=20 > On Thu, Mar 17, 2022 at 9:28 AM Minchan Kim = wrote: >>=20 >> On Wed, Mar 16, 2022 at 02:29:06PM -0700, Andrew Morton wrote: >>> On Wed, 16 Mar 2022 19:49:38 +0530 Charan Teja Kalla = wrote: >>>=20 >>>>> IMO, it's worth to note in man page. >>>>>=20 >>>>=20 >>>> Or the current patch for just ENOMEM is sufficient here and we just = have >>>> to update the man page? >>>=20 >>> I think the "On success, process_madvise() returns the number of = bytes >>> advised" behaviour sounds useful. But madvise() doesn't do that. >>>=20 >>> RETURN VALUE >>> On success, madvise() returns zero. On error, it returns -1 = and errno >>> is set to indicate the error. >>>=20 >>> So why is it desirable in the case of process_madvise()? >>=20 >> Since process_madvise deal with multiple ranges and could fail at one = of >> them in the middle or pocessing, people could decide where the call >> failed and then make a strategy whether they will abort at the point = or >> continue to hint next addresses. Here, problem of the strategy is API >> doesn't return any error vaule if it has processed any bytes so they >> would have limitation to decide a policy. That's the limitation for >> every vector IO syscalls, unfortunately. >>=20 >>>=20 >>>=20 >>>=20 >>> And why was process_madvise() designed this way? Or was it >>> always simply an error in the manpage? >=20 > Taking a closer look, indeed manpage seems to be wrong. > https://elixir.bootlin.com/linux/v5.17-rc8/source/mm/madvise.c#L1154 > indicates that in the presence of unmapped holes madvise will skip > them but will return ENOMEM and that's what process_madvise is > ultimately returning in this case. So, the manpage claim of "This > return value may be less than the total number of requested bytes, if > an error occurred after some iovec elements were already processed." > does not reflect the reality in our case because the return value will > be -ENOMEM. After the desired behavior is finalized I'll modify the > manpage accordingly. Since process_madvise() might be used in sort of non-cooperative mode, I think that the caller cannot guarantee that it knows exactly the memory layout of the process whose memory it madvise=E2=80=99s. I know = that MADV_DONTNEED for instance is not supported (at least today) by process_madvise(), but if it were, the caller may want which exact memory was madvise'd even if the target process ran some other memory layout changing syscalls (e.g., munmap()). IOW, skipping holes and just returning the total number of madvise=E2=80=99= d bytes might not be enough.