Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp860270imm; Wed, 13 Jun 2018 09:21:55 -0700 (PDT) X-Google-Smtp-Source: ADUXVKJlCQacx3/wtRuIMwQZVsLqxaY09OGbhDxKWan4D51+9IvJfevb8E3Qz+B+0X7smk3zNpuV X-Received: by 2002:a17:902:650c:: with SMTP id b12-v6mr5863844plk.31.1528906915585; Wed, 13 Jun 2018 09:21:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528906915; cv=none; d=google.com; s=arc-20160816; b=WAwWaZOjo6YP5RkSpJ13URcAQg3hMiR7tA8suFQ3aVzucXDYFqi1Pgzq4rAcpc+otR bzVFU5ooyt6mQk8Es5RpNimuqTZhgNRvC5aQfDV59REVtrV70JSU7njPfig4QyDC64RA 3sm1jcXGBUACxZRDJxgNlMo36YTvjH1OVuCbVYDHjTtd+0Uter9SsVsQaCnPzEWShJzm ljEG++Qzxygr42fjpVP+fpENiNKZpmgVnpCIXZOxBu6KaxaMtOZFRkIw282YEN/sVTqL h6+r+an1ATsEoxhFw5bqU0rvyIOyUjejzKN28c3Qf4P4TmAbsX10pkKfQ2h/VwnUEmbS HF4A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:arc-authentication-results; bh=kd2LafC7Yh/2ZBR0LpW0QPtKIzfkYC+hd5MJaBKSI14=; b=l85bP6tYFs5d5rKsYS2RxU1t7rRN1ZShAin+lExQDvtX8yS/+/t75kjsfl2cks+kup cjmWSTpFtSw+U2lCaIShgl9vi6mbWH/jcIorlHNhFkyWbDZWrDmarjMJwFpuB3wE/kM/ s9LpsNZQmMCdmlSkN95R6pV1j1OCXzTAM2HCsQISqcBfk6f30A77SU8SL4E5t35FR0WM +/wDsGznk4y0QvbLDoh0Cb+YVcEVkGOuzBijNtqiqCaxl9Qenzo5U2Hk5amyRfWdhLJi qx5/UEhqfyNZIC8mtpmBbSvymWD4x/PulGRUSwDNwCDaXefbuXicAwBfvreipvT7SRF4 8VPA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y7-v6si3025764pfn.16.2018.06.13.09.21.40; Wed, 13 Jun 2018 09:21:55 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934755AbeFMQVK (ORCPT + 99 others); Wed, 13 Jun 2018 12:21:10 -0400 Received: from www262.sakura.ne.jp ([202.181.97.72]:56359 "EHLO www262.sakura.ne.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754536AbeFMQVI (ORCPT ); Wed, 13 Jun 2018 12:21:08 -0400 Received: from fsav105.sakura.ne.jp (fsav105.sakura.ne.jp [27.133.134.232]) by www262.sakura.ne.jp (8.15.2/8.15.2) with ESMTP id w5DGKLEE052053; Thu, 14 Jun 2018 01:20:21 +0900 (JST) (envelope-from penguin-kernel@i-love.sakura.ne.jp) Received: from www262.sakura.ne.jp (202.181.97.72) by fsav105.sakura.ne.jp (F-Secure/fsigk_smtp/530/fsav105.sakura.ne.jp); Thu, 14 Jun 2018 01:20:21 +0900 (JST) X-Virus-Status: clean(F-Secure/fsigk_smtp/530/fsav105.sakura.ne.jp) Received: from [192.168.1.8] (softbank126074194044.bbtec.net [126.74.194.44]) (authenticated bits=0) by www262.sakura.ne.jp (8.15.2/8.15.2) with ESMTPSA id w5DGKLok052049 (version=TLSv1.2 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 14 Jun 2018 01:20:21 +0900 (JST) (envelope-from penguin-kernel@i-love.sakura.ne.jp) Subject: Re: [PATCH] bdi: Fix another oops in wb_workfn() To: Jan Kara Cc: Tejun Heo , Dmitry Vyukov , Jens Axboe , syzbot , syzkaller-bugs , linux-fsdevel , LKML , Al Viro , Dave Chinner , linux-block@vger.kernel.org, Linus Torvalds References: <2b437c6f-3e10-3d83-bdf3-82075d3eaa1a@i-love.sakura.ne.jp> <3cf4b0e3-31b6-8cdc-7c1e-15ba575a7879@i-love.sakura.ne.jp> <20180611091248.2i6nt27h5mxrodm2@quack2.suse.cz> <20180611160131.GQ1351649@devbig577.frc2.facebook.com> <20180611162920.mwapvuqotvhkntt3@quack2.suse.cz> <20180611172053.GR1351649@devbig577.frc2.facebook.com> <20180612155754.x5k2yndh5t6wlmpy@quack2.suse.cz> <20180613144606.nvbcyg2rdjpxhf7s@quack2.suse.cz> From: Tetsuo Handa Message-ID: <7f4ae045-dfe4-6677-7418-f6f60b6c26f1@i-love.sakura.ne.jp> Date: Thu, 14 Jun 2018 01:20:16 +0900 User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 MIME-Version: 1.0 In-Reply-To: <20180613144606.nvbcyg2rdjpxhf7s@quack2.suse.cz> Content-Type: text/plain; charset=windows-1252 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2018/06/13 23:46, Jan Kara wrote: > On Wed 13-06-18 19:43:47, Tetsuo Handa wrote: >> Can't we utilize RCU grace period (like shown below) ? > > Honestly, the variant 1 looks too ugly to me. However variant 2 looks > mostly OK. We can also avoid the schedule_timeout_uninterruptible(HZ / 10) > from your patch by careful handling of the bit waitqueues. Also I'd avoid > the addition argument to wb_writeback() and split the function instead. The > patch resulting from your and mine ideas is attached. Thoughts? > > Honza > +static bool cgwb_start_shutdown(struct bdi_writeback *wb) + __releases(cgwb_lock) +{ + if (!wb_start_shutdown(wb)) { + DEFINE_WAIT(wait); + wait_queue_head_t *wqh = bit_waitqueue(&wb->state, + WB_shutting_down); + bool sleep; + + prepare_to_wait(wqh, &wait, TASK_UNINTERRUPTIBLE); + sleep = test_bit(WB_shutting_down, &wb->state); + spin_unlock_irq(&cgwb_lock); + if (sleep) + schedule(); + return false; + } + spin_unlock_irq(&cgwb_lock); + return true; +} Since multiple addresses share bit_wait_table[256], isn't it possible that cgwb_start_shutdown() prematurely returns false due to wake_up_bit() by hash-conflicting addresses (i.e. not limited to clear_and_wake_up_bit() from wb_shutdown())? I think that we cannot be sure without confirming that test_bit(WB_shutting_down, &wb->state) == false after returning from schedule().