Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 22 Nov 2010 17:34:31 GMT
From:      Anton Yuzhaninov <citrin@citrin.ru>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   kern/152488: [tmpfs] mtime of file updated when only inode changed (file data not changed)
Message-ID:  <201011221734.oAMHYViM019740@builder.corp.vega.ru>
Resent-Message-ID: <201011221750.oAMHo8P6070451@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         152488
>Category:       kern
>Synopsis:       [tmpfs] mtime of file updated when only inode changed (file data not changed)
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Nov 22 17:50:08 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator:     Anton Yuzhaninov
>Release:        FreeBSD 9.0-CURRENT i386
>Organization:
openstat.ru
>Environment:
System: FreeBSD citrin.office.vega.ru 9.0-CURRENT FreeBSD 9.0-CURRENT #0 r215180: Sat Nov 13 00:19:31 MSK 2010 citrin@citrin.office.vega.ru:/usr/obj/usr/src/sys/NK i386
>Description:
According to stat(2), mtime (st_mtim) changed by the mknod(2), utimes(2), read(2) and readv(2) system calls (when file data modified).

It seems to be true for ufs, but not true for tmpfs. On tmpfs mtime updated even if file data is not modified.
>How-To-Repeat:

:~> sudo mount -t tmpfs tmpfs tmp && cd tmp
:~/tmp> touch -m -t 197001010000 xxx
:~/tmp> stat -x xxx | egrep '(Modify|Change)'
Modify: Thu Jan  1 00:00:00 1970
Change: Mon Nov 22 19:43:49 2010
:~/tmp> ln xxx xxx2
:~/tmp> stat -x xxx | egrep '(Modify|Change)'
Modify: Thu Jan  1 00:00:00 1970
Change: Mon Nov 22 19:44:40 2010
:~/tmp> rm xxx2
:~/tmp> stat -x xxx | egrep '(Modify|Change)'
Modify: Mon Nov 22 19:44:54 2010
Change: Mon Nov 22 19:44:54 2010

But expected:
Modify: Thu Jan  1 00:00:00 1970
Change: Mon Nov 22 19:44:54 2010

>Fix:
--- tmpfs.patch begins here ---
Index: tmpfs_vnops.c
===================================================================
--- tmpfs_vnops.c	(revision 215543)
+++ tmpfs_vnops.c	(working copy)
@@ -853,8 +853,7 @@
 	tmpfs_free_dirent(tmp, de, TRUE);
 
 	if (node->tn_links > 0)
-		node->tn_status |= TMPFS_NODE_ACCESSED | TMPFS_NODE_CHANGED | \
-	    TMPFS_NODE_MODIFIED;
+		node->tn_status |= TMPFS_NODE_ACCESSED | TMPFS_NODE_CHANGED;
 	error = 0;
 
 out:
--- tmpfs.patch ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201011221734.oAMHYViM019740>