[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Bug#77857: hurd: write_node assertion failed building emacs

From: Roland McGrath
Subject: Bug#77857: hurd: write_node assertion failed building emacs
Date: Thu, 23 Nov 2000 22:34:53 -0500 (EST)

The first thing to figure out is what the code path looks like that reaches
getblk when it sets dn_set_mtime there (I think it should be
pager_unlock_page that is doing it, but you should check).  It matters to
understand whether or not that code is going to eventually call
set_node_times before it matters that the mtime update be reflected.  If
so, then it doesn't matter whether that mtime update happens before or
after the node sync, as long as it doesn't get lost.  That should be
achievable by rewriting diskfs_set_node_times so it does:

        if (np->dn_set_mtime)
            np->dn_set_mtime = 0;
            np->dn_stat_dirty = 1;

instead of the separate tests done now (and same for the other two).  That
way, dn_set_mtime is only touched if it was just acted upon--if it gets set
right after the test, then it will remain set for later.  Then it would be
safe to just remove that assert and let the update take place later.

But we can't do that before we make sure it's really true that the code
path that does the problematic mutation of dn_set_mtime is going to handle
it properly in due course and with all appropriate synchronization.  (I
would have to read the 1003.1 rules to be sure what the requirements are.)

reply via email to

[Prev in Thread] Current Thread [Next in Thread]