diff options
author | Jeremie Koenig <jk@jk.fr.eu.org> | 2010-08-23 20:43:16 +0000 |
---|---|---|
committer | Jeremie Koenig <jk@jk.fr.eu.org> | 2010-08-30 14:31:32 +0200 |
commit | b3d304167929bc199e6789fd67ffea035e7fdbf1 (patch) | |
tree | 4a69de8b4442a7bd66350fb6876788d0e779d459 /dircat.c | |
parent | 7b027a34676880bded1a05a5c47bfa85a6e79092 (diff) |
Refresh nodes when they're read from the start.
This is necessary for top, for instance, which keeps some files open and
re-reads them regularly. As an extra bonus we can drop the refresh hack.
* procfs.c, procfs.h: Remove the refresh hack.
(procfs_refresh): New function, invalidates the cached contents.
* netfs.c (netfs_attempt_read, netfs_get_dirents): Call
procfs_refresh when the read is from offset 0.
* proclist.c (proclist_make_node): Remove the refresh hack.
* dircat.c (dircat_make_node): Likewise.
(dircat_get_contents): Use procfs_refresh to avoid keeping old data
from the component nodes.
Diffstat (limited to 'dircat.c')
-rw-r--r-- | dircat.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -23,6 +23,9 @@ dircat_get_contents (void *hook, char **contents, ssize_t *contents_len) char *subcon; ssize_t sublen; + /* Make sure we're not getting some old stuff. */ + procfs_refresh (dcn->dirs[i]); + err = procfs_get_contents (dcn->dirs[i], &subcon, &sublen); if (err) { @@ -83,8 +86,6 @@ dircat_make_node (struct node *const *dirs, int num_dirs) .cleanup_contents = procfs_cleanup_contents_with_free, .lookup = dircat_lookup, .cleanup = dircat_cleanup, - /* necessary so that it propagates to proclist */ - .enable_refresh_hack_and_break_readdir = 1, }; struct dircat_node *dcn; int i; |