Changeset 39 for trunk/samba/source/smbd/blocking.c
- Timestamp:
- May 27, 2007, 12:26:26 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/samba/source/smbd/blocking.c
r1 r39 40 40 SMB_BIG_UINT count; 41 41 uint32 lock_pid; 42 uint32 blocking_pid; /* PID that blocks us. */ 42 43 enum brl_flavour lock_flav; 43 44 enum brl_type lock_type; … … 87 88 enum brl_type lock_type, 88 89 enum brl_flavour lock_flav, 89 SMB_BIG_UINT offset, SMB_BIG_UINT count) 90 SMB_BIG_UINT offset, 91 SMB_BIG_UINT count, 92 uint32 blocking_pid) 90 93 { 91 94 static BOOL set_lock_msg; … … 128 131 blr->lock_num = lock_num; 129 132 blr->lock_pid = lock_pid; 133 blr->blocking_pid = blocking_pid; 130 134 blr->lock_flav = lock_flav; 131 135 blr->lock_type = lock_type; … … 143 147 lock_type == READ_LOCK ? PENDING_READ_LOCK : PENDING_WRITE_LOCK, 144 148 blr->lock_flav, 145 lock_timeout ? True : False); /* blocking_lock. */ 149 lock_timeout ? True : False, /* blocking_lock. */ 150 NULL); 146 151 147 152 if (!NT_STATUS_IS_OK(status)) { … … 381 386 WINDOWS_LOCK, 382 387 True, 383 &status); 388 &status, 389 &blr->blocking_pid); 384 390 385 391 TALLOC_FREE(br_lck); … … 441 447 blr->lock_flav, 442 448 True, 443 &status); 449 &status, 450 &blr->blocking_pid); 444 451 TALLOC_FREE(br_lck); 445 452 … … 599 606 unsigned int timeout_ms = default_timeout_ms; 600 607 struct timeval tv_curr; 601 SMB_BIG_INT min_tv_dif_us = 0x7FFFFFFF; /* A large +ve number. */608 SMB_BIG_INT min_tv_dif_us = default_timeout_ms * 1000; 602 609 blocking_lock_record *blr = blocking_lock_queue; 603 610 … … 613 620 614 621 if (timeval_is_zero(&blr->expire_time)) { 622 /* 623 * If we're blocked on pid 0xFFFFFFFF this is 624 * a POSIX lock, so calculate a timeout of 625 * 10 seconds. 626 */ 627 if (blr->blocking_pid == 0xFFFFFFFF) { 628 tv_dif_us = 10 * 1000 * 1000; 629 min_tv_dif_us = MIN(min_tv_dif_us, tv_dif_us); 630 } 615 631 continue; /* Never timeout. */ 616 632 }
Note:
See TracChangeset
for help on using the changeset viewer.