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=-10.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,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 8B214C433FE for ; Mon, 7 Dec 2020 11:53:02 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id F140223357 for ; Mon, 7 Dec 2020 11:53:01 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org F140223357 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=konsulko.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 486B58D0003; Mon, 7 Dec 2020 06:53:01 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 40FB28D0001; Mon, 7 Dec 2020 06:53:01 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2D8F48D0003; Mon, 7 Dec 2020 06:53:01 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0166.hostedemail.com [216.40.44.166]) by kanga.kvack.org (Postfix) with ESMTP id 12E7B8D0001 for ; Mon, 7 Dec 2020 06:53:01 -0500 (EST) Received: from smtpin22.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id CFA18824999B for ; Mon, 7 Dec 2020 11:53:00 +0000 (UTC) X-FDA: 77566324920.22.trick62_4c163db273de Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin22.hostedemail.com (Postfix) with ESMTP id B0B2C18038E60 for ; Mon, 7 Dec 2020 11:53:00 +0000 (UTC) X-HE-Tag: trick62_4c163db273de X-Filterd-Recvd-Size: 6224 Received: from mail-lf1-f46.google.com (mail-lf1-f46.google.com [209.85.167.46]) by imf43.hostedemail.com (Postfix) with ESMTP for ; Mon, 7 Dec 2020 11:53:00 +0000 (UTC) Received: by mail-lf1-f46.google.com with SMTP id y19so5518757lfa.13 for ; Mon, 07 Dec 2020 03:53:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=konsulko.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=DbcZ0bSg2oe4ybbJwcruH4k64DkgbzTjybs+KQ5OE8s=; b=VEaoCPEDDAXEVGvnKp4E2uwASKtfwpkbQoIvWCOasNNEPTcZ/pMfUVB84Qtsf/xj0+ JM7lDwrUKTe6ocSQNaUeoqfnhcidA0PbzByw1ZyztXWPjA+3pqCFE5q0A71Npr5OeM/m LG/ihoaRB7xuh+XhjEAEhAB+qbNhyyXwa+t68= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=DbcZ0bSg2oe4ybbJwcruH4k64DkgbzTjybs+KQ5OE8s=; b=ia+OcYMphVCzir9eD/FDbJ2XAiPAr/B6cJo4Z07WEQu+GwD09ukj3jkZ/6xAEEo3yB Ioqv7rngpNsBh4d5X/rcGJeLxu7xqXuXnLsTNwOPYNo2L4Ma5fLfu+8mUZ6fWoK3KWLt RCMbKMEJhoh7dzkCzJN/F6zPCCwvsx6zpJrS6zTBgbkmJfNVarqH5wQRULgL0SD917tl ld7IK+DbdGsN+RUNdCBC5k0VVqnlETBGF16iAEjyCKwI4N6NnM5c/jqtZd9M6aLd7eBz IWxZ1SYu6NsC55q64O9wW2Jnrk3ABXg83FXpgA8/WE67dnZGA/yXkc8Qs6VqI4+oJBIK ylow== X-Gm-Message-State: AOAM533Jo7EBVICLqVaiGeP384uksU/CNH9jESFqPLZGa0GbZl0B6Etm 77Mn9sFtq3oVgJajXbzq5C+Ew3VsmK+A0mAYYMsAng== X-Google-Smtp-Source: ABdhPJx0iAjqX3slY9qXKo4pURaFZHetOLHdAM82Tvhl40dxaCVXqff12112d7tosd5dcjJprLDsnDMIZEzE9biT+8k= X-Received: by 2002:a19:ad41:: with SMTP id s1mr8618171lfd.571.1607341978531; Mon, 07 Dec 2020 03:52:58 -0800 (PST) MIME-Version: 1.0 References: <90c4857c53b657147bfb71a281ece9839b0373c2.camel@gmx.de> <20201130132014.mlvxeyiub3fpwyw7@linutronix.de> <856b5cc2a3d4eb673743b52956bf1e60dcdf87a1.camel@gmx.de> <20201130145229.mhbkrfuvyctniaxi@linutronix.de> <05121515e73891ceb9e5caf64b6111fc8ff43fab.camel@gmx.de> <20201130160327.ov32m4rapk4h432a@linutronix.de> <20201202220826.5chy56mbgvrwmg3d@linutronix.de> <64ab382309c41ca5c7a601fc3efbb6d2a6e68602.camel@gmx.de> <20201203133934.37aotbdjnd36lrxv@linutronix.de> <10d5088861ba219f3f7cd657fc95b0bedc19010a.camel@gmx.de> <3ffed6172820f2e8e821e1b8817dbd0bdd693c26.camel@gmx.de> In-Reply-To: <3ffed6172820f2e8e821e1b8817dbd0bdd693c26.camel@gmx.de> From: Vitaly Wool Date: Mon, 7 Dec 2020 12:52:47 +0100 Message-ID: Subject: Re: scheduling while atomic in z3fold To: Mike Galbraith Cc: Sebastian Andrzej Siewior , Oleksandr Natalenko , LKML , Linux-MM , Andrew Morton , Steven Rostedt , Thomas Gleixner , linux-rt-users@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Mon, Dec 7, 2020 at 3:18 AM Mike Galbraith wrote: > > On Mon, 2020-12-07 at 02:05 +0100, Vitaly Wool wrote: > > > > Could you please try the following patch in your setup: > > crash> gdb list *z3fold_zpool_free+0x527 > 0xffffffffc0e14487 is in z3fold_zpool_free (mm/z3fold.c:341). > 336 if (slots->slot[i]) { > 337 is_free = false; > 338 break; > 339 } > 340 } > 341 write_unlock(&slots->lock); <== boom > 342 > 343 if (is_free) { > 344 struct z3fold_pool *pool = slots_to_pool(slots); > 345 > crash> z3fold_buddy_slots -x ffff99a3287b8780 > struct z3fold_buddy_slots { > slot = {0xdeadbeef, 0xdeadbeef, 0xdeadbeef, 0xdeadbeef}, > pool = 0xffff99a3146b8400, > lock = { > rtmutex = { > wait_lock = { > raw_lock = { > { > val = { > counter = 0x1 > }, > { > locked = 0x1, > pending = 0x0 > }, > { > locked_pending = 0x1, > tail = 0x0 > } > } > } > }, > waiters = { > rb_root = { > rb_node = 0xffff99a3287b8e00 > }, > rb_leftmost = 0x0 > }, > owner = 0xffff99a355c24500, > save_state = 0x1 > }, > readers = { > counter = 0x80000000 > } > } > } Thanks. This trace beats me because I don't quite get how this could have happened. Hitting write_unlock at line 341 would mean that HANDLES_ORPHANED bit is set but obviously it isn't. Could you please comment out the ".shrink = z3fold_zpool_shrink" line and retry? Reclaim is the trickiest thing over there since I have to drop page lock while reclaiming. Thanks, Vitaly > > diff --git a/mm/z3fold.c b/mm/z3fold.c > > index 18feaa0bc537..efe9a012643d 100644 > > --- a/mm/z3fold.c > > +++ b/mm/z3fold.c > > @@ -544,12 +544,17 @@ static void __release_z3fold_page(struct z3fold_header *zhdr, bool locked) > > break; > > } > > } > > - if (!is_free) > > + if (!is_free) { > > set_bit(HANDLES_ORPHANED, &zhdr->slots->pool); > > - read_unlock(&zhdr->slots->lock); > > - > > - if (is_free) > > + read_unlock(&zhdr->slots->lock); > > + } else { > > + zhdr->slots->slot[0] = > > + zhdr->slots->slot[1] = > > + zhdr->slots->slot[2] = > > + zhdr->slots->slot[3] = 0xdeadbeef; > > + read_unlock(&zhdr->slots->lock); > > kmem_cache_free(pool->c_handle, zhdr->slots); > > + } > > > > if (locked) > > z3fold_page_unlock(zhdr); >