SFTP restrictions with ObjectStore

When using SFTP to interact with an ObjectStore storage group, these limitations apply:

Limitation Description
chmod Not supported.
chown Not supported.
mkdir Operations are restricted to existing directory trees.

New directories via mkdir must be created off of existing paths, as it doesn't create a non-existent directory within its path.

For example, because the “non-existent” directory doesn't exist, the following attempt would fail: “/123456/files/non-existent/new-directory

Files and sub-directories with the same name Files and sub-directories using the same name can't exist in the same parent directory.

For example, a file that is explicitly named "movie" (with no file extension) cannot exist in the same parent directory as a sub-directory named "movie".

ObjectStore back-end flexibility currently allows for this condition. However, it can lead to confusion and non-standard presentation of the SFTP protocol, as is generally practiced.

Files can't be created in directories that do not pre-exist The ObjectStore backend will not automatically create non-existent directories that are included in an SFTP upload path.
Large lists of small files There is a slight impact to file creation speed with large lists of small files.

This is due to additional stat requests that are performed to ensure posix compliance.

Until a file is closed it can't be seen Files that aren't closed can't be seen by access attempts on the same sftp connection, or other connections.

For this reason, copying files to an sshfs file system mountpoint connected via sftp to NetStorage doesn't work.

Upload seek operations Not supported.
Download seek operations Not supported.
Stat on newly opened file for upload Not supported.
Opening a file for concurrent read and write Not supported.
Opening a file for write with seeking Not supported.
Resuming an upload Not supported.
EXCL flag The EXCL flag is ignored.
SSH_FXF_EXCL Not supported.

This flag is used by some clients as an overwrite check during file creation to ensure the file didn't already exist.

WinSCP is an example of a client that uses this unsupported flag during file creation.