← Documents Documentation/admin-guide/cifs/todo.rst GitHub 원문 ↗

Linux 6.18.37 · Administration / CIFS

CIFS TODO

SMB3 protocol 기능, VFS, 관리 도구, identity와 metadata, failover, tracing, interoperability 및 시험 자동화의 남은 과제를 정리합니다.

Source pathDocumentation/admin-guide/cifs/todo.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

남은 구현 과제

todo.rst:1-103

SMB3.1.1의 optional feature부터 QUIC, quota, compounding, inotify, xattr, UID mapping, witness, module 분리와 authentication까지 구현 과제를 항목별로 설명합니다.

Bug 자료와 시험 계획

todo.rst:104-133

Samba 및 kernel Bugzilla, xfstest 결과와 path limit, performance, interoperability, buildbot, Coverity 시험 계획을 연결합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 ====
2 TODO
3 ====
4
5 As of 6.7 kernel. See https://wiki.samba.org/index.php/LinuxCIFSKernel
6 for list of features added by release
7
8 A Partial List of Missing Features
9 ==================================
10
11 Contributions are welcome. There are plenty of opportunities
12 for visible, important contributions to this module. Here
13 is a partial list of the known problems and missing features:
14
15 a) SMB3 (and SMB3.1.1) missing optional features:
16 multichannel performance optimizations, algorithmic channel selection,
17 directory leases optimizations,
18 support for faster packet signing (GMAC),
19 support for compression over the network,
20 T10 copy offload ie "ODX" (copy chunk, and "Duplicate Extents" ioctl
21 are currently the only two server side copy mechanisms supported)
22
23 b) Better optimized compounding and error handling for sparse file support,
24 perhaps addition of new optional SMB3.1.1 fsctls to make collapse range
25 and insert range more atomic
26
27 c) Support for SMB3.1.1 over QUIC (and perhaps other socket based protocols
28 like SCTP)
29
30 d) quota support (needs minor kernel change since quota calls otherwise
31 won't make it to network filesystems or deviceless filesystems).
32
33 e) Additional use cases can be optimized to use "compounding" (e.g.
34 open/query/close and open/setinfo/close) to reduce the number of
35 roundtrips to the server and improve performance. Various cases
36 (stat, statfs, create, unlink, mkdir, xattrs) already have been improved by
37 using compounding but more can be done. In addition we could
38 significantly reduce redundant opens by using deferred close (with
39 handle caching leases) and better using reference counters on file
40 handles.
41
42 f) Finish inotify support so kde and gnome file list windows
43 will autorefresh (partially complete by Asser). Needs minor kernel
44 vfs change to support removing D_NOTIFY on a file.
45
46 g) Add GUI tool to configure /proc/fs/cifs settings and for display of
47 the CIFS statistics (started)
48
49 h) implement support for security and trusted categories of xattrs
50 (requires minor protocol extension) to enable better support for SELINUX
51
52 i) Add support for tree connect contexts (see MS-SMB2) a new SMB3.1.1 protocol
53 feature (may be especially useful for virtualization).
54
55 j) Create UID mapping facility so server UIDs can be mapped on a per
56 mount or a per server basis to client UIDs or nobody if no mapping
57 exists. Also better integration with winbind for resolving SID owners
58
59 k) Add tools to take advantage of more smb3 specific ioctls and features
60 (passthrough ioctl/fsctl is now implemented in cifs.ko to allow
61 sending various SMB3 fsctls and query info and set info calls
62 directly from user space) Add tools to make setting various non-POSIX
63 metadata attributes easier from tools (e.g. extending what was done
64 in smb-info tool).
65
66 l) encrypted file support (currently the attribute showing the file is
67 encrypted on the server is reported, but changing the attribute is not
68 supported).
69
70 m) improved stats gathering tools (perhaps integration with nfsometer?)
71 to extend and make easier to use what is currently in /proc/fs/cifs/Stats
72
73 n) Add support for claims based ACLs ("DAC")
74
75 o) mount helper GUI (to simplify the various configuration options on mount)
76
77 p) Expand support for witness protocol to allow for notification of share
78 move, and server network adapter changes. Currently only notifications by
79 the witness protocol for server move is supported by the Linux client.
80
81 q) Allow mount.cifs to be more verbose in reporting errors with dialect
82 or unsupported feature errors. This would now be easier due to the
83 implementation of the new mount API.
84
85 r) updating cifs documentation, and user guide.
86
87 s) Addressing bugs found by running a broader set of xfstests in standard
88 file system xfstest suite.
89
90 t) split cifs and smb3 support into separate modules so legacy (and less
91 secure) CIFS dialect can be disabled in environments that don't need it
92 and simplify the code.
93
94 v) Additional testing of POSIX Extensions for SMB3.1.1
95
96 w) Support for the Mac SMB3.1.1 extensions to improve interop with Apple servers
97
98 x) Support for additional authentication options (e.g. IAKERB, peer-to-peer
99 Kerberos, SCRAM and others supported by existing servers)
100
101 y) Improved tracing, more eBPF trace points, better scripts for performance
102 analysis
103
104 Known Bugs
105 ==========
106
107 See https://bugzilla.samba.org - search on product "CifsVFS" for
108 current bug list. Also check http://bugzilla.kernel.org (Product = File System, Component = CIFS)
109 and xfstest results e.g. https://wiki.samba.org/index.php/Xfstest-results-smb3
110
111 Misc testing to do
112 ==================
113 1) check out max path names and max path name components against various server
114 types. Try nested symlinks (8 deep). Return max path name in stat -f information
115
116 2) Improve xfstest's cifs/smb3 enablement and adapt xfstests where needed to test
117 cifs/smb3 better
118
119 3) Additional performance testing and optimization using iozone and similar -
120 there are some easy changes that can be done to parallelize sequential writes,
121 and when signing is disabled to request larger read sizes (larger than
122 negotiated size) and send larger write sizes to modern servers.
123
124 4) More exhaustively test against less common servers
125
126 5) Continue to extend the smb3 "buildbot" which does automated xfstesting
127 against Windows, Samba and Azure currently - to add additional tests and
128 to allow the buildbot to execute the tests faster. The URL for the
129 buildbot is: http://smb3-test-rhel-75.southcentralus.cloudapp.azure.com
130
131 6) Address various coverity warnings (most are not bugs per-se, but
132 the more warnings are addressed, the easier it is to spot real
133 problems that static analyzers will point out in the future).
134

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

