IETF-SSH archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: sftp rename not good.
Let me make sure I understand the problem:
- SSH_FXP_RENAME specifies that it is an
error if the new file exists.
- rename(2) specifies that if the new file
exists, it is always overwritten.
Therefore rename(2) can't be used to implement
SSH_FXP_RENAME.
Is this a correct summary of the problem?
Thanks,
Joseph
----- Original Message -----
From: "Alfred Perlstein" <bright%mu.org@localhost>
To: <ietf-ssh%netbsd.org@localhost>
Cc: "Markus Friedl" <markus%openbsd.org@localhost>; <openssh%openssh.com@localhost>
Sent: Tuesday, May 13, 2003 12:54 PM
Subject: Re: sftp rename not good.
> Basically we're having a discussion about why rename under sftp
> doesn't provide true rename(2) semantics. Can someone comment
> or provide a suggestion to resolve this? I have several
> half-baked solutions at the end of this email to choose from
> or a new idea would be welcome.
>
> thank you,
> -Alfred
>
> * Markus Friedl <markus%openbsd.org@localhost> [030513 08:33] wrote:
> > On Tue, May 13, 2003 at 04:19:17AM -0700, Alfred Perlstein wrote:
> > > I was trying to use sftp to upload pictures for a camera project
> > > and came across a problem, basically the rename code is trying
> > > to be clever for some reason that I can't determine and is broken
> > > for renaming a file over an existing one:
> >
> > but this is how it's supposed to work:
> >
> > 6.5 Removing and Renaming Files
> >
> > ....
> ...
> > where `id' is the request identifier, `oldpath' is the name of an
> > existing file or directory, and `newpath' is the new name for the
> > file or directory. It is an error if there already exists a file
> > with the name specified by newpath. The server may also fail rename
> > requests in other situations, for example if `oldpath' and `newpath'
> > point to different file systems on the server.
> ...
> > > Why not just use rename(2)? Or fall back to rename(2) if on unix
> > > or if the link fails? If the "race" is that there may be data
> > > lossage then this is pointless unless you fsync the target files
> > > between operations.
> >
> > The original code was
> ...
> > }
> >
> > but since newpath might be created after the stat(2)
> > we changed this to the current code.
> >
> > however, i think that for the traditional unix 'mv', this
> > specification of SSH_FXP_RENAME is bogus, so you should
> > talk to ietf-ssh%netbsd.org@localhost. any other ideas?
> > or am i missing something. a rename(2) semantic would
> > be much better....
>
> I totally agree that having a true mechanism for getting
> real rename(2) semantics is desireable.
>
> Perhaps a flag though, rename -f or something to do an actual rename
> or perhaps a "-i" for the link(2) behaviour. Or maybe adding the
> ability for the built in "ln" command to do hardlinks then if the
> user wanted the current behaviour they could just use "ln". :)
>
> Just some suggestions.
>
> --
> -Alfred Perlstein [alfred%freebsd.org@localhost]
> 'Instead of asking why a piece of software is using "1970s technology,"
> start asking why software is ignoring 30 years of accumulated wisdom.'
>
>
Home |
Main Index |
Thread Index |
Old Index