mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-11-10 13:58:24 +01:00
* mount: report . and .. from windows directories WinFsp strips the dot entries for the root itself and expects every other directory to report them, the way a real NTFS enumeration does: its dirctl test asserts a subdirectory's first two entries are "." and ".." and that a hundred files enumerate as 102 entries. Dropping them unconditionally is what fails querydir_test. The Go test that guarded the old behaviour went with it: os.File.Readdir filters dot entries itself, so it could never have observed either way. * mount: give the windows dot entries their directory type The readdir fills an attribute block only for real children, so "." and ".." arrived with a zeroed one and were reported with mode 0. Windows refuses to enumerate a directory whose first entry is not marked as a directory, which is the assertion querydir_test fails on with STATUS_OBJECT_NAME_NOT_FOUND. They now carry the type the readdir already knew. The explorer walk also names any unexpected entry rather than only counting, so a dot entry leaking through reads differently from a missing file.
92 lines
3.0 KiB
Plaintext
92 lines
3.0 KiB
Plaintext
# Known winfsp-tests failures for the SeaweedFS Windows mount.
|
|
#
|
|
# One test name per line, as winfsp-tests reports it. A trailing * matches a
|
|
# prefix, so "stream_*" covers a whole group. Listed tests are excluded from
|
|
# the run; a failure in anything NOT listed fails CI, which is what catches a
|
|
# regression.
|
|
#
|
|
# Populated from the first real run: 20 of 50 passed. Extended attributes are
|
|
# forwarded now, so that group runs rather than being excluded. Every entry below is a
|
|
# gap in the mount rather than a quirk of the suite, and the list is meant to
|
|
# shrink. Keep a reason on each group — an entry with no reason cannot be told
|
|
# apart from one nobody has looked at.
|
|
|
|
# Cannot pass by construction
|
|
# ---------------------------
|
|
# Alternate data streams: the filer stores one byte range per entry, and the
|
|
# mount exposes no second stream.
|
|
stream_*
|
|
# Reparse points: Symlink is refused, so there is nothing to resolve.
|
|
reparse_*
|
|
# Byte-range locks live in the WinFsp driver, so they never reach the mount.
|
|
lock_*
|
|
|
|
# Security descriptors
|
|
# --------------------
|
|
# The mount carries unix mode bits and no ACL, and Chown accepts and discards,
|
|
# so a descriptor written here does not read back.
|
|
create_sd_test
|
|
getsecurity_test
|
|
|
|
# Cached and overlapped IO
|
|
# ------------------------
|
|
# The whole rdwr group fails together, so this is one defect rather than nine:
|
|
# the mount does not yet satisfy what Windows expects of cached, write-through
|
|
# and overlapped IO. The first thing worth fixing.
|
|
rdwr_cached_test
|
|
rdwr_cached_append_test
|
|
rdwr_cached_overlapped_test
|
|
rdwr_noncached_test
|
|
rdwr_noncached_overlapped_test
|
|
rdwr_writethru_test
|
|
rdwr_writethru_append_test
|
|
rdwr_writethru_overlapped_test
|
|
rdwr_mixed_test
|
|
flush_test
|
|
|
|
# Delete semantics
|
|
# ----------------
|
|
# WinFsp advertises POSIX unlink, so a file can be deleted while handles are
|
|
# still open; the mount does not implement the delete-pending state.
|
|
delete_access_test
|
|
delete_ex_test
|
|
delete_mmap_test
|
|
delete_pending_test
|
|
|
|
# Rename semantics
|
|
# ----------------
|
|
# Rename over an open file, and rename of a directory holding open handles,
|
|
# which WinFsp is stricter about than POSIX.
|
|
rename_ex_test
|
|
rename_mmap_test
|
|
rename_open_test
|
|
exec_rename_dir_test
|
|
|
|
# File information
|
|
# ----------------
|
|
# Windows attributes (hidden, system, readonly) and creation time are not
|
|
# round-tripped: attrToStat leaves Flags unset and reports ctime as birthtime.
|
|
create_fileattr_test
|
|
create_readonlydir_test
|
|
getfileinfo_test
|
|
setfileinfo_test
|
|
|
|
# Directory enumeration
|
|
# ---------------------
|
|
# querydir_namelen only: checkName caps at 255 bytes while WinFsp counts 255
|
|
# characters. The other two are expected to pass now that "." and ".." are
|
|
# reported for non-root directories, which is what WinFsp enumerates.
|
|
querydir_namelen_test
|
|
|
|
# Name length
|
|
# -----------
|
|
# checkName caps at 255 bytes while WinFsp allows 255 characters, so a CJK
|
|
# name that is legal to Windows is rejected here.
|
|
create_namelen_test
|
|
|
|
# Sharing modes
|
|
# -------------
|
|
# Windows share-access checking on create, which the mount does not enforce.
|
|
create_share_test
|
|
create_test
|