X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=BAYES_00,MIME_8BIT_HEADER autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id nBMC6mYr130004 for ; Tue, 22 Dec 2009 06:06:48 -0600 X-ASG-Debug-ID: 1261483649-546f001a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp19.orange.fr (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2A40A11DFDD for ; Tue, 22 Dec 2009 04:07:29 -0800 (PST) Received: from smtp19.orange.fr (smtp19.orange.fr [80.12.242.18]) by cuda.sgi.com with ESMTP id YEnlW77BOkaIXc2X for ; Tue, 22 Dec 2009 04:07:29 -0800 (PST) Received: from me-wanadoo.net (localhost [127.0.0.1]) by mwinf1916.orange.fr (SMTP Server) with ESMTP id D36192000433; Tue, 22 Dec 2009 13:07:28 +0100 (CET) Received: from me-wanadoo.net (localhost [127.0.0.1]) by mwinf1916.orange.fr (SMTP Server) with ESMTP id A1ED9200048A; Tue, 22 Dec 2009 13:07:28 +0100 (CET) Received: from [10.0.0.10] (ASt-Lambert-153-1-37-45.w81-249.abo.wanadoo.fr [81.249.36.45]) by mwinf1916.orange.fr (SMTP Server) with ESMTP id 5323C2000433; Tue, 22 Dec 2009 13:07:23 +0100 (CET) X-ME-UUID: 20091222120723340.5323C2000433@mwinf1916.orange.fr X-ME-User-Auth: jean-pierre.andre Message-ID: <4B30B67A.7080703@wanadoo.fr> Date: Tue, 22 Dec 2009 13:07:22 +0100 From: =?ISO-8859-1?Q?Jean-Pierre_Andr=E9?= User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.4) Gecko/20091027 Fedora/2.0-7.fc13 SeaMonkey/2.0 MIME-Version: 1.0 To: OGAWA Hirofumi CC: Eric Blake , fuse-devel@lists.sourceforge.net, Miklos Szeredi , Christoph Hellwig , Linux Kernel Mailing List , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [fuse-devel] utimensat fails to update ctime Subject: Re: [fuse-devel] utimensat fails to update ctime References: <4B2B156D.9040604@byu.net> <87aaxclr4q.fsf@devron.myhome.or.jp> <4B2F7421.10005@byu.net> <4B2F7A95.3010708@byu.net> <87hbrkjrk8.fsf@devron.myhome.or.jp> <4B304D04.6040501@byu.net> <87d427jscr.fsf@devron.myhome.or.jp> <4B3097C4.3060803@wanadoo.fr> <874onjjnln.fsf@devron.myhome.or.jp> In-Reply-To: <874onjjnln.fsf@devron.myhome.or.jp> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: smtp19.orange.fr[80.12.242.18] X-Barracuda-Start-Time: 1261483650 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.17761 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi again, OGAWA Hirofumi wrote: > Jean-Pierre Andr=E9 writes: > > =20 >> Hi all, >> =20 > Hi, > > =20 >> OGAWA Hirofumi wrote: >> =20 >>> Eric Blake writes: >>> >>> >>> It is likely the issue of libfuse or ntfs-3g. I don't know about ntfs= -3g >>> people at all. So, for now, just Cc: to fuse people. >>> >>> =20 >> Which ntfs-3g version are you using ? >> =20 > I don't know which version is used by actual user. But, well, I've got > source by "apt-get source", and the version was 1:2009.4.4-1. > =20 > Now, I've got ntfs-3g-2009.11.14AC.2.tgz from specified url. > > =20 >>>> utimensat(0, NULL, {UTIME_OMIT, UTIME_NOW}, 0) =3D 0 >>>> =20 >> Currently ntfs-3g does not set sub-second precision. >> >> There is also a slight problem in the fuse interface : >> the time buffer is never passed as NULL, consequently >> in some circumstances ntfs-3g cannot decide correctly >> over permissions. A permissive action is taken in this >> situation. >> >> =20 >>>> From this, "ia_valid" will have "ATTR_CTIME | ATTR_MTIME". And the >>>> =20 >>> request would pass to userland via fuse of kernel part, then it will = be >>> handled by libfuse. >>> >>> =20 >>>> From quick grep of libfuse and ntfs-3g (would not be latest), ntfs-= 3g is >>>> =20 >>> using "struct fuse_operations", not "struct fuse_lowlevel_ops". >>> >>> =20 >> With the latest ntfs-3g, currently as a release candidate, >> you can (optionally) use the low level fuse interface >> http://pagesperso-orange.fr/b.andre/advanced-ntfs-3g.html >> use the "lowntfs-3g" driver instead of "ntfs-3g" >> =20 > Well, the problem seems in fuse_lib_setattr() and ntfs_fuse_setattr() > (lowlevel op too). > > The both functions is requiring "ATIME | MTIME". Doesn't it mean the > ntfs-3g can't set only MTIME like above utimensat()? > =20 With ntfs-3g this is not directly possible, because the interface does not provide flags telling which timestamps should be updated. The only way would be fuse feeding both values (even though unchanged) before calling ntfs-3g. This is true for all versions of ntfs-3g. With lowntfs-3g (release candidate only), this could be possible.... but this is not implemented, as the case was never found up to now. I can provide you with a patch,... if fuse can feed in the flags selectively. > In fuse_lib_setattr(), > > if (!err&& (valid& (FUSE_SET_ATTR_ATIME | FUSE_SET_ATTR_MTIM= E)) =3D=3D > (FUSE_SET_ATTR_ATIME | FUSE_SET_ATTR_MTIME)) { > > In ntfs_fuse_setattr(), > case FUSE_SET_ATTR_ATIME + FUSE_SET_ATTR_MTIME : > res =3D ntfs_fuse_utime(&security, ino, attr,&stbuf); > > Or I'm missing something? > > Thanks. > =20 Regards Jean-Pierre