누락된 선택 기능과 VFS 개선

1-44

이 목록은 kernel 6.7 기준입니다. Release별 추가 기능은 `https://wiki.samba.org/index.php/LinuxCIFSKernel`에서 확인할 수 있습니다. 기여는 환영하며 이 module에는 눈에 띄고 중요한 기여 기회가 많이 남아 있습니다. 다음은 알려진 문제와 누락 기능의 일부입니다.

  • a) SMB3 및 SMB3.1.1의 선택 기능 보완: multichannel 성능 최적화와 algorithm 기반 channel 선택, directory lease 최적화, 더 빠른 GMAC packet signing, network compression, T10 copy offload인 ODX가 필요합니다. 현재 지원하는 server-side copy 방식은 copy chunk와 `Duplicate Extents` ioctl뿐입니다.
  • b) Sparse file 지원을 위한 compounding과 error handling을 더 최적화하고, collapse range와 insert range를 더 atomic하게 만들 수 있는 새로운 선택적 SMB3.1.1 fsctl 추가를 검토합니다.
  • c) QUIC 위의 SMB3.1.1을 지원하고, SCTP 같은 다른 socket 기반 protocol도 검토합니다.
  • d) Quota를 지원합니다. 현재 quota call이 network filesystem 또는 deviceless filesystem까지 전달되지 않으므로 작은 kernel 변경이 필요합니다.
  • e) Open/query/close와 open/setinfo/close 같은 더 많은 use case에서 compounding을 사용해 server roundtrip을 줄이고 성능을 높입니다. stat, statfs, create, unlink, mkdir, xattrs는 이미 개선됐지만 더 확장할 수 있습니다. Handle caching lease를 이용한 deferred close와 file handle reference counter 활용을 개선해 중복 open도 크게 줄일 수 있습니다.
  • f) KDE와 GNOME의 file list window가 자동 갱신되도록 inotify 지원을 완성합니다. Asser가 일부를 구현했으며, file의 D_NOTIFY 제거를 지원하는 작은 kernel VFS 변경이 필요합니다.
SMB3 선택 기능의 남은 작업
항목핵심 과제관련 symbol 또는 protocol
aChannel, signing, compression, offloadGMAC, ODX
bSparse range operation atomicitySMB3.1.1 fsctl
cSecure transportQUIC, SCTP
dNetwork filesystem quota pathVFS quota calls
eRoundtrip 및 open 감소Compounding, deferred close
fDesktop auto-refreshinotify, D_NOTIFY

첫 번째 TODO 묶음의 protocol 및 VFS 작업입니다.

관리 도구, metadata와 failover

