[sftp] open(2) w/ O_CREAT|O_TRUNC works, but O_CREAT alone fails
----------------------------------------------------------------
Key: SSHD-100
URL: https://issues.apache.org/jira/browse/SSHD-100
Project: MINA SSHD
Issue Type: Bug
Reporter: Bobby Powers
Attachments: test.c
Hi folks,
I've mounted an sftp directory using sshfs like so:
# sshfs -d -p 9022 bpow...@$server_name:/bpowers /home/bpowers/Desktop/wintest
The following sequences of commands shows the problem:
r...@bpowers-laptop:/home/bpowers/Desktop/wintest/test# rm -f bar
r...@bpowers-laptop:/home/bpowers/Desktop/wintest/test# touch bar
touch: cannot touch `bar': No such file or directory
r...@bpowers-laptop:/home/bpowers/Desktop/wintest/test# echo "foo" > bar
r...@bpowers-laptop:/home/bpowers/Desktop/wintest/test# cat bar
foo
r...@bpowers-laptop:/home/bpowers/Desktop/wintest/test# rm bar
r...@bpowers-laptop:/home/bpowers/Desktop/wintest/test# touch bar
touch: cannot touch `bar': No such file or directory
...
I've reduced it to a simple test case. Running the attached program gives me
the following:
r...@bpowers-laptop:/home/bpowers/Desktop/wintest/test#
/home/bpowers/creat_test
/home/bpowers/Desktop/wintest/test/abc2: No such file or directory
/home/bpowers/Desktop/wintest/test/abc3: worked.
The difference is in the flags passed to open(2), and the consequence of this
is that I cannot use cp or rsync to create any files over sftp (although they
will update existing files).
see attachment for the source of creat_test, which can be compiled with:
$ gcc -o creat_test test.c
and
$ man 2 open
for a description of the flags.
Debugging output from sshfs shows the following:
unique: 39, opcode: LOOKUP (1), nodeid: 1, insize: 45
LOOKUP /test
getattr /test
NODEID: 2
unique: 39, success, outsize: 144
unique: 40, opcode: LOOKUP (1), nodeid: 2, insize: 45
LOOKUP /test/abc2
getattr /test/abc2
unique: 40, error: -2 (No such file or directory),
outsize: 16
unique: 41, opcode: CREATE (35), nodeid: 2, insize: 61
create flags: 0x8041 /test/abc2 0100644 umask=0022
unique: 41, error: -2 (No such file or directory),
outsize: 16
unique: 42, opcode: LOOKUP (1), nodeid: 2, insize: 45
LOOKUP /test/abc3
getattr /test/abc3
unique: 42, error: -2 (No such file or directory),
outsize: 16
unique: 43, opcode: CREATE (35), nodeid: 2, insize: 61
create flags: 0x8241 /test/abc3 0100644 umask=0022
create[25271456] flags: 0x8241 /test/abc3
fgetattr[25271456] /test/abc3
NODEID: 4
unique: 43, success, outsize: 160
unique: 44, opcode: FLUSH (25), nodeid: 4, insize: 64
flush[25271456]
unique: 44, success, outsize: 16
unique: 45, opcode: RELEASE (18), nodeid: 4, insize: 64
release[25271456] flags: 0x8001
unique: 45, success, outsize: 16
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.