← Blog
MILESTONE · 0.6.0 protocol

SMB2 Protocol Complete: 18/18 Commands, 348/348 PASS

June 22, 2026 · sigil-fs · Sigil-Docs
fs smb2 network protocol 0.6.0

The last two SMB2 commands land in d73f287: CHANGE_NOTIFY (cmd 15, async directory-change subscription) and OPLOCK_BREAK (cmd 18, oplock downgrade). The SMB2 standard codec is now complete. 18/18 · 348/348 ALL PASS


The final two: CHANGE_NOTIFY and OPLOCK_BREAK

CHANGE_NOTIFY (cmd 15)

Async directory-change subscription. The client registers a watch on a directory handle; the server delivers FileNotifyInformation records when the watched directory changes. Filter bits:

The WATCH_TREE flag enables recursive subdirectory monitoring. The parser copies FileNotifyInformation records: each record is a NextEntryOffset + Action + FileName triple. Records are linked by NextEntryOffset; the last record has offset 0.

OPLOCK_BREAK (cmd 18)

Client downgrades an oplock it holds; the server echoes the granted level back. Two granted levels: NONE=0 (oplock fully released) or LEVEL_II=1 (downgraded to shared read-caching). The break handshake closes the oplock negotiation loop opened during CREATE.


Full SMB2 command table — 18/18

CmdNameDescriptionStatus
0NEGOTIATEProtocol version + dialect negotiationPASS
1SESSION_SETUPAuthentication + session establishmentPASS
2LOGOFFSession teardownPASS
3TREE_CONNECTShare mountPASS
4TREE_DISCONNECTShare unmountPASS
5CREATEFile/directory open or createPASS
6CLOSEFile handle closePASS
7FLUSHFlush file data to stable storagePASS
8READFile readPASS
9WRITEFile writePASS
10LOCKByte-range lock/unlockPASS
11IOCTLFSCTL dispatchPASS
12CANCELAsync request cancelPASS
13ECHOKeep-alive pingPASS
14QUERY_DIRECTORYDirectory enumerationPASS
15CHANGE_NOTIFYAsync dir-change subscriptionPASS
16QUERY_INFOFile/directory info queryPASS
17SET_INFOFile/directory info setPASS
18OPLOCK_BREAKClient oplock downgradePASS

348/348 ALL PASS

Before the CHANGE_NOTIFY and OPLOCK_BREAK push, NFS3 LINK (proc 15) also closed — that completed the NFS3 standard 15-procedure set at 347/347 ALL PASS. The two SMB2 additions bring the total to 348/348. Both protocol stacks are now at full standard coverage with zero regressions across the combined suite.