45-83
  • g) `/proc/fs/cifs` 설정을 구성하고 CIFS 통계를 표시하는 GUI 도구를 추가합니다. 이 작업은 시작된 상태입니다.
  • h) SELINUX 지원을 개선할 수 있도록 security 및 trusted category의 xattr을 구현합니다. 작은 protocol 확장이 필요합니다.
  • i) 가상화 환경에서 특히 유용할 수 있는 새로운 SMB3.1.1 기능인 tree connect context를 지원합니다. 자세한 내용은 MS-SMB2를 참조합니다.
  • j) Server UID를 mount별 또는 server별로 client UID에 mapping하고, mapping이 없으면 `nobody`로 연결하는 기능을 만듭니다. SID owner를 resolve하기 위한 winbind 연동도 개선합니다.
  • k) SMB3 전용 ioctl과 기능을 활용할 도구를 추가합니다. `cifs.ko`에는 passthrough ioctl/fsctl이 구현되어 user space가 여러 SMB3 fsctl, query info, set info call을 직접 보낼 수 있습니다. `smb-info`에서 수행한 작업을 확장하는 등 non-POSIX metadata attribute를 쉽게 설정하는 도구도 추가합니다.
  • l) Encrypted file을 지원합니다. 현재 server에서 file이 encrypted됐다는 attribute는 보고하지만 해당 attribute 변경은 지원하지 않습니다.
  • m) `/proc/fs/cifs/Stats`의 기능을 확장하고 사용하기 쉽게 만드는 통계 수집 도구를 개선합니다. nfsometer와의 통합도 검토할 수 있습니다.
  • n) Claims 기반 ACL인 DAC를 지원합니다.
  • o) Mount option 구성을 단순화하는 mount helper GUI를 제공합니다.
  • p) Share 이동과 server network adapter 변경을 알릴 수 있도록 witness protocol 지원을 확장합니다. 현재 Linux client는 witness protocol에서 server 이동 알림만 지원합니다.
  • q) `mount.cifs`가 dialect 오류 또는 지원하지 않는 기능 오류를 더 자세히 보고하게 합니다. 새로운 mount API가 구현되어 이 작업은 이전보다 쉬워졌습니다.
관리와 metadata TODO
영역대표 작업
관리/proc/fs/cifs GUI, mount helper GUI
IdentityUID mapping, winbind, SID owner
Metadatasecurity/trusted xattr, encrypted attribute
ProtocolTree connect context, passthrough ioctl/fsctl
AvailabilityWitness share 및 adapter change notification
DiagnosticsStats 도구와 자세한 mount.cifs error

사용자 도구에서 protocol 확장까지 이어지는 작업입니다.

문서, 시험, module 분리와 알려진 bug

84-109
  • r) CIFS 문서와 user guide를 갱신합니다.
  • s) 표준 filesystem xfstest suite에서 더 넓은 범위의 xfstest를 실행해 발견한 bug를 해결합니다.
  • t) Legacy CIFS dialect가 필요 없는 환경에서 보안성이 낮은 해당 dialect를 끌 수 있고 code도 단순화할 수 있도록 CIFS와 SMB3 지원을 별도 module로 분리합니다.
  • v) SMB3.1.1 POSIX Extensions를 추가로 시험합니다.
  • w) Apple server와의 상호 운용성을 개선하도록 Mac SMB3.1.1 extensions를 지원합니다.
  • x) 기존 server가 지원하는 IAKERB, peer-to-peer Kerberos, SCRAM 등의 추가 authentication option을 지원합니다.
  • y) Tracing을 개선하고 eBPF trace point를 늘리며 performance analysis script를 개선합니다.

현재 bug 목록은 `https://bugzilla.samba.org`에서 product `CifsVFS`로 검색하십시오. `http://bugzilla.kernel.org`에서는 Product를 `File System`, Component를 `CIFS`로 선택해 확인할 수 있습니다. Xfstest 결과 예시는 `https://wiki.samba.org/index.php/Xfstest-results-smb3`에 있습니다.

CIFS bug 확인 경로
Samba BugzillaProduct CifsVFSCurrent CIFS issues
Kernel BugzillaFile System / CIFSKernel-side issues
Xfstest resultsSMB3 test matrixRegression evidence

Protocol 구현 문제와 regression을 확인할 대표 자료입니다.

추가 시험 과제

110-133
  • 1) 여러 server type에서 최대 path name과 최대 path name component를 확인합니다. 8단계 깊이의 중첩 symlink를 시험하고 `stat -f` 정보에 최대 path name을 반환합니다.
  • 2) Xfstest의 CIFS/SMB3 enablement를 개선하고 필요에 따라 xfstest를 조정해 CIFS/SMB3를 더 잘 시험합니다.
  • 3) `iozone`과 유사한 도구로 성능 시험과 최적화를 추가합니다. Sequential write를 병렬화하고, signing이 꺼졌을 때 negotiated size보다 큰 read를 요청하며 modern server에 더 큰 write를 보내는 비교적 간단한 개선이 있습니다.
  • 4) 덜 일반적인 server를 대상으로 더 철저하게 시험합니다.
  • 5) 현재 Windows, Samba, Azure를 대상으로 자동 xfstesting을 수행하는 SMB3 `buildbot`을 확장해 추가 시험을 넣고 더 빠르게 실행합니다. URL은 `http://smb3-test-rhel-75.southcentralus.cloudapp.azure.com`입니다.
  • 6) 여러 Coverity warning을 해결합니다. 대부분은 bug 자체가 아니지만 warning을 더 많이 정리할수록 static analyzer가 가리키는 실제 문제를 발견하기 쉬워집니다.
CIFS 시험 matrix
시험대상검증 목표
Path여러 server와 중첩 symlinkLength limit 및 stat -f
XfstestCIFS/SMB3 suite기능과 regression
Performanceiozone, read/write size병렬 I/O와 throughput
Interop비주류 server호환성
BuildbotWindows, Samba, Azure자동화 범위와 속도
Static analysisCoverity warnings실제 defect 식별

남은 시험을 대상과 검증 목표로 나눴습니다.