From owner-freebsd-bugs@FreeBSD.ORG Thu Jun 21 03:50:09 2012 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A819F1065670 for ; Thu, 21 Jun 2012 03:50:09 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 806A88FC08 for ; Thu, 21 Jun 2012 03:50:09 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.5/8.14.5) with ESMTP id q5L3o9j3088107 for ; Thu, 21 Jun 2012 03:50:09 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.5/8.14.5/Submit) id q5L3o9Dg088106; Thu, 21 Jun 2012 03:50:09 GMT (envelope-from gnats) Resent-Date: Thu, 21 Jun 2012 03:50:09 GMT Resent-Message-Id: <201206210350.q5L3o9Dg088106@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Shinji KOBAYASHI Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3E82B1065673 for ; Thu, 21 Jun 2012 03:40:33 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from red.freebsd.org (red.freebsd.org [IPv6:2001:4f8:fff6::22]) by mx1.freebsd.org (Postfix) with ESMTP id 0FDD68FC17 for ; Thu, 21 Jun 2012 03:40:33 +0000 (UTC) Received: from red.freebsd.org (localhost [127.0.0.1]) by red.freebsd.org (8.14.4/8.14.4) with ESMTP id q5L3eW45081665 for ; Thu, 21 Jun 2012 03:40:32 GMT (envelope-from nobody@red.freebsd.org) Received: (from nobody@localhost) by red.freebsd.org (8.14.4/8.14.4/Submit) id q5L3eWPn081664; Thu, 21 Jun 2012 03:40:32 GMT (envelope-from nobody) Message-Id: <201206210340.q5L3eWPn081664@red.freebsd.org> Date: Thu, 21 Jun 2012 03:40:32 GMT From: Shinji KOBAYASHI To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.1 Cc: Subject: kern/169282: utimes does not update st_mtim.tv_nsec when utimes(file, NULL) X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 Jun 2012 03:50:09 -0000 >Number: 169282 >Category: kern >Synopsis: utimes does not update st_mtim.tv_nsec when utimes(file, NULL) >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Thu Jun 21 03:50:09 UTC 2012 >Closed-Date: >Last-Modified: >Originator: Shinji KOBAYASHI >Release: FreeBSD 9.0-STABLE >Organization: Ehime University >Environment: FreeBSD shuttle 9.0-STABLE FreeBSD 9.0-STABLE #28: Sat Jun 16 15:11:09 JST 2012 skoba@shuttle:/usr/obj/usr/src/sys/shuttle amd64 >Description: man utimes 2 shows that utimes(file, NULL) updates file modified time to current time. But the sample code shows tv_mtim.tv_nsec equals 0, after utimes(file, NULL). filetest.c ---- include #include #include #include int main(void) { char *name; struct stat filestatus; int fd; int second; int nanosecond; name = "t.log"; fd = creat(name, 0666); fstat(fd, &filestatus); second = filestatus.st_mtim.tv_sec; nanosecond = filestatus.st_mtim.tv_nsec; printf("File created time %d sec,%d nsec\n", second, nanosecond); usleep(1000100); utimes(name, NULL); fstat(fd, &filestatus); printf("File modified time %d sec, %dnsec\n", filestatus.st_mtim.tv_sec, filestatus.st_mtim.tv_nsec); usleep(1000100); creat(name); fstat(fd, &filestatus); printf("File modified time %d sec, %dnsec\n", filestatus.st_mtim.tv_sec, filestatus.st_mtim.tv_nsec); return 0; } --- The result: shuttle% ./filetest ~/src File created time 1340243920 sec,662186384 nsec File modified time 1340243921 sec, 0nsec File modified time 1340243922 sec, 666190831nsec >How-To-Repeat: filetest.c ---- include #include #include #include int main(void) { char *name; struct stat filestatus; int fd; int second; int nanosecond; name = "t.log"; fd = creat(name, 0666); fstat(fd, &filestatus); second = filestatus.st_mtim.tv_sec; nanosecond = filestatus.st_mtim.tv_nsec; printf("File created time %d sec,%d nsec\n", second, nanosecond); usleep(1000100); utimes(name, NULL); fstat(fd, &filestatus); printf("File modified time %d sec, %dnsec\n", filestatus.st_mtim.tv_sec, filestatus.st_mtim.tv_nsec); usleep(1000100); creat(name); fstat(fd, &filestatus); printf("File modified time %d sec, %dnsec\n", filestatus.st_mtim.tv_sec, filestatus.st_mtim.tv_nsec); return 0; } --- The result: shuttle% cc -o filetest filetest.c shuttle% ./filetest ~/src File created time 1340243920 sec,662186384 nsec File modified time 1340243921 sec, 0nsec File modified time 1340243922 sec, 666190831nsec >Fix: >Release-Note: >Audit-Trail: >Unformatted: