mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +03:00
s3 onefs: Self-contend level2 oplocks on BRL
This commit is contained in:
parent
c2482d6b23
commit
3627ceb5e2
@ -150,6 +150,11 @@ static void onefs_cbrl_async_success(uint64_t id)
|
||||
else
|
||||
bs->state = ONEFS_CBRL_NONE;
|
||||
|
||||
/* Self contend our own level 2 oplock. The kernel handles
|
||||
* contention of other opener's level 2 oplocks. */
|
||||
contend_level2_oplocks_begin(blr->fsp,
|
||||
LEVEL2_CONTEND_WINDOWS_BRL);
|
||||
|
||||
/* Process the queue, to try the next lock or finish up. */
|
||||
process_blocking_lock_queue();
|
||||
}
|
||||
@ -215,7 +220,7 @@ static void onefs_init_cbrl(void)
|
||||
|
||||
DEBUG(10, ("cbrl_event_fd = %d\n", cbrl_event_fd));
|
||||
|
||||
/* Register the oplock event_fd with samba's event system */
|
||||
/* Register the CBRL event_fd with samba's event system */
|
||||
cbrl_fde = event_add_fd(smbd_event_context(),
|
||||
NULL,
|
||||
cbrl_event_fd,
|
||||
@ -366,6 +371,10 @@ failure:
|
||||
return status;
|
||||
|
||||
success:
|
||||
/* Self contend our own level 2 oplock. The kernel handles
|
||||
* contention of other opener's level 2 oplocks. */
|
||||
contend_level2_oplocks_begin(br_lck->fsp,
|
||||
LEVEL2_CONTEND_WINDOWS_BRL);
|
||||
|
||||
END_PROFILE(syscall_brl_lock);
|
||||
|
||||
@ -400,6 +409,10 @@ bool onefs_brl_unlock_windows(vfs_handle_struct *handle,
|
||||
return false;
|
||||
}
|
||||
|
||||
/* For symmetry purposes, end our oplock contention even though its
|
||||
* currently a no-op. */
|
||||
contend_level2_oplocks_end(br_lck->fsp, LEVEL2_CONTEND_WINDOWS_BRL);
|
||||
|
||||
DEBUG(10, ("returning true.\n"));
|
||||
return true;
|
||||
|
||||
|
@ -526,7 +526,6 @@ static void onefs_semlock_write(int fd, enum level2_contention_type type,
|
||||
|
||||
switch (type) {
|
||||
case LEVEL2_CONTEND_ALLOC_GROW:
|
||||
case LEVEL2_CONTEND_WINDOWS_BRL:
|
||||
case LEVEL2_CONTEND_POSIX_BRL:
|
||||
DEBUG(10, ("Taking %d write semlock for cmd %d on fd: %d\n",
|
||||
semlock_op, type, fd));
|
||||
|
Loading…
Reference in New Issue
Block a user