From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4E870CE7B1A for ; Thu, 28 Sep 2023 10:54:24 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BB65E8D007F; Thu, 28 Sep 2023 06:54:23 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B67388D0038; Thu, 28 Sep 2023 06:54:23 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A54CF8D007F; Thu, 28 Sep 2023 06:54:23 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 970E78D0038 for ; Thu, 28 Sep 2023 06:54:23 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 5FB90C0AFE for ; Thu, 28 Sep 2023 10:54:23 +0000 (UTC) X-FDA: 81285697206.28.409BE23 Received: from mail-pl1-f173.google.com (mail-pl1-f173.google.com [209.85.214.173]) by imf30.hostedemail.com (Postfix) with ESMTP id 826CB80012 for ; Thu, 28 Sep 2023 10:54:21 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="aF/xuZIL"; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf30.hostedemail.com: domain of bagasdotme@gmail.com designates 209.85.214.173 as permitted sender) smtp.mailfrom=bagasdotme@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1695898461; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=0dD1rH3hcqv6nn9Uad/XLiO5UXHpOwbL0BdVsMcSoPI=; b=YCE8adf+fXG1Vov+GCIgInRVk7SqZAkHAhUyMr+JZoUya16etEBJNpq9NAzi2HosGDvwYl CuXWDkmDbGL/m6PIHFIzn4YMSOSZRhcewdvyNBJvofl4mQIZsCKBtXMf1/+mVuCqUPgZzO pm+YuZHWtkz46Sy7hFdR0g/3bdn8c1Y= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="aF/xuZIL"; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf30.hostedemail.com: domain of bagasdotme@gmail.com designates 209.85.214.173 as permitted sender) smtp.mailfrom=bagasdotme@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1695898461; a=rsa-sha256; cv=none; b=Dku9r8FDiqDm+Z19Gg8keZnc77Ov8jPRG/k09iuVzQjqfAp1NUr5Tcdc3g12trtYjjYLhV 8atXVHlRF+/FGj7ZngesrzPwgAD9zbpUpTTQkhLgO8wCSYrn+TlI/8CUclirADSvIN9UZx DZ2EjkpLjfIJmTDdUkpmyOaeqxlBuE0= Received: by mail-pl1-f173.google.com with SMTP id d9443c01a7336-1c7373cff01so4172805ad.1 for ; Thu, 28 Sep 2023 03:54:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1695898460; x=1696503260; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=0dD1rH3hcqv6nn9Uad/XLiO5UXHpOwbL0BdVsMcSoPI=; b=aF/xuZILCRFK9iUxsmCnE7h5mG2lF+fsjtz1wj/O1MRyGCUaBui58XI8++ql7+SXJ7 xG6PASVgtAlhEmC1vYYtZy16YoLo5ghNxjs7LITxoIwRHef0dJNkobdnbCA1uqdEQQaM Kvj6aC3xkMd2Y4vVB58szp4SbIjPVSQQ8LV9qjZ4MLV4KD5zrIhbfv2CK1kJKuc52ODE WMbakPEY9R7XWOGlLje9vakXBhXnvvjcCQ/c5iv0EESxs6zvKprapLkpgZqFvuOWWSk9 t4G9+9jv/Jb47m++jbr+7Pz71p23kgK9K4bj1QoA5l0MYzHZUwKOlyc+ir4h2kSmw9SW FVkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695898460; x=1696503260; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=0dD1rH3hcqv6nn9Uad/XLiO5UXHpOwbL0BdVsMcSoPI=; b=TJefK+5YFDbq0Jy0rVjCJ00xmGavCszmLHn7C7vLGZc7LlGJo39Vp5OlQg3SHVlVlH 29zZ4XVEGrRL1hBA2xNgegQwWVILTuaOHFWBcej58GerpgftW39eFn7FUcZKnOICPPl7 p3Stp98hX+pwi9nuoID3xBg5pbkFyzYeRvo47zFFCMS7bQx3N6zYf+PTs4C5bpTH8CIA 46g3yt3Na2F8evcTykeBM/TGCL7zyWN7jgt617VpgthA3YOfQyLnDjyh08VKwOpFNg4l +vpkEo+BniNeHridjUtmNpW8tKHl7VDD5Xf89ngTF6oLVJtHrFODgYxvBo9G2QtGjI8g 09cg== X-Gm-Message-State: AOJu0YwH7z9Ur7xKJVUA8Hujzr8aB8kBZj08ZmxvliEDAghlYXfAzIAt W3f/jmK5a3/FI6ObmWdhE2Q= X-Google-Smtp-Source: AGHT+IFyKpJvlOnia9uUoS5BC5vfpSiI/x5q9U/LjnXTb4KBADsjCyp7P7/Zq8NGpXwTP+paN6iJfA== X-Received: by 2002:a17:903:184:b0:1bc:5e36:9ab4 with SMTP id z4-20020a170903018400b001bc5e369ab4mr1172334plg.21.1695898460059; Thu, 28 Sep 2023 03:54:20 -0700 (PDT) Received: from debian.me ([103.124.138.83]) by smtp.gmail.com with ESMTPSA id u15-20020a170902e5cf00b001c0af36dd64sm14658197plf.162.2023.09.28.03.54.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 28 Sep 2023 03:54:19 -0700 (PDT) Received: by debian.me (Postfix, from userid 1000) id 2235881C9B1B; Thu, 28 Sep 2023 17:54:15 +0700 (WIB) Date: Thu, 28 Sep 2023 17:54:15 +0700 From: Bagas Sanjaya To: Ryan Roberts , Hugh Dickins , David Hildenbrand , Matthew Wilcox , zokeefe@google.com, Chandan Babu R , Darrick J. Wong Cc: Linux Memory Management List , Linux XFS , Linux Kernel Mailing List Subject: Re: BUG: MADV_COLLAPSE doesn't work for XFS files Message-ID: References: <4d6c9b19-cdbb-4a00-9a40-5ed5c36332e5@arm.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="w/C85oP5VDfuXKdY" Content-Disposition: inline In-Reply-To: <4d6c9b19-cdbb-4a00-9a40-5ed5c36332e5@arm.com> X-Rspamd-Queue-Id: 826CB80012 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: bo9fsr73sf8nc3uj3a6aprygtc4y8me4 X-HE-Tag: 1695898461-796116 X-HE-Meta: U2FsdGVkX19XZy0Blga7DnDz6GCnRc9gxX0T/wf65ktF2h/YrGJUVLv4C+GR3GrzNFtfI0t/8iWtpxoJ09v6Hb+vCJ65nSTFlu09WRWCHOPKlvXi2xzdArDvFq6SXzt03ZzZT9emtq14yzjq06qYfcnzvg1eyi3JjVXW3m59hGBOiy2lUyStuiLNFb0NYY+3Po/PYYENXTu6a1m+22UbPj8v4F2q6MtMXJTdjvxGwBWlnY4ADp8bsu55fZEQk9r1XMUIChvoIkLSGLQioO3L0UK4jGly1sCaqPIZ4U3U2YC4yLoe0rKhXAYrDz6AyNWqE8b8+ejNkDBqH43tWFKc8anb7rYY+GOjEHUfKTmAvQJdbn2LF6o+rbHLXM42s8tyAffaY88RThgTlaqHs/X2W2caIP/7tPO9aOcuufJyuoIiGI2p0v8bYzCEqOxvPsoQNu5WPkydWWVRDy++CMQECX+58rE2NvKPtAd029PWeW0AJIfQ3w8PuW7DLSNlv9kfyi7K+c1MxH54Ib8Zz2KaAr/7TqesJOBtBdbadOLc49m+LwKaUcump3rqrnsZHMgj0gTLcQl++mOKnGDUDqe3Oy/QuJV3+COIoYgy3GKdY5sp6fHqZ2HXk6AYVJZY0yt6oqAJQphWftlMGr/sXHIunut2Y6/KjdSjdkzj09cQKJjBaluOTvK9fdZItPKNPdjDLGkhQSSic5MH2Hzk1xYJVcvpvYuH05nKnxYcA7V7RzyvnevmtgKKPmmZq8OvXpx8CWDDwiMgp8TwHNn4leaQk+EriHKd+/sUaRQUwsmFdagdjbI/XYuEm0fmfKcV9MPp/ppvNrT0ABOLt4tZ0Mmw1YKO15TN2v7mssUXmvRVq0JWHm3/Ho1fdCpPW4Mp1GOlQ5id+XLkL4U3q+oajoyZGtu9GPgeBa4Sv4M/t+B+S+Aw5auO/sSw+Kwk47l3Bkwrz9VYTb3whllB++SOkAS YMwEe+fS nIE6M21ST0vR+7I3JY6SqgTMxwqm4pId2mxMDu/h5rKEDQmSTYHZ/mxvvhVpr5C8/WLMa8FmvKR1Nx3rY95d40Tb9AL10fiyV1lZ93Tx7CmH8Y8m/GwT53eGGJG+WQHZQHxucWMflFrXXDu2yyBwFNWdLkWuoSs1R/QrefDO208B8tGAFvG+hnMhZsF533rbEm8pzuo/eAIt6+K3E2gW+zTekun2yOr6BVEhA1SF+8EMNEfHO2Wb7TBap2NwcQZqO4jYuQNSFiaXGTjRlzFpGAlw0pgYW3qKH5C697v+I6kmPojSzhJtX2UtxWT18rZ+vcG9nJYlS6ivNR4qsDb0dFfk1mydgpAfIDJxJCP4afrKxPEeuBcT8rlD0ttY+gsPk5pMd/wcXZE6c3xh86+yXy2n5b6Xz3bpFkO+gWxNKrZNX48b5e75rO9dihZ393NdN1C//UpBbBZSorGuayop2byLOEca4f8HAk7oHCnr0P6oEkk0lNgFMkmlWL1tu/TvCNLdcIiPFnCFPMQeWt303tGg4+AMKsF8e4Uzdu9QKIaAYJ4IivB4xh5+IBg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: --w/C85oP5VDfuXKdY Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Thu, Sep 28, 2023 at 10:55:17AM +0100, Ryan Roberts wrote: > Hi all, >=20 > I've just noticed that when applied to a file mapping for a file on xfs, = MADV_COLLAPSE returns EINVAL. The same test case works fine if the file is = on ext4.=20 >=20 > I think the root cause is that the implementation bails out if it finds a= (non-PMD-sized) large folio in the page cache for any part of the file cov= ered by the region. XFS does readahead into large folios so we hit this iss= ue. See khugepaged.h:collapse_file(): >=20 > if (PageTransCompound(page)) { > struct page *head =3D compound_head(page); >=20 > result =3D compound_order(head) =3D=3D HPAGE_PMD_ORDER && > head->index =3D=3D start > /* Maybe PMD-mapped */ > ? SCAN_PTE_MAPPED_HUGEPAGE > : SCAN_PAGE_COMPOUND; > goto out_unlock; > } I don't see any hint to -EINVAL above. Am I missing something? >=20 > I'm not sure if this is already a known issue? I don't have time to work = on a fix for this right now, so thought I would highlight it at least. I mi= ght get around to it at some point in the future if nobody else tackles it. >=20 > Thanks, > Ryan >=20 >=20 > Test case I've been using: >=20 > -->8-- >=20 > #include > #include > #include > #include > #include > #include > #include >=20 > #ifndef MADV_COLLAPSE > #define MADV_COLLAPSE 25 > #endif >=20 > #define handle_error(msg) do { perror(msg); exit(EXIT_FAILURE); } while = (0) >=20 > #define SZ_1K 1024 > #define SZ_1M (SZ_1K * SZ_1K) > #define ALIGN(val, align) (((val) + ((align) - 1)) & ~((align) - 1)) >=20 > #if 1 > // ext4 > #define DATA_FILE "/home/ubuntu/data.txt" > #else > // xfs > #define DATA_FILE "/boot/data.txt" > #endif >=20 > int main(void) > { > int fd; > char *mem; > int ret; >=20 > fd =3D open(DATA_FILE, O_RDONLY); > if (fd =3D=3D -1) > handle_error("open"); >=20 > mem =3D mmap(NULL, SZ_1M * 4, PROT_READ | PROT_EXEC, MAP_PRIVATE, fd, 0); > close(fd); > if (mem =3D=3D MAP_FAILED) > handle_error("mmap"); >=20 > printf("1: pid=3D%d, mem=3D%p\n", getpid(), mem); > getchar(); >=20 > mem =3D (char *)ALIGN((unsigned long)mem, SZ_1M * 2); > ret =3D madvise(mem, SZ_1M * 2, MADV_COLLAPSE); > if (ret) > handle_error("madvise"); >=20 > printf("2: pid=3D%d, mem=3D%p\n", getpid(), mem); > getchar(); >=20 > return 0; > } >=20 > -->8-- >=20 Confused... --=20 An old man doll... just what I always wanted! - Clara --w/C85oP5VDfuXKdY Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iHUEABYKAB0WIQSSYQ6Cy7oyFNCHrUH2uYlJVVFOowUCZRVbUgAKCRD2uYlJVVFO o5OiAP4qBklDzoDOKcTCSCvF28N2m4tm8cTjawuIBYlDqOGQNAD+PI+sGiLOgi90 4q71CUYCX63YNPj9pq6RyGH1pW2jxw8= =K095 -----END PGP SIGNATURE----- --w/C85oP5VDfuXKdY--