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
next 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).