summaryrefslogtreecommitdiff
path: root/netfs.c
diff options
context:
space:
mode:
authorJeremie Koenig <jk@jk.fr.eu.org>2010-08-23 20:43:16 +0000
committerJeremie Koenig <jk@jk.fr.eu.org>2010-08-30 14:31:32 +0200
commitb3d304167929bc199e6789fd67ffea035e7fdbf1 (patch)
tree4a69de8b4442a7bd66350fb6876788d0e779d459 /netfs.c
parent7b027a34676880bded1a05a5c47bfa85a6e79092 (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 'netfs.c')
-rw-r--r--netfs.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/netfs.c b/netfs.c
index e41e062..02a4bf5 100644
--- a/netfs.c
+++ b/netfs.c
@@ -57,6 +57,9 @@ error_t netfs_attempt_read (struct iouser *cred, struct node *np,
ssize_t contents_len;
error_t err;
+ if (offset == 0)
+ procfs_refresh (np);
+
err = procfs_get_contents (np, &contents, &contents_len);
if (err)
return err;
@@ -139,6 +142,9 @@ error_t netfs_get_dirents (struct iouser *cred, struct node *dir,
char *contents;
ssize_t contents_len;
error_t err;
+
+ if (entry == 0)
+ procfs_refresh (dir);
err = procfs_get_contents (dir, &contents, &contents_len);
if (err)