summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libdiskfs/node-rdwr.c2
-rw-r--r--libdiskfs/rdwr-internal.c9
2 files changed, 6 insertions, 5 deletions
diff --git a/libdiskfs/node-rdwr.c b/libdiskfs/node-rdwr.c
index 9a4f7788..4ed6e157 100644
--- a/libdiskfs/node-rdwr.c
+++ b/libdiskfs/node-rdwr.c
@@ -55,7 +55,7 @@ diskfs_node_rdwr (struct node *np,
amt = np->dn_stat.st_size - off;
}
- err = _diskfs_rdwr_internal (np, data, off, amt, dir);
+ err = _diskfs_rdwr_internal (np, data, off, amt, dir, 0);
if (!err && amtread)
*amtread = amt;
diff --git a/libdiskfs/rdwr-internal.c b/libdiskfs/rdwr-internal.c
index cd3f3895..914d96a0 100644
--- a/libdiskfs/rdwr-internal.c
+++ b/libdiskfs/rdwr-internal.c
@@ -23,13 +23,14 @@
to write from or fill on read. OFFSET is the absolute address (-1
not permitted here); AMT is the size of the read/write to perform;
DIR is set for writing and clear for reading. The inode must
- be locked. */
+ be locked. If NOTIME is set, then don't update the mtime or atime. */
error_t
_diskfs_rdwr_internal (struct node *np,
char *volatile data,
volatile int offset,
volatile int amt,
- int dir)
+ int dir,
+ int notime)
{
char *window;
int winoff;
@@ -40,7 +41,7 @@ _diskfs_rdwr_internal (struct node *np,
if (dir)
assert (!diskfs_readonly);
- if (!diskfs_readonly)
+ if (!diskfs_readonly && !notime)
{
if (dir)
np->dn_set_mtime = 1;
@@ -89,7 +90,7 @@ _diskfs_rdwr_internal (struct node *np,
}
assert (amt == 0 || err);
- if (!diskfs_readonly)
+ if (!diskfs_readonly && !notime)
{
if (dir)
np->dn_set_mtime = 1;