[lkml]   [2009]   [Apr]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [PATCH] writeback: guard against jiffies wraparound on inode->dirtied_when checks (try #3)
    On Wed, 01 Apr 2009 22:22:06 +0200
    Andi Kleen <> wrote:

    > Jeff Layton <> writes:
    > >
    > > The problem is that these checks assume that dirtied_when is updated
    > > periodically. If an inode is continuously being used for I/O it can be
    > > persistently marked as dirty and will continue to age. Once the time
    > > difference between dirtied_when and the jiffies value it is being
    > > compared to is greater than or equal to half the maximum of the jiffies
    > > type, the logic of the time_*() macros inverts and the opposite of what
    > > is needed is returned. On 32-bit architectures that's just under 25 days
    > > (assuming HZ == 1000).
    > I wonder if this can happen in other places using jiffies time stamp
    > too. Why not? Perhaps that check macro should be in timer.h and some auditing done
    > over the whiole code base?

    It certainly can happen in other places. We've seen very similar
    problems in NFS, and they were fixed in similar ways. That's where the
    time_in_range macro came from. I agree that a thorough audit of jiffies
    usage would be a fine thing...

    One possibility might be a new debugging option. We could add
    replacement time_after() and time_before() macros that also check
    whether the difference in times is beyond a certain threshold
    (maybe a day or week or so), and pop a printk or otherwise record
    info about it when one is detected?

    That wouldn't find all of the problem cases, but it might help ID some
    of them.

    Jeff Layton <>

     \ /
      Last update: 2009-04-01 23:31    [W:0.020 / U:39.072 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site