linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jan Kara <jack@suse.cz>
To: tytso@mit.edu
Cc: linux-fsdevel@vger.kernel.org,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	Linus Torvalds <torvalds@linux-foundation.org>
Subject: Lazytime feature bugs
Date: Wed, 18 Feb 2015 14:19:31 +0100	[thread overview]
Message-ID: <20150218131931.GA10424@quack.suse.cz> (raw)

  Hello,

  I had a look at what got merged as a lazytime series from Ted and I have
found a couple of issues (I think I've pointed them out in my emails back
in November but admittedly things were somewhat confused back then since
Ted was submitting new versions pretty fast). Anyway here are the issues
I've found in the merged code:

1) Inode that gets periodically dirtied with I_DIRTY_PAGES, cleaned and
   dirtied again will have inode with updated timestamps never written due
   to age since inode->dirtied_when gets reset on each redirtying with
   I_DIRTY_PAGES.
2) The code won't maintain time ordering of b_dirty_time list by
   inode->dirtied_when - this happens because requeue_inode() moves inode
   at the head of the b_dirty_time list but inodes in b_io list from which
   we move are no longer ordered by dirtied_when (due to that list being
   combined from several lists and also because we sort the list by
   superblock). As a result terminating logic in move_expired_inodes() may
   terminate the scan too early for b_dirty_time list.
3) This is mostly cosmetic currently but is a potential landmine for
   future: If you dirty with I_DIRTY_PAGES | I_DIRTY_TIME inode gets filed
   to b_dirty_time list instead of b_dirty list.
4) Another mostly cosmetic issue: move_expired_inodes() should use
   work->for_sync instead of work->reason == WB_REASON_SYNC (work->reason is
   there only for tracing purposes).

								Honza
-- 
Jan Kara <jack@suse.cz>
SUSE Labs, CR

             reply	other threads:[~2015-02-18 13:19 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-18 13:19 Jan Kara [this message]
2015-02-24 18:31 ` Lazytime feature bugs Jan Kara
2015-02-24 18:58   ` Linus Torvalds
2015-02-25 14:52     ` Theodore Ts'o
2015-02-25 16:25       ` Jan Kara
2015-02-26  4:33         ` Theodore Ts'o
2015-02-26  8:34           ` Jan Kara
2015-02-26 13:45             ` Theodore Ts'o
2015-02-26 14:38               ` Jan Kara
2015-02-26 19:27                 ` Theodore Ts'o
2015-03-02  8:29                   ` Jan Kara
2015-03-07  5:34                     ` [PATCH] fs: make sure the timestamps for lazytime inodes eventually get written Theodore Ts'o
2015-03-08 10:06                       ` Jan Kara
2015-03-08 19:06                         ` Theodore Ts'o

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150218131931.GA10424@quack.suse.cz \
    --to=jack@suse.cz \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    --cc=tytso@mit.edu \
    --cc=viro@zeniv.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).