Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754420AbbHXVpk (ORCPT ); Mon, 24 Aug 2015 17:45:40 -0400 Received: from mail-yk0-f169.google.com ([209.85.160.169]:36373 "EHLO mail-yk0-f169.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750942AbbHXVpi (ORCPT ); Mon, 24 Aug 2015 17:45:38 -0400 Date: Mon, 24 Aug 2015 17:45:35 -0400 From: Tejun Heo To: Jan Kara Cc: Dave Chinner , Eryu Guan , Jens Axboe , linux-kernel@vger.kernel.org, xfs@oss.sgi.com, axboe@fb.com, Jan Kara , linux-fsdevel@vger.kernel.org, kernel-team@fb.com Subject: Re: [PATCH block/for-linus] writeback: fix syncing of I_DIRTY_TIME inodes Message-ID: <20150824214535.GM28944@mtj.duckdns.org> References: <20150822044609.GM17933@dhcp-13-216.nay.redhat.com> <20150824011123.GA714@dastard> <20150824031816.GO17933@dhcp-13-216.nay.redhat.com> <20150824062425.GU3902@dastard> <20150824091959.GA2936@quack.suse.cz> <20150824145150.GA10029@mtj.duckdns.org> <20150824171144.GB27262@mtj.duckdns.org> <20150824190847.GA4234@quack.suse.cz> <20150824193242.GE28944@mtj.duckdns.org> <20150824210927.GA8823@quack.suse.cz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20150824210927.GA8823@quack.suse.cz> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1787 Lines: 44 Hello, On Mon, Aug 24, 2015 at 11:09:27PM +0200, Jan Kara wrote: > It is inefficient, yes. But note that 'writeback' and 'dirty' states are > completely independent. Page can be in any of the !dirty & !writeback, That isn't true for pages being dirtied through set_page_dirty(). It's guaranteed that a dirty inode remains on one of the b_* lists till there's no dirty page and writeback is complete. > dirty & !writeback, !dirty & writeback, dirty & writeback states. So mixing > tracking of writeback and dirty state of an inode just makes the code even > messier. I'm curious where and why they would deviate. Can you give me some examples? AFAICS, anything which uses the usual set_page_dirty() path shouldn't do that. > > > a list to track inodes with pages under writeback but they clashed with > > > your patch series and they didn't get rebased yet AFAIR. > > > > Wouldn't it make more sense to simply put them on one of the existing > > b_* lists? > > Logically it just doesn't make sense because as I wrote above dirty and > writeback states are completely independent. Also you'd have to detect & > skip inodes that don't really have any dirty pages to write and all the > detection of "is there any data to write" would get more complicated. A > separate list for inodes under writeback as Josef did is IMO the cleanest > solution. Given that the usual code path tracks dirty and writeback together, I don't think it's nonsensical; however, I'm more curious how common writeback w/o dirtying case is. Thanks. -- tejun -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/