Re: relatime: update once per day patches (was: ext3 IO latency measurements)

Linus Torvalds
2009-03-26T17:04:28Z

On Thu, 26 Mar 2009, Theodore Tso wrote:
>
> I've always thought the right approach would be to have a "atime
> dirty" flag, and update atime, but never flush it out to disk unless
> (a) we're about to unmount the disk, or (b) we need to update some
> other inode in the same inode table block, or (c) we have memory
> pressure and we're trying to evict the inode from the inode cache.

I tried to do that a few years ago (ok, probably more than a few by now).

It was surprisingly hard.

Some of it is absolutely trivial: we already have multiple "dirty" flags
for the inode (I_DIRTY_SYNC vs I_DIRTY_DATASYNC vs I_DIRTY_PAGES). Adding
a I_DIRTY_ATIME bit for unimportant data was trivial.

But at least back then, "sync_inode()" (or whatever) was called without
the reason for doing the sync, so it was really hard to decide whether to
write things out or not.

That may actually have changed these days. We now have that
"writeback_control" thing that we pass around for all the IO.

Heh. I just looked back in the history. That writeback_control thing was
added back in 2002, so it's a _really_ long time since I tried to do that
whole atime thing.

Maybe it's really easy these days.

Linus