1
0
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:
Zack Kirsch 2009-05-11 17:10:43 +00:00 committed by Tim Prouty
parent c2482d6b23
commit 3627ceb5e2
2 changed files with 14 additions and 2 deletions

View File

@ -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;

View File

@ -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));