[PATCH 1/2] vfs_ceph: fix ntimes_fn callback

严正 zyan at redhat.com
Wed Mar 11 01:02:27 MDT 2015


Ping

Regards
Yan, Zheng

> 在 2015年2月26日,14:44,Yan, Zheng <zyan at redhat.com> 写道:
> 
> Add null timespec check for atime/mtime, also add code that stores
> create_time by EA.
> 
> Signed-off-by: Yan, Zheng <zyan at redhat.com>
> ---
> source3/modules/vfs_ceph.c | 20 ++++++++++++++++++--
> 1 file changed, 18 insertions(+), 2 deletions(-)
> 
> diff --git a/source3/modules/vfs_ceph.c b/source3/modules/vfs_ceph.c
> index 0967428..8c56764 100644
> --- a/source3/modules/vfs_ceph.c
> +++ b/source3/modules/vfs_ceph.c
> @@ -753,8 +753,24 @@ static int cephwrap_ntimes(struct vfs_handle_struct *handle,
> {
> 	struct utimbuf buf;
> 	int result;
> -	buf.actime = ft->atime.tv_sec;
> -	buf.modtime = ft->mtime.tv_sec;
> +
> +	if (null_timespec(ft->atime))
> +		buf.actime = smb_fname->st.st_ex_atime.tv_sec;
> +	else
> +		buf.actime = ft->atime.tv_sec;
> +
> +	if (null_timespec(ft->mtime))
> +		buf.modtime = smb_fname->st.st_ex_mtime.tv_sec;
> +	else
> +		buf.modtime = ft->mtime.tv_sec;
> +
> +	if (!null_timespec(ft->create_time))
> +		set_create_timespec_ea(handle->conn, smb_fname, ft->create_time);
> +
> +	if (buf.actime == smb_fname->st.st_ex_atime.tv_sec &&
> +	    buf.modtime == smb_fname->st.st_ex_mtime.tv_sec)
> +		return 0;
> +
> 	result = ceph_utime(handle->data, smb_fname->base_name, &buf);
> 	DEBUG(10, ("[CEPH] ntimes(%p, %s, {%ld, %ld, %ld, %ld}) = %d\n", handle, smb_fname_str_dbg(smb_fname),
> 				ft->mtime.tv_sec, ft->atime.tv_sec, ft->ctime.tv_sec,
> -- 
> 1.9.3
> 



More information about the samba-technical mailing list