/* Notify any deferred opens waiting on this close. */
notify_deferred_opens(conn->sconn, lck);
- reply_to_oplock_break_requests(fsp);
/*
* NT can set delete_on_close of the last open
DEBUG(0, ("Oplock break failed for file %s -- replying anyway\n",
fsp_str_dbg(fsp)));
remove_oplock(fsp);
- reply_to_oplock_break_requests(fsp);
}
/*******************************************************************
add_oplock_timeout_handler(fsp);
}
-void reply_to_oplock_break_requests(files_struct *fsp)
-{
- struct smbd_server_connection *sconn = fsp->conn->sconn;
- struct kernel_oplocks *koplocks = sconn->oplocks.kernel_ops;
-
- /*
- * If kernel oplocks already notifies smbds when oplocks are
- * broken/removed, just return.
- */
- if (koplocks &&
- (koplocks->flags & KOPLOCKS_OPLOCK_BROKEN_NOTIFICATION)) {
- return;
- }
-
- SAFE_FREE(fsp->pending_break_messages);
- fsp->num_pending_break_messages = 0;
- TALLOC_FREE(fsp->oplock_timeout);
- return;
-}
-
static void process_open_retry_message(struct messaging_context *msg_ctx,
void *private_data,
uint32_t msg_type,
bool downgrade_oplock(files_struct *fsp);
bool should_notify_deferred_opens(struct smbd_server_connection *sconn);
void break_level2_to_none_async(files_struct *fsp);
-void reply_to_oplock_break_requests(files_struct *fsp);
void contend_level2_oplocks_begin(files_struct *fsp,
enum level2_contention_type type);
void contend_level2_oplocks_end(files_struct *fsp,
smb_panic("internal tdb error");
}
- reply_to_oplock_break_requests(fsp);
-
/* if this is a pure oplock break request then don't send a
* reply */
if (num_locks == 0 && num_ulocks == 0) {
smb_panic("internal tdb error");
}
- reply_to_oplock_break_requests(fsp);
-
tevent_req_done(req);
return tevent_req_post(req, ev);
}