Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D8B78C282CE for ; Mon, 22 Apr 2019 21:04:12 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id AD29220896 for ; Mon, 22 Apr 2019 21:04:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729120AbfDVVEE (ORCPT ); Mon, 22 Apr 2019 17:04:04 -0400 Received: from mx1.redhat.com ([209.132.183.28]:39908 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728996AbfDVVEE (ORCPT ); Mon, 22 Apr 2019 17:04:04 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 4E1C5882EA; Mon, 22 Apr 2019 21:04:03 +0000 (UTC) Received: from segfault.boston.devel.redhat.com (segfault.boston.devel.redhat.com [10.19.60.26]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 1D7F260141; Mon, 22 Apr 2019 21:03:51 +0000 (UTC) From: Jeff Moyer To: Dan Williams Cc: Christoph Hellwig , Jan Kara , Pankaj Gupta , linux-nvdimm , Linux Kernel Mailing List , virtualization@lists.linux-foundation.org, KVM list , linux-fsdevel , Linux ACPI , Qemu Developers , linux-ext4 , linux-xfs , Ross Zwisler , Vishal L Verma , Dave Jiang , "Michael S. Tsirkin" , Jason Wang , Matthew Wilcox , "Rafael J. Wysocki" , Len Brown , "Theodore Ts'o" , Andreas Dilger , "Darrick J. Wong" , lcapitulino@redhat.com, Kevin Wolf , Igor Mammedov , Nitesh Narayan Lal , Rik van Riel , Stefan Hajnoczi , Andrea Arcangeli , David Hildenbrand , david , cohuck@redhat.com, Xiao Guangrong , Paolo Bonzini , kilobyte@angband.pl, yuval shaia Subject: Re: [PATCH v5 1/6] libnvdimm: nd_region flush callback support References: <20190410040826.24371-1-pagupta@redhat.com> <20190410040826.24371-2-pagupta@redhat.com> <20190412083230.GA29850@quack2.suse.cz> <20190418161833.GA22970@infradead.org> X-PGP-KeyID: 1F78E1B4 X-PGP-CertKey: F6FE 280D 8293 F72C 65FD 5A58 1FF8 A7CA 1F78 E1B4 Date: Mon, 22 Apr 2019 17:03:50 -0400 In-Reply-To: (Dan Williams's message of "Mon, 22 Apr 2019 12:44:21 -0700") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Mon, 22 Apr 2019 21:04:04 +0000 (UTC) Sender: linux-ext4-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org Dan Williams writes: > On Mon, Apr 22, 2019 at 8:59 AM Jeff Moyer wrote: >> >> Dan Williams writes: >> >> > On Thu, Apr 18, 2019 at 9:18 AM Christoph Hellwig wrote: >> >> >> >> On Thu, Apr 18, 2019 at 09:05:05AM -0700, Dan Williams wrote: >> >> > > > I'd either add a comment about avoiding retpoline overhead here or just >> >> > > > make ->flush == NULL mean generic_nvdimm_flush(). Just so that people don't >> >> > > > get confused by the code. >> >> > > >> >> > > Isn't this premature optimization? I really don't like adding things >> >> > > like this without some numbers to show it's worth it. >> >> > >> >> > I don't think it's premature given this optimization technique is >> >> > already being deployed elsewhere, see: >> >> > >> >> > https://lwn.net/Articles/774347/ >> >> >> >> For one this one was backed by numbers, and second after feedback >> >> from Linux we switched to the NULL pointer check instead. >> > >> > Ok I should have noticed the switch to NULL pointer check. However, >> > the question still stands do we want everyone to run numbers to >> > justify this optimization, or make it a new common kernel coding >> > practice to do: >> > >> > if (!object->op) >> > generic_op(object); >> > else >> > object->op(object); >> > >> > ...in hot paths? >> >> I don't think nvdimm_flush is a hot path. Numbers of some >> representative workload would prove one of us right. > > I'd rather say that the if "if (!op) do_generic()" pattern is more > readable in the general case, saves grepping for who set the op in the > common case. The fact that it has the potential to be faster is gravy > at that point. If the primary motivation is performance, then I'd expect performance numbers to back it up. If that isn't the primary motivation, then choose whichever way you feel is appropriate. Cheers, Jeff