All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mark Goodwin <markgw@sgi.com>
To: David Chinner <dgc@sgi.com>
Cc: xfs-dev <xfs-dev@sgi.com>, xfs-oss <xfs@oss.sgi.com>
Subject: Re: [patch] Don't change ctime in truncate is size does not change
Date: Tue, 19 Feb 2008 10:37:48 +1100	[thread overview]
Message-ID: <47BA16CC.7040700@sgi.com> (raw)
In-Reply-To: <20080218233251.GV155407@sgi.com>

Did we ever discover what was behind the comment:
"Have to do this even if the file's size doesn't change"

Cheers
-- Mark

David Chinner wrote:
> XFS changes the c/mtime of an inode when truncating it to the same
> size. The c/mtime is only supposed to change if the size is changed.
> Not to be confused with ftruncate, where the c/mtime is supposed to
> be changed even if the size is not changed.
> 
> The Linux VFS encodes this semantic difference in the flags it sends
> down to ->setattr, which XFS currently ignores. We need to make XFS
> pay attention to the VFS flags and hence Do The Right Thing.
> 
> Signed-off-by: Dave Chinner <dgc@sgi.com>
> ---
>  fs/xfs/xfs_vnodeops.c |   13 +++++++++----
>  1 file changed, 9 insertions(+), 4 deletions(-)
> 
> Index: 2.6.x-xfs-new/fs/xfs/xfs_vnodeops.c
> ===================================================================
> --- 2.6.x-xfs-new.orig/fs/xfs/xfs_vnodeops.c	2008-01-25 16:03:23.654971763 +1100
> +++ 2.6.x-xfs-new/fs/xfs/xfs_vnodeops.c	2008-01-25 16:10:30.875397129 +1100
> @@ -634,6 +634,15 @@ xfs_setattr(
>  	 * Truncate file.  Must have write permission and not be a directory.
>  	 */
>  	if (mask & XFS_AT_SIZE) {
> +		/*
> +		 * Only change the c/mtime if we are changing the size
> +		 * or we are explicitly asked to change it. This handles
> +		 * the semantic difference between truncate() and ftruncate()
> +		 * as implemented in the VFS.
> +		 */
> +		if (vap->va_size != ip->i_size || mask & XFS_AT_CTIME)
> +			timeflags |= XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG;
> +
>  		if (vap->va_size > ip->i_size) {
>  			xfs_igrow_finish(tp, ip, vap->va_size,
>  			    !(flags & ATTR_DMI));
> @@ -662,10 +671,6 @@ xfs_setattr(
>  			 */
>  			xfs_iflags_set(ip, XFS_ITRUNCATED);
>  		}
> -		/*
> -		 * Have to do this even if the file's size doesn't change.
> -		 */
> -		timeflags |= XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG;
>  	}
>  
>  	/*

-- 

  Mark Goodwin                                  markgw@sgi.com
  Engineering Manager for XFS and PCP    Phone: +61-3-99631937
  SGI Australian Software Group           Cell: +61-4-18969583
-------------------------------------------------------------

  reply	other threads:[~2008-02-18 23:38 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-02-18 23:32 [patch] Don't change ctime in truncate is size does not change David Chinner
2008-02-18 23:37 ` Mark Goodwin [this message]
2008-02-19  1:55   ` David Chinner
2008-02-20 23:26 ` Christoph Hellwig
2008-02-21 22:50   ` David Chinner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=47BA16CC.7040700@sgi.com \
    --to=markgw@sgi.com \
    --cc=dgc@sgi.com \
    --cc=xfs-dev@sgi.com \
    --cc=xfs@oss.sgi.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.