Il blocco opportunistico (OpLock) è una forma di blocco dei file utilizzata per facilitare la memorizzazione nella cache e il controllo degli accessi e migliorare le prestazioni.
Gli OpLock sono realizzati per consentire l'accesso simultaneo ai file da parte di più utenti migliorando anche le prestazioni per le cache sincronizzate. In una cache sincronizzata, quando un client richiede un file da un server, il file condiviso può essere memorizzato nella cache per evitare viaggi successivi sulla rete per recuperarlo.
OpLock fa parte del protocollo SMB (Server message block), noto anche come protocollo CIFS (Common Internet File System). Gli OpLock includono blocchi batch, blocchi esclusivi e OpLock di livello 2.
Serrature batch sono utilizzati dove è possibile accoppiare richieste di apertura e chiusura frequenti; il sistema ignora le richieste di chiusura non necessarie se il file deve essere riaperto, riducendo così l'impatto sulle prestazioni delle richieste.
Serrature esclusive vengono utilizzati quando un client è l'unica entità o processo che ha il file aperto. In tal caso, tutte le modifiche vengono memorizzate nella cache prima di inviare il file al server.
OpLock di livello 2 entrano in vigore quando un OpLock detenuto da un client viene aperto da una terza parte, sostituendo il precedente blocco esclusivo del client.
Un OpLock non è un comando ma una richiesta tipicamente inviata dal client al server e soddisfatta in condizioni consentite o nella particolare opportunità per la quale è denominato. Quando un blocco non è più valido, viene inviata un'interruzione al client per terminarlo.
Esistono alcune implicazioni che OpLocks può causare danni e problemi di prestazioni nei database ISAM (Indexed Sequential Access Method). Di conseguenza, alcune aziende, tra cui Symantec, hanno consigliato di disabilitare OpLocks come best practice.