[PATCH] s3: Report ctime as change time, not mtime

Christof Schmitt christof.schmitt at us.ibm.com
Tue Feb 14 11:39:00 MST 2012


Jeremy Allison <jra at samba.org> wrote on 02/13/2012 05:59:43 PM:

> On Mon, Feb 13, 2012 at 11:23:41AM -0700, Christof Schmitt wrote:
> > I am working on a patch to store the ctime with the
> > gpfs_set_times() call. While testing setting and storing
> > timestamps i discovered that querying the timestamps from a cifs
> > client does not return all four timestamps. It seems that the
> > mtime is reported for two timestamps and the ctime is being
> > discarded:
> > 
> > E.g. in smbd_do_qfilepathinfo():
> >         mtime_ts = psbuf->st_ex_mtime;
> >         ctime_ts = get_change_timespec(conn, fsp, smb_fname);
> > and get_change_timespec also returns the mtime.
> > 
> > The attached patch changes get_change_timespec to return the
> > ctime, so that all timestamps set through the vfs set_times call can
> > be queried through the vfs stat calls.
> 
> I don't think this is correct, but you'll have to wait
> until I analyse this more in order to be accurate.
> 
> The basic problem is:
> 
> UNIX ctime != Windows change time.
> 
> Jeremy.
> 

Hi Jeremy,

thanks for looking into this. Here are some more things in found
for this issue:

The best testcase seems to be RAW-SFILEINFO in smbtorture: In
samba/source4/torture/raw/setfileinfo.c the step "Test basic_info
level\n" sets all four Windows timestamps and expects that
reading them yields the same values.

In Samba, the "change time" is mapped to ctime in
smb_set_file_basic_info():

        /* create time */
        ft.create_time = interpret_long_date(pdata);

        /* access time */
        ft.atime = interpret_long_date(pdata+8);

        /* write time. */
        ft.mtime = interpret_long_date(pdata+16);

        /* change time. */
        ft.ctime = interpret_long_date(pdata+24);

But when reading the timestamps, mtime is mapped to both, "write
time" and "change time". It seems odd to me that i can write
the "change time" from a client, but this value will never be
returned. The patch i submitted seems to be the simplest way to
change this.

Christof Schmitt || IBM || SONAS System Development || Tucson, AZ
christof.schmitt at us.ibm.com  ||  +1-520-799-2469  (T/L: 321-2469)



More information about the samba-technical mailing list