| To: | Jan Kara <jack@xxxxxxx> |
|---|---|
| Subject: | Re: [PATCH block/for-linus] writeback: fix syncing of I_DIRTY_TIME inodes |
| From: | Tejun Heo <tj@xxxxxxxxxx> |
| Date: | Mon, 24 Aug 2015 17:45:35 -0400 |
| Cc: | Dave Chinner <david@xxxxxxxxxxxxx>, Eryu Guan <eguan@xxxxxxxxxx>, Jens Axboe <axboe@xxxxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx, xfs@xxxxxxxxxxx, axboe@xxxxxx, Jan Kara <jack@xxxxxxxx>, linux-fsdevel@xxxxxxxxxxxxxxx, kernel-team@xxxxxx |
| Delivered-to: | xfs@xxxxxxxxxxx |
| Dkim-signature: | v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; bh=+mjxz03f7aB9vcLxn65ko5U3lh825t2018J2lrgCB+M=; b=Fkd1UNwQWJGk+idiGu9tWmBvYUIMB4eBF/Y/a2AWiJ5NnN8wy1MKi4T/fwtaXpJNos MLB3ygiaGtP19oPqMgLIw0rBshUx0R8+wUV7aM/SKwb1WDfiIgf02X85b5jXHkzGfAuW Ts01By8NKm4lnvS+dKJGSF/PrzX/yxinUcSigIXmbOdcD9idmV1gE8XlLUkXUvKpr2xx P53CYhpB4g7MpX6H9sC6qrrfmMNsFqpZSoHgDmZxVCKa0soRud3iMfVKHhzG+J+o8b9R ZBFbB13JhRHjFhFveolvGjRmK6wuORxMtkVNX+PjQPafVk7oDppJa6Kh8VSiWiStsJIB w8JQ== |
| In-reply-to: | <20150824210927.GA8823@xxxxxxxxxxxxx> |
| References: | <20150822044609.GM17933@xxxxxxxxxxxxxxxxxxxxxxxxxx> <20150824011123.GA714@dastard> <20150824031816.GO17933@xxxxxxxxxxxxxxxxxxxxxxxxxx> <20150824062425.GU3902@dastard> <20150824091959.GA2936@xxxxxxxxxxxxx> <20150824145150.GA10029@xxxxxxxxxxxxxxx> <20150824171144.GB27262@xxxxxxxxxxxxxxx> <20150824190847.GA4234@xxxxxxxxxxxxx> <20150824193242.GE28944@xxxxxxxxxxxxxxx> <20150824210927.GA8823@xxxxxxxxxxxxx> |
| Sender: | Tejun Heo <htejun@xxxxxxxxx> |
| User-agent: | Mutt/1.5.23 (2014-03-12) |
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 |
| Previous by Date: | Re: [PATCH block/for-linus] writeback: fix syncing of I_DIRTY_TIME inodes, Jan Kara |
|---|---|
| Next by Date: | Re: [PATCH block/for-linus] writeback: fix syncing of I_DIRTY_TIME inodes, Dave Chinner |
| Previous by Thread: | Re: [PATCH block/for-linus] writeback: fix syncing of I_DIRTY_TIME inodes, Jan Kara |
| Next by Thread: | Re: [PATCH block/for-linus] writeback: fix syncing of I_DIRTY_TIME inodes, Tejun Heo |
| Indexes: | [Date] [Thread] [Top] [All Lists] |