From owner-svn-src-head@freebsd.org Thu Nov 12 22:14:52 2020 Return-Path: Delivered-To: svn-src-head@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 95F2C46653F; Thu, 12 Nov 2020 22:14:52 +0000 (UTC) (envelope-from mjguzik@gmail.com) Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com [IPv6:2a00:1450:4864:20::334]) (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 4CXG9l678Xz4q5T; Thu, 12 Nov 2020 22:14:51 +0000 (UTC) (envelope-from mjguzik@gmail.com) Received: by mail-wm1-x334.google.com with SMTP id 10so6550075wml.2; Thu, 12 Nov 2020 14:14:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=Soosa3Kxfg5+F5WZhnp6wJJvvWgViW4M8k+Qk1OazP4=; b=XJyAizW+c/0iK13Ysn1noaXF5zjiCDTZNl0oIay0nw705iQRcVH40tBQu+BggOKD/R 5zcsy7V2L4DRk7BtWucpPyRR8mDDUs8diOJ9auDvs749KUsE8Dobs/AsLorB+NlXUgKI HZWKdsfwYOOZSUjtmXSVTkJPLrk7f6VzdSqqE7whZpr5j/mGiX7ecXPA+6VWSpxGu2p5 EbqFLpu1cAMVjxw5XB6hTeGeM1hcKcjjNDrf2mhR0f9VpzGiudXD3REiXMWVvq5NHnCV 9+zOgmlfanHzUOP0nP8keDp3B3s1D0w/sXhvecEbPq8BKTf+PPe12nUmF36aIVNPYEXW OUFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=Soosa3Kxfg5+F5WZhnp6wJJvvWgViW4M8k+Qk1OazP4=; b=TOv5IljERDntUMm5/Y1Ro7VYk349fMognYTerPyuMtrtgnJBNkjblhR29eew8cZWms cn6UXDdNIZP5OIuUV69cSgNV0E4S6FKjyewsY4GqG04kNXesZ0IepmfQ8yjx6p5t6Wpa eZjKGEjTmc0CnPE9ZxRCEU7FNWOsxyyMi0PHGkaFCBypZvRI3zW1yVXXrT6k2MQAKsep /H0E2BgmMp9sGfCbkSOz2D9kXB9RPUhpPvhPEARNRyJ528t2AmhcZmf7L27VhruWEov+ S2DxoJEvqMh0N+RBaTMgeK+cCBto15TmtBu7PPlg1WdBlZ6XHtIAjjo+UKL7Yw+j6/c2 7Rrw== X-Gm-Message-State: AOAM532mngVd1BydogwrITxeGNsx1FdJmcIBuQon2wR7Y0I09tlqCia1 tUT5G0WAoTgNW28kvFEVKwLKBetdJ9MVXPoXFFw= X-Google-Smtp-Source: ABdhPJzZsP7DwKAbSxD1Qg1raIRG9kkQ61UjAgAwRhVNnxhHXfmR5r2UbAv41Yj79wlaktK7ZSFVx3zTO73fGZLNx7E= X-Received: by 2002:a1c:e442:: with SMTP id b63mr1878799wmh.10.1605219289770; Thu, 12 Nov 2020 14:14:49 -0800 (PST) MIME-Version: 1.0 Received: by 2002:adf:dec7:0:0:0:0:0 with HTTP; Thu, 12 Nov 2020 14:14:48 -0800 (PST) In-Reply-To: References: <202011122020.0ACKKvFa090942@repo.freebsd.org> From: Mateusz Guzik Date: Thu, 12 Nov 2020 23:14:48 +0100 Message-ID: Subject: Re: svn commit: r367626 - head/sys/geom/bde To: Oliver Pinter Cc: "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , "svn-src-head@freebsd.org" Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 4CXG9l678Xz4q5T X-Spamd-Bar: --- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmail.com header.s=20161025 header.b=XJyAizW+; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (mx1.freebsd.org: domain of mjguzik@gmail.com designates 2a00:1450:4864:20::334 as permitted sender) smtp.mailfrom=mjguzik@gmail.com X-Spamd-Result: default: False [-4.00 / 15.00]; TO_DN_EQ_ADDR_SOME(0.00)[]; TO_DN_SOME(0.00)[]; FREEMAIL_FROM(0.00)[gmail.com]; R_SPF_ALLOW(-0.20)[+ip6:2a00:1450:4000::/36]; DKIM_TRACE(0.00)[gmail.com:+]; DMARC_POLICY_ALLOW(-0.50)[gmail.com,none]; NEURAL_HAM_SHORT(-1.00)[-1.000]; FREEMAIL_TO(0.00)[gmail.com]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; RBL_DBL_DONT_QUERY_IPS(0.00)[2a00:1450:4864:20::334:from]; FREEMAIL_ENVFROM(0.00)[gmail.com]; ASN(0.00)[asn:15169, ipnet:2a00:1450::/32, country:US]; DWL_DNSWL_NONE(0.00)[gmail.com:dkim]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; R_DKIM_ALLOW(-0.20)[gmail.com:s=20161025]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; NEURAL_HAM_LONG(-1.00)[-1.000]; TAGGED_RCPT(0.00)[]; MIME_GOOD(-0.10)[text/plain]; SPAMHAUS_ZRD(0.00)[2a00:1450:4864:20::334:from:127.0.2.255]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCVD_IN_DNSWL_NONE(0.00)[2a00:1450:4864:20::334:from]; RCVD_COUNT_TWO(0.00)[2]; RCVD_TLS_ALL(0.00)[]; MAILMAN_DEST(0.00)[svn-src-all,svn-src-head] X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Nov 2020 22:14:52 -0000 On 11/12/20, Oliver Pinter wrote: > On Thursday, November 12, 2020, Mateusz Guzik wrote: > >> Author: mjg >> Date: Thu Nov 12 20:20:57 2020 >> New Revision: 367626 >> URL: https://svnweb.freebsd.org/changeset/base/367626 >> >> Log: >> gbde: replace malloc_last_fail with a kludge >> >> This facilitates removal of malloc_last_fail without really impacting >> anything. >> >> Modified: >> head/sys/geom/bde/g_bde_work.c >> >> Modified: head/sys/geom/bde/g_bde_work.c >> ============================================================ >> ================== >> --- head/sys/geom/bde/g_bde_work.c Thu Nov 12 20:20:43 2020 >> (r367625) >> +++ head/sys/geom/bde/g_bde_work.c Thu Nov 12 20:20:57 2020 >> (r367626) >> @@ -77,6 +77,20 @@ >> #include >> #include >> >> +/* >> + * FIXME: This used to call malloc_last_fail which in practice was >> almost >> + * guaranteed to return time_uptime even in face of severe memory >> shortage. >> + * As GBDE is the only consumer the kludge below was added to facilitate >> the >> + * removal with minimial changes. The code should be fixed to respond to >> memory >> + * pressure (e.g., by using lowmem eventhandler) instead. >> + */ >> +static int >> +g_bde_malloc_last_fail(void) >> +{ >> + >> + return (time_uptime); >> +} >> + > > > Previously malloc_last_fail returned a relatively small number - if i read > the code correctly: > > -int > -malloc_last_fail(void) > -{ > - > - return (time_uptime - t_malloc_fail); > -} > - > > >> static void g_bde_delete_sector(struct g_bde_softc *wp, struct >> g_bde_sector *sp); >> static struct g_bde_sector * g_bde_new_sector(struct g_bde_work *wp, >> u_int len); >> static void g_bde_release_keysector(struct g_bde_work *wp); >> @@ -210,7 +224,7 @@ g_bde_get_keysector(struct g_bde_work *wp) >> g_trace(G_T_TOPOLOGY, "g_bde_get_keysector(%p, %jd)", wp, >> (intmax_t)offset); >> sc = wp->softc; >> >> - if (malloc_last_fail() < g_bde_ncache) >> + if (g_bde_malloc_last_fail() < g_bde_ncache) >> g_bde_purge_sector(sc, -1); > > > And in this case, the semantic change renders all of these calls from alway > true to always false expression. > t_malloc_fail value was almost guaranteed to always be 0, so there is no actual change. The hack was put in place so that gbde does not stall work on malloc. gbde itself definitely needs love. > >> >> sp = TAILQ_FIRST(&sc->freelist); >> @@ -228,7 +242,7 @@ g_bde_get_keysector(struct g_bde_work *wp) >> if (sp->ref == 1) >> sp->owner = wp; >> } else { >> - if (malloc_last_fail() < g_bde_ncache) { >> + if (g_bde_malloc_last_fail() < g_bde_ncache) { >> TAILQ_FOREACH(sp, &sc->freelist, list) >> if (sp->ref == 0) >> break; >> @@ -311,7 +325,7 @@ g_bde_purge_sector(struct g_bde_softc *sc, int >> fractio >> if (fraction > 0) >> n = sc->ncache / fraction + 1; >> else >> - n = g_bde_ncache - malloc_last_fail(); >> + n = g_bde_ncache - g_bde_malloc_last_fail(); >> if (n < 0) >> return; >> if (n > sc->ncache) >> _______________________________________________ >> svn-src-head@freebsd.org mailing list >> https://lists.freebsd.org/mailman/listinfo/svn-src-head >> To unsubscribe, send any mail to "svn-src-head-unsubscribe@freebsd.org" >> > -- Mateusz Guzik