svn commit: samba r8149 - in trunk/source/smbd: .
vlendec at samba.org
vlendec at samba.org
Mon Jul 4 15:48:56 GMT 2005
Author: vlendec
Date: 2005-07-04 15:48:55 +0000 (Mon, 04 Jul 2005)
New Revision: 8149
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=8149
Log:
More micro-refactoring.
Volker
Modified:
trunk/source/smbd/open.c
Changeset:
Modified: trunk/source/smbd/open.c
===================================================================
--- trunk/source/smbd/open.c 2005-07-04 15:42:08 UTC (rev 8148)
+++ trunk/source/smbd/open.c 2005-07-04 15:48:55 UTC (rev 8149)
@@ -625,6 +625,7 @@
for(i = 0; i < num_share_modes; i++) {
share_mode_entry *share_entry = &old_shares[i];
+ BOOL opb_ret;
#if defined(DEVELOPER)
validate_my_share_entries(i, share_entry);
@@ -639,56 +640,58 @@
* we must break it before continuing.
*/
- if (cause_oplock_break(*p_oplock_request,
- share_entry->op_type,
- access_mask)) {
- BOOL opb_ret;
+ if (!cause_oplock_break(*p_oplock_request,
+ share_entry->op_type,
+ access_mask)) {
+ if (!LEVEL_II_OPLOCK_TYPE(share_entry->op_type)) {
+ *p_all_current_opens_are_level_II = False;
+ }
+ continue;
+ }
- DEBUG(5,("open_mode_check: oplock_request = "
- "%d, breaking oplock (%x) on file "
- "%s, dev = %x, inode = %.0f\n",
- *p_oplock_request,
- share_entry->op_type, fname,
- (unsigned int)dev, (double)inode));
+ /* This is an oplock break */
+
+ DEBUG(5,("open_mode_check: oplock_request = %d, "
+ "breaking oplock (%x) on file %s, "
+ "dev = %x, inode = %.0f\n",
+ *p_oplock_request, share_entry->op_type,
+ fname, (unsigned int)dev, (double)inode));
- /* Ensure the reply for the open uses the
- * correct sequence number. */
- /* This isn't a real deferred packet as it's
- * response will also increment the sequence.
- */
- srv_defer_sign_response(get_current_mid());
+ /* Ensure the reply for the open uses the correct
+ * sequence number. */
+ /* This isn't a real deferred packet as it's response
+ * will also increment the sequence.
+ */
+ srv_defer_sign_response(get_current_mid());
- /* Oplock break - unlock to request it. */
- unlock_share_entry(conn, dev, inode);
+ /* Oplock break - unlock to request it. */
+ unlock_share_entry(conn, dev, inode);
- opb_ret = request_oplock_break(share_entry);
+ opb_ret = request_oplock_break(share_entry);
- /* Now relock. */
- lock_share_entry(conn, dev, inode);
+ /* Now relock. */
+ lock_share_entry(conn, dev, inode);
- if(opb_ret == False) {
- DEBUG(0,("open_mode_check: FAILED when breaking "
- "oplock (%x) on file %s, dev = %x, "
- "inode = %.0f\n",
- old_shares[i].op_type, fname,
- (unsigned int)dev, (double)inode));
- SAFE_FREE(old_shares);
- set_saved_error_triple(ERRDOS, ERRbadshare,
- NT_STATUS_SHARING_VIOLATION);
- return -1;
- }
+ if (!opb_ret) {
+ DEBUG(0,("open_mode_check: FAILED when breaking "
+ "oplock (%x) on file %s, dev = %x, "
+ "inode = %.0f\n",
+ old_shares[i].op_type, fname,
+ (unsigned int)dev, (double)inode));
+ SAFE_FREE(old_shares);
+ set_saved_error_triple(ERRDOS, ERRbadshare,
+ NT_STATUS_SHARING_VIOLATION);
+ return -1;
+ }
- broken_entry = SMB_MALLOC_P(struct share_mode_entry_list);
- if (!broken_entry) {
- smb_panic("open_mode_check: malloc fail.\n");
- }
- broken_entry->entry = *share_entry;
- DLIST_ADD(broken_entry_list, broken_entry);
- broke_oplock = True;
+ broken_entry = SMB_MALLOC_P(struct share_mode_entry_list);
+ if (!broken_entry) {
+ smb_panic("open_mode_check: malloc fail.\n");
+ }
+ broken_entry->entry = *share_entry;
+ DLIST_ADD(broken_entry_list, broken_entry);
+ broke_oplock = True;
- } else if (!LEVEL_II_OPLOCK_TYPE(share_entry->op_type)) {
- *p_all_current_opens_are_level_II = False;
- }
} /* end for */
if (broke_oplock) {
More information about the samba-cvs
mailing list