From nobody Mon Jul 05 22:21:17 2021 X-Original-To: freebsd-hackers@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 171BE11DE055 for ; Mon, 5 Jul 2021 22:21:23 +0000 (UTC) (envelope-from gusev.vitaliy@gmail.com) Received: from mail-lf1-x12d.google.com (mail-lf1-x12d.google.com [IPv6:2a00:1450:4864:20::12d]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4GJgBp719Kz4cmJ; Mon, 5 Jul 2021 22:21:22 +0000 (UTC) (envelope-from gusev.vitaliy@gmail.com) Received: by mail-lf1-x12d.google.com with SMTP id p16so7326296lfc.5; Mon, 05 Jul 2021 15:21:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=IIlhWGwK0wegr8qrlm3GRTH3aGcLbD4xXKlBBegcnmc=; b=jcazQ6CNpd7b63pKkyMg2ysceBORFcfKAYWXS2GVcyOL1zo2XHE5BAqZ7b38oZr6s/ lVIVz+Vz2CpQ4ssXnrdcrT2q7LgkvTevvkUuAVZtSnwLwTBTKCZKUKNcV6BM7KizToJZ D6aZAzQFzYwFczOLK6OWwl6WM981Xvi6dhV50L9oqTwCwI7pNnbhVUEYf0G7A7CbZRvi wgJS0c04TvMbS3Sb8xw5LdZXiOH7UI8+v8ILoxtEAKOUXqcyWivS8WFwCHNSvTmS6Yqs NcBihV/WsPJIizx0GGo7i6/IjgR4/mCjXCevo1CO7qX8NVAvZkcKPYpEtF8c9ZdvRepC YMOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=IIlhWGwK0wegr8qrlm3GRTH3aGcLbD4xXKlBBegcnmc=; b=Tr1gsnGCN/tJhgEhPZZaHph/tFSZTdlwiDKzS9CRJkUm7AjrSgctV5YgnhStqLyW1e 1SksV59KDLskJdB1MoFDhULZi4oXihBsbikPjnnWuqQm+rEagn16TANTXY32nTmbeurW lNd8y2DRF16hXJSrXD1F8f0Evd01cUxE0sNCXTc4InNZujQuqvdIB01W03RrO9VLPcTU WzkxAFs2geY4t3M2kR94m32vJ2QPFpDkUbMn+JesJwRBvXsuCn9Mll1HssyvtyuJmhID zWG/5cnN8FOlKrwWl47qbxfPv4CCDgIRkGu+ELEC08qSqPVeKwaAIdaWUj/bJ6tFqVW8 xqiA== X-Gm-Message-State: AOAM530DimWJ3ys+QjUHYduXW94eDJ7JstjNGx/m28U9pW97lh37kNeG tXYC/meZBu+LCu/tGrlKl9M= X-Google-Smtp-Source: ABdhPJyXd1e8IvXHNzKmHb+4I/NF4bxoDaHyuc8KMtxeRPw03FgtT3l9Af/cm89Ddcl1Y711ST0vMg== X-Received: by 2002:ac2:55a7:: with SMTP id y7mr12225974lfg.179.1625523681153; Mon, 05 Jul 2021 15:21:21 -0700 (PDT) Received: from [10.42.0.5] ([188.187.60.230]) by smtp.gmail.com with ESMTPSA id p15sm370977lfh.161.2021.07.05.15.21.20 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 05 Jul 2021 15:21:20 -0700 (PDT) From: Vitaliy Gusev Message-Id: Content-Type: multipart/alternative; boundary="Apple-Mail=_840FE2D4-B08C-45F8-8446-FEF886AF0FC5" List-Id: Technical discussions relating to FreeBSD List-Archive: https://lists.freebsd.org/archives/freebsd-hackers List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-hackers@freebsd.org Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.120.23.2.7\)) Subject: Re: madvise(MADV_FREE) doesn't work in some cases? Date: Tue, 6 Jul 2021 01:21:17 +0300 In-Reply-To: <2A7A1E60-766D-427B-8288-E92B4090022E@gmail.com> Cc: freebsd-hackers@freebsd.org, gljennjohn@gmail.com, Mark Johnston , Peter Grehan To: Konstantin Belousov References: <20210703065420.6dbafb5f@ernst.home> <2390FA9B-319E-45D4-BEA7-10878E43AD4B@gmail.com> <2A7A1E60-766D-427B-8288-E92B4090022E@gmail.com> X-Mailer: Apple Mail (2.3608.120.23.2.7) X-Rspamd-Queue-Id: 4GJgBp719Kz4cmJ X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; TAGGED_FROM(0.00)[]; REPLY(-4.00)[] X-ThisMailContainsUnwantedMimeParts: Y --Apple-Mail=_840FE2D4-B08C-45F8-8446-FEF886AF0FC5 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Comments are below, > commit 0392eb3c93b7dacc31dbdf8ec2fc40fa5ba67c62 > Author: Konstantin Belousov > > Date: Mon Jul 5 21:53:22 2021 +0300 >=20 > madvise(MADV_FREE): try harder to handle shadow chain >=20 > In particular, collapse top object and see if there is no backing = object > after, which means that we would not revert to older content if = drop the > top object. >=20 > diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c > index 1ac4ccf72f11..80abac223f29 100644 > --- a/sys/vm/vm_map.c > +++ b/sys/vm/vm_map.c > @@ -3033,6 +3033,7 @@ vm_map_madvise( > entry =3D vm_map_entry_succ(entry); > for (; entry->start < end; > entry =3D vm_map_entry_succ(entry)) { > + vm_object_t obj; > vm_offset_t useEnd, useStart; >=20 > if ((entry->eflags & MAP_ENTRY_IS_SUB_MAP) !=3D = 0) > @@ -3046,9 +3047,16 @@ vm_map_madvise( > * backing object can change. > */ > if (behav =3D=3D MADV_FREE && > - entry->object.vm_object !=3D NULL && > - entry->object.vm_object->backing_object !=3D = NULL) > - continue; > + (obj =3D entry->object.vm_object) !=3D NULL = && > + obj->backing_object !=3D NULL) { > + VM_OBJECT_WLOCK(obj); > + if ((obj->flags & OBJ_DEAD) !=3D 0) > + continue; Here is object is left locked, however I didn=E2=80=99t met this = condition. > + vm_object_collapse(obj); > + VM_OBJECT_WUNLOCK(obj); > + if (obj->backing_object !=3D NULL) > + continue; After testing it looks that backing_object is not null here, memory is = not freed and mmapfork test program is still killed. Any ideas? =E2=80=94=E2=80=94 Vitaliy Gusev= --Apple-Mail=_840FE2D4-B08C-45F8-8446-FEF886AF0FC5--