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 X-Spam-Level: X-Spam-Status: No, score=-4.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED 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 612CBC282E1 for ; Thu, 25 Apr 2019 10:02:53 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 3BADB206BA for ; Thu, 25 Apr 2019 10:02:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729380AbfDYKAN (ORCPT ); Thu, 25 Apr 2019 06:00:13 -0400 Received: from Galois.linutronix.de ([146.0.238.70]:57937 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729368AbfDYKAM (ORCPT ); Thu, 25 Apr 2019 06:00:12 -0400 Received: from localhost ([127.0.0.1] helo=nanos.tec.linutronix.de) by Galois.linutronix.de with esmtp (Exim 4.80) (envelope-from ) id 1hJbA3-0001t5-BV; Thu, 25 Apr 2019 11:59:23 +0200 Message-Id: <20190425094802.533968922@linutronix.de> User-Agent: quilt/0.65 Date: Thu, 25 Apr 2019 11:45:08 +0200 From: Thomas Gleixner To: LKML Cc: Josh Poimboeuf , x86@kernel.org, Andy Lutomirski , dm-devel@redhat.com, Mike Snitzer , Alasdair Kergon , Steven Rostedt , Alexander Potapenko , Alexey Dobriyan , Andrew Morton , Christoph Lameter , Pekka Enberg , linux-mm@kvack.org, David Rientjes , Catalin Marinas , Dmitry Vyukov , Andrey Ryabinin , kasan-dev@googlegroups.com, Mike Rapoport , Akinobu Mita , Christoph Hellwig , iommu@lists.linux-foundation.org, Robin Murphy , Marek Szyprowski , Johannes Thumshirn , David Sterba , Chris Mason , Josef Bacik , linux-btrfs@vger.kernel.org, Daniel Vetter , intel-gfx@lists.freedesktop.org, Joonas Lahtinen , Maarten Lankhorst , dri-devel@lists.freedesktop.org, David Airlie , Jani Nikula , Rodrigo Vivi , Tom Zanussi , Miroslav Benes , linux-arch@vger.kernel.org Subject: [patch V3 15/29] dm persistent data: Simplify stack trace handling References: <20190425094453.875139013@linutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-btrfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-btrfs@vger.kernel.org Replace the indirection through struct stack_trace with an invocation of the storage array based interface. This results in less storage space and indirection. Signed-off-by: Thomas Gleixner Cc: dm-devel@redhat.com Cc: Mike Snitzer Cc: Alasdair Kergon --- drivers/md/persistent-data/dm-block-manager.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) --- a/drivers/md/persistent-data/dm-block-manager.c +++ b/drivers/md/persistent-data/dm-block-manager.c @@ -35,7 +35,10 @@ #define MAX_HOLDERS 4 #define MAX_STACK 10 -typedef unsigned long stack_entries[MAX_STACK]; +struct stack_store { + unsigned int nr_entries; + unsigned long entries[MAX_STACK]; +}; struct block_lock { spinlock_t lock; @@ -44,8 +47,7 @@ struct block_lock { struct task_struct *holders[MAX_HOLDERS]; #ifdef CONFIG_DM_DEBUG_BLOCK_STACK_TRACING - struct stack_trace traces[MAX_HOLDERS]; - stack_entries entries[MAX_HOLDERS]; + struct stack_store traces[MAX_HOLDERS]; #endif }; @@ -73,7 +75,7 @@ static void __add_holder(struct block_lo { unsigned h = __find_holder(lock, NULL); #ifdef CONFIG_DM_DEBUG_BLOCK_STACK_TRACING - struct stack_trace *t; + struct stack_store *t; #endif get_task_struct(task); @@ -81,11 +83,7 @@ static void __add_holder(struct block_lo #ifdef CONFIG_DM_DEBUG_BLOCK_STACK_TRACING t = lock->traces + h; - t->nr_entries = 0; - t->max_entries = MAX_STACK; - t->entries = lock->entries[h]; - t->skip = 2; - save_stack_trace(t); + t->nr_entries = stack_trace_save(t->entries, MAX_STACK, 2); #endif } @@ -106,7 +104,8 @@ static int __check_holder(struct block_l DMERR("recursive lock detected in metadata"); #ifdef CONFIG_DM_DEBUG_BLOCK_STACK_TRACING DMERR("previously held here:"); - print_stack_trace(lock->traces + i, 4); + stack_trace_print(lock->traces[i].entries, + lock->traces[i].nr_entries, 4); DMERR("subsequent acquisition attempted here:"); dump_stack(); From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Gleixner Subject: [patch V3 15/29] dm persistent data: Simplify stack trace handling Date: Thu, 25 Apr 2019 11:45:08 +0200 Message-ID: <20190425094802.533968922@linutronix.de> References: <20190425094453.875139013@linutronix.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: LKML Cc: Mike Snitzer , David Airlie , Catalin Marinas , dri-devel@lists.freedesktop.org, linux-mm@kvack.org, dm-devel@redhat.com, Alexander Potapenko , Christoph Lameter , Miroslav Benes , Christoph Hellwig , Alasdair Kergon , Marek Szyprowski , linux-arch@vger.kernel.org, x86@kernel.org, kasan-dev@googlegroups.com, David Rientjes , Andrey Ryabinin , Alexey Dobriyan , intel-gfx@lists.freedesktop.org, Johannes Thumshirn , Akinobu Mita , Steven Rostedt , Josef Bacik , Mike Rapoport , Andy Lutomirski , Josh Poimboeuf List-Id: linux-arch.vger.kernel.org UmVwbGFjZSB0aGUgaW5kaXJlY3Rpb24gdGhyb3VnaCBzdHJ1Y3Qgc3RhY2tfdHJhY2Ugd2l0aCBh biBpbnZvY2F0aW9uIG9mCnRoZSBzdG9yYWdlIGFycmF5IGJhc2VkIGludGVyZmFjZS4gVGhpcyBy ZXN1bHRzIGluIGxlc3Mgc3RvcmFnZSBzcGFjZSBhbmQKaW5kaXJlY3Rpb24uCgpTaWduZWQtb2Zm LWJ5OiBUaG9tYXMgR2xlaXhuZXIgPHRnbHhAbGludXRyb25peC5kZT4KQ2M6IGRtLWRldmVsQHJl ZGhhdC5jb20KQ2M6IE1pa2UgU25pdHplciA8c25pdHplckByZWRoYXQuY29tPgpDYzogQWxhc2Rh aXIgS2VyZ29uIDxhZ2tAcmVkaGF0LmNvbT4KLS0tCiBkcml2ZXJzL21kL3BlcnNpc3RlbnQtZGF0 YS9kbS1ibG9jay1tYW5hZ2VyLmMgfCAgIDE5ICsrKysrKysrKy0tLS0tLS0tLS0KIDEgZmlsZSBj aGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKLS0tIGEvZHJpdmVycy9t ZC9wZXJzaXN0ZW50LWRhdGEvZG0tYmxvY2stbWFuYWdlci5jCisrKyBiL2RyaXZlcnMvbWQvcGVy c2lzdGVudC1kYXRhL2RtLWJsb2NrLW1hbmFnZXIuYwpAQCAtMzUsNyArMzUsMTAgQEAKICNkZWZp bmUgTUFYX0hPTERFUlMgNAogI2RlZmluZSBNQVhfU1RBQ0sgMTAKIAotdHlwZWRlZiB1bnNpZ25l ZCBsb25nIHN0YWNrX2VudHJpZXNbTUFYX1NUQUNLXTsKK3N0cnVjdCBzdGFja19zdG9yZSB7CisJ dW5zaWduZWQgaW50CW5yX2VudHJpZXM7CisJdW5zaWduZWQgbG9uZwllbnRyaWVzW01BWF9TVEFD S107Cit9OwogCiBzdHJ1Y3QgYmxvY2tfbG9jayB7CiAJc3BpbmxvY2tfdCBsb2NrOwpAQCAtNDQs OCArNDcsNyBAQCBzdHJ1Y3QgYmxvY2tfbG9jayB7CiAJc3RydWN0IHRhc2tfc3RydWN0ICpob2xk ZXJzW01BWF9IT0xERVJTXTsKIAogI2lmZGVmIENPTkZJR19ETV9ERUJVR19CTE9DS19TVEFDS19U UkFDSU5HCi0Jc3RydWN0IHN0YWNrX3RyYWNlIHRyYWNlc1tNQVhfSE9MREVSU107Ci0Jc3RhY2tf ZW50cmllcyBlbnRyaWVzW01BWF9IT0xERVJTXTsKKwlzdHJ1Y3Qgc3RhY2tfc3RvcmUgdHJhY2Vz W01BWF9IT0xERVJTXTsKICNlbmRpZgogfTsKIApAQCAtNzMsNyArNzUsNyBAQCBzdGF0aWMgdm9p ZCBfX2FkZF9ob2xkZXIoc3RydWN0IGJsb2NrX2xvCiB7CiAJdW5zaWduZWQgaCA9IF9fZmluZF9o b2xkZXIobG9jaywgTlVMTCk7CiAjaWZkZWYgQ09ORklHX0RNX0RFQlVHX0JMT0NLX1NUQUNLX1RS QUNJTkcKLQlzdHJ1Y3Qgc3RhY2tfdHJhY2UgKnQ7CisJc3RydWN0IHN0YWNrX3N0b3JlICp0Owog I2VuZGlmCiAKIAlnZXRfdGFza19zdHJ1Y3QodGFzayk7CkBAIC04MSwxMSArODMsNyBAQCBzdGF0 aWMgdm9pZCBfX2FkZF9ob2xkZXIoc3RydWN0IGJsb2NrX2xvCiAKICNpZmRlZiBDT05GSUdfRE1f REVCVUdfQkxPQ0tfU1RBQ0tfVFJBQ0lORwogCXQgPSBsb2NrLT50cmFjZXMgKyBoOwotCXQtPm5y X2VudHJpZXMgPSAwOwotCXQtPm1heF9lbnRyaWVzID0gTUFYX1NUQUNLOwotCXQtPmVudHJpZXMg PSBsb2NrLT5lbnRyaWVzW2hdOwotCXQtPnNraXAgPSAyOwotCXNhdmVfc3RhY2tfdHJhY2UodCk7 CisJdC0+bnJfZW50cmllcyA9IHN0YWNrX3RyYWNlX3NhdmUodC0+ZW50cmllcywgTUFYX1NUQUNL LCAyKTsKICNlbmRpZgogfQogCkBAIC0xMDYsNyArMTA0LDggQEAgc3RhdGljIGludCBfX2NoZWNr X2hvbGRlcihzdHJ1Y3QgYmxvY2tfbAogCQkJRE1FUlIoInJlY3Vyc2l2ZSBsb2NrIGRldGVjdGVk IGluIG1ldGFkYXRhIik7CiAjaWZkZWYgQ09ORklHX0RNX0RFQlVHX0JMT0NLX1NUQUNLX1RSQUNJ TkcKIAkJCURNRVJSKCJwcmV2aW91c2x5IGhlbGQgaGVyZToiKTsKLQkJCXByaW50X3N0YWNrX3Ry YWNlKGxvY2stPnRyYWNlcyArIGksIDQpOworCQkJc3RhY2tfdHJhY2VfcHJpbnQobG9jay0+dHJh Y2VzW2ldLmVudHJpZXMsCisJCQkJCSAgbG9jay0+dHJhY2VzW2ldLm5yX2VudHJpZXMsIDQpOwog CiAJCQlETUVSUigic3Vic2VxdWVudCBhY3F1aXNpdGlvbiBhdHRlbXB0ZWQgaGVyZToiKTsKIAkJ CWR1bXBfc3RhY2soKTsKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZng= 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 X-Spam-Level: X-Spam-Status: No, score=-4.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED autolearn=ham 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 AAA2AC10F03 for ; Thu, 25 Apr 2019 10:36:06 +0000 (UTC) Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 858DD2084B for ; Thu, 25 Apr 2019 10:36:06 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 858DD2084B Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=linutronix.de Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=iommu-bounces@lists.linux-foundation.org Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 560071D43; Thu, 25 Apr 2019 10:35:10 +0000 (UTC) Received: from smtp2.linuxfoundation.org (smtp2.linux-foundation.org [172.17.192.36]) by mail.linuxfoundation.org (Postfix) with ESMTPS id E23DF1D27 for ; Thu, 25 Apr 2019 10:34:33 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from Galois.linutronix.de (Galois.linutronix.de [146.0.238.70]) by smtp2.linuxfoundation.org (Postfix) with ESMTPS id 71C8C1DD47 for ; Thu, 25 Apr 2019 10:34:33 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=nanos.tec.linutronix.de) by Galois.linutronix.de with esmtp (Exim 4.80) (envelope-from ) id 1hJbA3-0001t5-BV; Thu, 25 Apr 2019 11:59:23 +0200 Message-Id: <20190425094802.533968922@linutronix.de> User-Agent: quilt/0.65 Date: Thu, 25 Apr 2019 11:45:08 +0200 From: Thomas Gleixner To: LKML Subject: [patch V3 15/29] dm persistent data: Simplify stack trace handling References: <20190425094453.875139013@linutronix.de> MIME-Version: 1.0 Cc: Mike Snitzer , David Airlie , Catalin Marinas , Joonas Lahtinen , dri-devel@lists.freedesktop.org, linux-mm@kvack.org, dm-devel@redhat.com, Alexander Potapenko , Christoph Lameter , Miroslav Benes , Christoph Hellwig , Alasdair Kergon , linux-arch@vger.kernel.org, x86@kernel.org, kasan-dev@googlegroups.com, David Rientjes , Andrey Ryabinin , Alexey Dobriyan , intel-gfx@lists.freedesktop.org, Johannes Thumshirn , Maarten Lankhorst , Akinobu Mita , Steven Rostedt , Josef Bacik , Rodrigo Vivi , Mike Rapoport , Jani Nikula , Andy Lutomirski , Josh Poimboeuf , David Sterba , Dmitry Vyukov , Tom Zanussi , Chris Mason , Pekka Enberg , iommu@lists.linux-foundation.org, Daniel Vetter , Andrew Morton , Robin Murphy , linux-btrfs@vger.kernel.org X-BeenThere: iommu@lists.linux-foundation.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: Development issues for Linux IOMMU support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Sender: iommu-bounces@lists.linux-foundation.org Errors-To: iommu-bounces@lists.linux-foundation.org Message-ID: <20190425094508.nmPcBsyjFT6IEoFMgVBDP6MvLyNafENvBLq7TCB7aCc@z> Replace the indirection through struct stack_trace with an invocation of the storage array based interface. This results in less storage space and indirection. Signed-off-by: Thomas Gleixner Cc: dm-devel@redhat.com Cc: Mike Snitzer Cc: Alasdair Kergon --- drivers/md/persistent-data/dm-block-manager.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) --- a/drivers/md/persistent-data/dm-block-manager.c +++ b/drivers/md/persistent-data/dm-block-manager.c @@ -35,7 +35,10 @@ #define MAX_HOLDERS 4 #define MAX_STACK 10 -typedef unsigned long stack_entries[MAX_STACK]; +struct stack_store { + unsigned int nr_entries; + unsigned long entries[MAX_STACK]; +}; struct block_lock { spinlock_t lock; @@ -44,8 +47,7 @@ struct block_lock { struct task_struct *holders[MAX_HOLDERS]; #ifdef CONFIG_DM_DEBUG_BLOCK_STACK_TRACING - struct stack_trace traces[MAX_HOLDERS]; - stack_entries entries[MAX_HOLDERS]; + struct stack_store traces[MAX_HOLDERS]; #endif }; @@ -73,7 +75,7 @@ static void __add_holder(struct block_lo { unsigned h = __find_holder(lock, NULL); #ifdef CONFIG_DM_DEBUG_BLOCK_STACK_TRACING - struct stack_trace *t; + struct stack_store *t; #endif get_task_struct(task); @@ -81,11 +83,7 @@ static void __add_holder(struct block_lo #ifdef CONFIG_DM_DEBUG_BLOCK_STACK_TRACING t = lock->traces + h; - t->nr_entries = 0; - t->max_entries = MAX_STACK; - t->entries = lock->entries[h]; - t->skip = 2; - save_stack_trace(t); + t->nr_entries = stack_trace_save(t->entries, MAX_STACK, 2); #endif } @@ -106,7 +104,8 @@ static int __check_holder(struct block_l DMERR("recursive lock detected in metadata"); #ifdef CONFIG_DM_DEBUG_BLOCK_STACK_TRACING DMERR("previously held here:"); - print_stack_trace(lock->traces + i, 4); + stack_trace_print(lock->traces[i].entries, + lock->traces[i].nr_entries, 4); DMERR("subsequent acquisition attempted here:"); dump_stack(); _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu