From owner-svn-src-head@freebsd.org Sun Dec 13 19:10:06 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 8A1BF4C112B; Sun, 13 Dec 2020 19:10:06 +0000 (UTC) (envelope-from mjguzik@gmail.com) Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com [IPv6:2a00:1450:4864:20::32f]) (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 4CvDcG343Yz4mZt; Sun, 13 Dec 2020 19:10:06 +0000 (UTC) (envelope-from mjguzik@gmail.com) Received: by mail-wm1-x32f.google.com with SMTP id e25so13313547wme.0; Sun, 13 Dec 2020 11:10:06 -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=WrS1KG5iCmCZ1AzCDuBBO2UXQ0egfcQPbNG9LftVUHc=; b=JBkPA0SF9uK2W1dKqsM3pv/rGrPr/Qs8J4zsBMXWItdiKX3dKxr4jCwwrKfUxGee9q 843+kjbpmuHkWMULjP98AY9PQA9As/INELxNWag0A7vcwJznQc2GOdDB5ImnDes6N1Qd PYElc5Yz2VHSfGiEorNtTFl6tFF/cXlZBQNkPfNul9E3+DUQFPwpTtT5Ld236L3UlrwN 30tgWtrX6IL34QraXbjmPGZf8hQfxJGCcS/hCOFdQ0WtBBp9d0WtgQvPeElEd/GXcGgz yJqQAW2YuJU1pIDSxf6lPkZDTe5Yxw1Gm5bkAwdPc6PJwsObaWWP+VRqqRUok1FvZD/U cttg== 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=WrS1KG5iCmCZ1AzCDuBBO2UXQ0egfcQPbNG9LftVUHc=; b=U/Q0C/bewNZjgaC+rm5Uk2rVhL2/oFKl/1Ld3+kxBj9b/aKXA/CdgWfG9cIOolQSW3 QbOUxX0qQulTmDi3LEvge/7dYJyQGHqGr/Cu067/hyj2mtEYWayqv2bhcpjLasGGsf3o OACQMg6nmvvvlaPNuqWqHCM5hZKgjcr0+wrzn5SvlGx0qTqZCaNO+PZpXkO1s8qDj80w z4kqNjI9/biNrddu1K+6zzH0hVlPDqZOOaGdNoRO4tsUNG4g98ZreqBa3BBYFVb2m3o3 Th9LfEYDcE/Nxy1D3+cE9VQG/ZXUVHqVOXBjpQLsOt97mr7WvZ9jGVC2U96XXGgIO4Gj BiwQ== X-Gm-Message-State: AOAM531Koj8cZf05ks0z9aB2tbjwTIDQofke5O3A7HgKfr7fck4QXxCX ldAQ+DHF3kB07klMqbdz4JqU8DWRsbYGizIGB+Ge0fvt X-Google-Smtp-Source: ABdhPJw5c+9rs4CQIENYTMuHZcd13VYmGuXD30i1EPD7xAb4P0DmuUCPqlLNvoQLhQMU3R+Ahe+WBVIQofcj2gwYMcU= X-Received: by 2002:a1c:f00a:: with SMTP id a10mr24204869wmb.83.1607886603552; Sun, 13 Dec 2020 11:10:03 -0800 (PST) MIME-Version: 1.0 Received: by 2002:adf:f811:0:0:0:0:0 with HTTP; Sun, 13 Dec 2020 11:10:02 -0800 (PST) In-Reply-To: References: <202012131806.0BDI6Puj082474@repo.freebsd.org> From: Mateusz Guzik Date: Sun, 13 Dec 2020 20:10:02 +0100 Message-ID: Subject: Re: svn commit: r368609 - in head/sys: kern sys To: Alexander Richardson Cc: src-committers , svn-src-all , svn-src-head Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 4CvDcG343Yz4mZt X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] 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: Sun, 13 Dec 2020 19:10:06 -0000 Unfortunately inlines mess with __FILE__/__LINE__ by showing the implementation instead of the consumer. This in particular matters with https://reviews.freebsd.org/D27600 I failed to find replacements for __ macros which don't suffer the problem. On 12/13/20, Alexander Richardson wrote: > On Sun, 13 Dec 2020 at 18:06, Mateusz Guzik wrote: >> >> Author: mjg >> Date: Sun Dec 13 18:06:24 2020 >> New Revision: 368609 >> URL: https://svnweb.freebsd.org/changeset/base/368609 >> >> Log: >> fd: fix fdrop prediction when closing a fd >> >> Most of the time this is the last reference, contrary to typical fdrop >> use. >> >> Modified: >> head/sys/kern/kern_descrip.c >> head/sys/sys/file.h >> >> Modified: head/sys/kern/kern_descrip.c >> ============================================================================== >> --- head/sys/kern/kern_descrip.c Sun Dec 13 16:26:37 2020 >> (r368608) >> +++ head/sys/kern/kern_descrip.c Sun Dec 13 18:06:24 2020 >> (r368609) >> @@ -2766,7 +2766,7 @@ closef(struct file *fp, struct thread *td) >> FILEDESC_XUNLOCK(fdp); >> } >> } >> - return (fdrop(fp, td)); >> + return (fdrop_close(fp, td)); >> } >> >> /* >> >> Modified: head/sys/sys/file.h >> ============================================================================== >> --- head/sys/sys/file.h Sun Dec 13 16:26:37 2020 (r368608) >> +++ head/sys/sys/file.h Sun Dec 13 18:06:24 2020 (r368609) >> @@ -299,6 +299,17 @@ fhold(struct file *fp) >> _error; \ >> }) >> >> +#define fdrop_close(fp, td) ({ \ >> + struct file *_fp; \ >> + int _error; \ >> + \ >> + _error = 0; \ >> + _fp = (fp); \ >> + if (__predict_true(refcount_release(&_fp->f_count))) \ >> + _error = _fdrop(_fp, td); \ >> + _error; \ >> +}) >> + >> static __inline fo_rdwr_t fo_read; >> static __inline fo_rdwr_t fo_write; >> static __inline fo_truncate_t fo_truncate; > > Wouldn't this be more readable as a static __inline function (or if > you are concerned about it not being inlined, __always_inline)? Also > means you can drop the temporary _fp variable that's there to avoid > side-effects in macro args. > > Regards, > Alex > -- Mateusz Guzik