samba@samba.org wrote:
Hi Jeremy, hi Don!
I changed the source of smbd/dosmode.c but this did not change the
behaviour
in my case.
Then I looked for any differences between smbd 2.0.5a and 2.0.6
because 2.0.5a produces correct file times here.
I found a difference in smbd/trans2.c line 2355 :
trans2.c in 2.0.5a:
/* write time + changed time, combined. */
tvs.modtime=MAX(interpret_long_date(pdata+16),
interpret_long_date(pdata+24));
trans2.c in 2.0.6:
/* write time + changed time, combined. */
tvs.modtime=MIN(interpret_long_date(pdata+16),
interpret_long_date(pdata+24));
After replacing MIN in the new (2.0.6) file by MAX the filetime after a
touch
or when copying a file seems to be ok.
I did no further testing and did not go into further details, hope you
can check if this is the correct place to fix the problem. I will
observe
the new behaviour after the patch.
Regards
Peter
>
> Date: Wed, 24 Nov 1999 14:16:51 -0800
> From: Jeremy Allison <jeremy@valinux.com>
> To: don_mccall@hp.com
> Subject: Re: Samba 2.0.6, MKS' touch.exe, and file/dir time stamps
> Message-ID: <383C63D3.34D97EE8@valinux.com>
> MIME-Version: 1.0
> Content-Type: text/plain; charset=us-ascii
> Content-Transfer-Encoding: 7bit
>
> don_mccall@hp.com wrote:
> >
> > Hi Peter, et. al;
> > I can reproduce this behavior with the standard NT 4.0 touch command
(that you
> > can pull from the NT 4.0 ResourceKit CD) from the command prompt if I
map a
> > network drive to my Samba 2.05b HP-UX 11.0 server. But interestingly
enough, I
> > did a "touch *" in the directory in question, and ONE file
DID reflect the new
> > time, the other didn't.
> > Looking at the debug file for samba, I found the reason why:
> >
> > [1999/11/24 15:04:49, 4] smbd/dosmode.c:(251)
> > set_filetime(anothertestbydon.txt) failed: Not owner
> >
> > Turns out that I was comming in as 'nobody'; I only had one
file in the
> > directory I was using to test your problem on, so I did a drag and
drop copy of
> > this file (anothertestbydon.txt) and it was called "Copy of
> > anothertestbydon.txt". Of course, since I had just CREATED this
copy, 'nobody'
> > owned it. the original file was owned by another user. When I did a
"touch *"
> > the file I 'owned' changed timestamp, and the original one did
not.
> > Perhaps your issue is related? By the way, I took a netmon trace of
the
> > success and failure, and did not see where the reply to the
SetFilePathInfo
> > transact2 smb (which is the smb that the NT client sent to request the
date
> > change in response to the 'touch' command) in the failing case
differed with
> > the one that succeeded - neither returned any error information, which
jives
> > with your finding that the command comes back clean, even though the
timestamp
> > remains unchanged.
> > Try using smbstatus to see what username you are attached to, and what
unix
> > user that maps to, and then see whether changing the ownership on one
of the
> > files you are doing a touch on makes a difference...
> > Sorry I ran out of time to investigate if this is reasonable behavior,
but I
> > did a quick test by 'touching' a file on an NT 4.0 server
share which I did not
> > own, and the timestamp on THAT file did change...
> > Hope this helps,
> > Don
>
> There's a missing "return False" statement in smbd/dosmode.c
>
> Try the following patch (should apply cleanly to 2.0.5a and
> 2.0.6) and see if this fixes the problem.
>
> Regards,
>
> Jeremy Allison,
> Samba Team.
>
> -------------------------cut here-------------------------------------
> Index: smbd/dosmode.c
> ==================================================================> RCS
file: /data/cvs/samba/source/smbd/dosmode.c,v
> retrieving revision 1.6.2.2
> diff -u -r1.6.2.2 dosmode.c
> --- dosmode.c 1999/06/14 22:25:48 1.6.2.2
> +++ dosmode.c 1999/11/24 21:16:34
> @@ -249,9 +249,8 @@
>
> if (file_utime(conn, fname, ×)) {
> DEBUG(4,("set_filetime(%s) failed:
%s\n",fname,strerror(errno)));
> + return False;
> }
>
> return(True);
> }
> -
> -
> -------------------------cut here-------------------------------------
--
Ing. Buero Ermert, Dipl. Inform Hanns-Peter Ermert, 10715 Berlin
email: Hanns-Peter.Ermert@alcatel.de / Alcatel SEL AG,ZIT/B/S2
12099 Berlin,Colditzstrasse 34-36