Lines Matching refs:node

55 static uint32_t smb_oplock_break_cmn(smb_node_t *node,
172 RecomputeOplockState(smb_node_t *node) in RecomputeOplockState() argument
174 smb_oplock_t *ol = &node->n_oplock; in RecomputeOplockState()
176 ASSERT(RW_READ_HELD(&node->n_ofile_list.ll_lock)); in RecomputeOplockState()
177 ASSERT(MUTEX_HELD(&node->n_oplock.ol_mutex)); in RecomputeOplockState()
249 FOREACH_NODE_OFILE(node, o) { in RecomputeOplockState()
317 smb_node_t *node = ofile->f_node; in smb_oplock_request() local
320 smb_llist_enter(&node->n_ofile_list, RW_READER); in smb_oplock_request()
321 mutex_enter(&node->n_oplock.ol_mutex); in smb_oplock_request()
325 mutex_exit(&node->n_oplock.ol_mutex); in smb_oplock_request()
326 smb_llist_exit(&node->n_ofile_list); in smb_oplock_request()
334 smb_node_t *node = ofile->f_node; in smb_oplock_request_LH() local
339 ASSERT(RW_READ_HELD(&node->n_ofile_list.ll_lock)); in smb_oplock_request_LH()
340 ASSERT(MUTEX_HELD(&node->n_oplock.ol_mutex)); in smb_oplock_request_LH()
352 if (!smb_node_is_file(node)) { in smb_oplock_request_LH()
382 if (node->n_open_count > 1) { in smb_oplock_request_LH()
387 if (node->flags & NODE_FLAGS_WRITE_THROUGH) { in smb_oplock_request_LH()
412 if (smb_lock_range_access(sr, node, 0, ~0, B_FALSE) != 0) { in smb_oplock_request_LH()
417 if (node->flags & NODE_FLAGS_WRITE_THROUGH) { in smb_oplock_request_LH()
459 if (smb_lock_range_access(sr, node, 0, ~0, B_FALSE) != 0) { in smb_oplock_request_LH()
464 if (node->flags & NODE_FLAGS_WRITE_THROUGH) { in smb_oplock_request_LH()
489 if (node->flags & NODE_FLAGS_WRITE_THROUGH) { in smb_oplock_request_LH()
558 smb_node_t *node = ofile->f_node; in smb_oplock_req_excl() local
563 ASSERT(RW_READ_HELD(&node->n_ofile_list.ll_lock)); in smb_oplock_req_excl()
564 ASSERT(MUTEX_HELD(&node->n_oplock.ol_mutex)); in smb_oplock_req_excl()
567 FOREACH_NODE_OFILE(node, o) { in smb_oplock_req_excl()
589 if (node->n_oplock.ol_state == 0) { in smb_oplock_req_excl()
590 node->n_oplock.ol_state = NO_OPLOCK; in smb_oplock_req_excl()
600 if ((node->n_oplock.ol_state & (LEVEL_TWO | NO_OPLOCK)) != 0) { in smb_oplock_req_excl()
608 if ((node->n_oplock.ol_state & LEVEL_TWO) != 0 && in smb_oplock_req_excl()
657 if ((node->n_oplock.ol_state & LEVEL_TWO) != 0) { in smb_oplock_req_excl()
658 FOREACH_NODE_OFILE(node, o) { in smb_oplock_req_excl()
662 node->n_oplock.cnt_II--; in smb_oplock_req_excl()
663 ASSERT(node->n_oplock.cnt_II >= 0); in smb_oplock_req_excl()
690 if ((node->n_oplock.ol_state & NO_OPLOCK) != 0) { in smb_oplock_req_excl()
691 FOREACH_NODE_OFILE(node, o) { in smb_oplock_req_excl()
708 if (((node->flags & NODE_FLAGS_DELETING) != 0) && in smb_oplock_req_excl()
724 else if ((node->n_oplock.ol_state & CACHE_RWH) != 0 && in smb_oplock_req_excl()
725 (node->n_oplock.ol_state & BREAK_ANY) == 0 && in smb_oplock_req_excl()
726 node->n_oplock.cnt_RHBQ == 0) { in smb_oplock_req_excl()
750 switch (node->n_oplock.ol_state) { in smb_oplock_req_excl()
774 FOREACH_NODE_OFILE(node, o) { in smb_oplock_req_excl()
803 FOREACH_NODE_OFILE(node, o) { in smb_oplock_req_excl()
807 node->n_oplock.cnt_R--; in smb_oplock_req_excl()
808 ASSERT(node->n_oplock.cnt_R >= 0); in smb_oplock_req_excl()
843 FOREACH_NODE_OFILE(node, o) { in smb_oplock_req_excl()
872 FOREACH_NODE_OFILE(node, o) { in smb_oplock_req_excl()
876 node->n_oplock.cnt_RH--; in smb_oplock_req_excl()
877 ASSERT(node->n_oplock.cnt_RH >= 0); in smb_oplock_req_excl()
915 o = node->n_oplock.excl_open; in smb_oplock_req_excl()
956 node->n_oplock.excl_open = o = NULL; in smb_oplock_req_excl()
986 node->n_oplock.excl_open = ofile; in smb_oplock_req_excl()
987 node->n_oplock.ol_state = *rop | EXCLUSIVE; in smb_oplock_req_excl()
1013 if (node->n_oplock.ol_fem == B_FALSE) { in smb_oplock_req_excl()
1014 if (smb_fem_oplock_install(node) != 0) { in smb_oplock_req_excl()
1018 node->n_oplock.ol_fem = B_TRUE; in smb_oplock_req_excl()
1064 smb_node_t *node = ofile->f_node; in smb_oplock_req_shared() local
1069 ASSERT(RW_READ_HELD(&node->n_ofile_list.ll_lock)); in smb_oplock_req_shared()
1070 ASSERT(MUTEX_HELD(&node->n_oplock.ol_mutex)); in smb_oplock_req_shared()
1073 FOREACH_NODE_OFILE(node, o) { in smb_oplock_req_shared()
1095 if (node->n_oplock.ol_state == 0) { in smb_oplock_req_shared()
1096 node->n_oplock.ol_state = NO_OPLOCK; in smb_oplock_req_shared()
1110 (node->n_oplock.ol_state & (BREAK_ANY | EXCLUSIVE)) != 0) { in smb_oplock_req_shared()
1128 switch (node->n_oplock.ol_state) { in smb_oplock_req_shared()
1147 switch (node->n_oplock.ol_state) { in smb_oplock_req_shared()
1183 FOREACH_NODE_OFILE(node, o) { in smb_oplock_req_shared()
1216 FOREACH_NODE_OFILE(node, o) { in smb_oplock_req_shared()
1221 node->n_oplock.cnt_R--; in smb_oplock_req_shared()
1222 ASSERT(node->n_oplock.cnt_R >= 0); in smb_oplock_req_shared()
1239 node->n_oplock.cnt_II++; in smb_oplock_req_shared()
1244 node->n_oplock.cnt_R++; in smb_oplock_req_shared()
1254 RecomputeOplockState(node); in smb_oplock_req_shared()
1264 switch (node->n_oplock.ol_state) { in smb_oplock_req_shared()
1284 if ((node->flags & NODE_FLAGS_DELETING) != 0) { in smb_oplock_req_shared()
1314 FOREACH_NODE_OFILE(node, o) { in smb_oplock_req_shared()
1319 node->n_oplock.cnt_R--; in smb_oplock_req_shared()
1320 ASSERT(node->n_oplock.cnt_R >= 0); in smb_oplock_req_shared()
1354 FOREACH_NODE_OFILE(node, o) { in smb_oplock_req_shared()
1359 node->n_oplock.cnt_RH--; in smb_oplock_req_shared()
1360 ASSERT(node->n_oplock.cnt_RH >= 0); in smb_oplock_req_shared()
1373 node->n_oplock.cnt_RH++; in smb_oplock_req_shared()
1382 RecomputeOplockState(node); in smb_oplock_req_shared()
1412 if ((node->n_oplock.ol_state & BREAK_ANY) != 0) { in smb_oplock_req_shared()
1422 if (node->n_oplock.ol_fem == B_FALSE) { in smb_oplock_req_shared()
1423 if (smb_fem_oplock_install(node) != 0) { in smb_oplock_req_shared()
1427 node->n_oplock.ol_fem = B_TRUE; in smb_oplock_req_shared()
1493 smb_node_t *node = ofile->f_node; in smb_oplock_ack_break() local
1503 ASSERT(RW_READ_HELD(&node->n_ofile_list.ll_lock)); in smb_oplock_ack_break()
1504 ASSERT(MUTEX_HELD(&node->n_oplock.ol_mutex)); in smb_oplock_ack_break()
1510 if (node->n_oplock.ol_state == 0) { in smb_oplock_ack_break()
1521 if (node->n_oplock.excl_open != ofile) { in smb_oplock_ack_break()
1533 (node->n_oplock.ol_state & BREAK_TO_TWO) != 0) { in smb_oplock_ack_break()
1534 node->n_oplock.ol_state = LEVEL_TWO; in smb_oplock_ack_break()
1543 else if ((node->n_oplock.ol_state & in smb_oplock_ack_break()
1545 node->n_oplock.ol_state = NO_OPLOCK; in smb_oplock_ack_break()
1554 else if ((node->n_oplock.ol_state & in smb_oplock_ack_break()
1556 node->n_oplock.ol_state = NO_OPLOCK; in smb_oplock_ack_break()
1579 if (node->n_oplock.waiters) in smb_oplock_ack_break()
1580 cv_broadcast(&node->n_oplock.WaitingOpenCV); in smb_oplock_ack_break()
1585 node->n_oplock.excl_open = NULL; in smb_oplock_ack_break()
1663 if ((node->n_oplock.ol_state & BREAK_LEVEL_MASK) == 0) { in smb_oplock_ack_break()
1664 if ((node->n_oplock.ol_state != R_AND_RH_GRANTED) && in smb_oplock_ack_break()
1665 (node->n_oplock.ol_state != RH_GRANTED)) { in smb_oplock_ack_break()
1670 if (node->n_oplock.cnt_RHBQ == 0) { in smb_oplock_ack_break()
1680 switch (node->n_oplock.ol_state & BREAK_LEVEL_MASK) { in smb_oplock_ack_break()
1711 switch (node->n_oplock.ol_state) { in smb_oplock_ack_break()
1764 if (level != 0 && node->n_oplock.waiters) { in smb_oplock_ack_break()
1794 if (node->n_oplock.waiters && in smb_oplock_ack_break()
1810 node->n_oplock.cnt_RHBQ--; in smb_oplock_ack_break()
1811 ASSERT(node->n_oplock.cnt_RHBQ >= 0); in smb_oplock_ack_break()
1838 FOREACH_NODE_OFILE(node, o) { in smb_oplock_ack_break()
1845 cv_broadcast(&node->n_oplock.WaitingOpenCV); in smb_oplock_ack_break()
1857 RecomputeOplockState(node); in smb_oplock_ack_break()
1901 node->n_oplock.excl_open = ofile; in smb_oplock_ack_break()
1902 node->n_oplock.ol_state = level | EXCLUSIVE; in smb_oplock_ack_break()
1928 if (node->n_oplock.excl_open != ofile) { in smb_oplock_ack_break()
1948 if (node->n_oplock.waiters && in smb_oplock_ack_break()
1949 (node->n_oplock.ol_state & HANDLE_CACHING) == 0 && in smb_oplock_ack_break()
1962 else if (((node->flags & NODE_FLAGS_DELETING) != 0) && in smb_oplock_ack_break()
1999 cv_broadcast(&node->n_oplock.WaitingOpenCV); in smb_oplock_ack_break()
2007 node->n_oplock.excl_open = NULL; in smb_oplock_ack_break()
2017 node->n_oplock.ol_state = NO_OPLOCK; in smb_oplock_ack_break()
2042 node->n_oplock.ol_state = NO_OPLOCK; in smb_oplock_ack_break()
2072 node->n_oplock.cnt_RHBQ++; in smb_oplock_ack_break()
2074 RecomputeOplockState(node); in smb_oplock_ack_break()
2117 ASSERT(node->n_oplock.excl_open == ofile); in smb_oplock_ack_break()
2118 node->n_oplock.ol_state = level | EXCLUSIVE; in smb_oplock_ack_break()
2145 if (node->n_oplock.ol_state == NO_OPLOCK && in smb_oplock_ack_break()
2146 node->n_oplock.ol_fem == B_TRUE) { in smb_oplock_ack_break()
2147 smb_fem_oplock_uninstall(node); in smb_oplock_ack_break()
2148 node->n_oplock.ol_fem = B_FALSE; in smb_oplock_ack_break()
2243 smb_oplock_break_PARENT(smb_node_t *node, smb_ofile_t *ofile) in smb_oplock_break_PARENT() argument
2258 return (smb_oplock_break_cmn(node, ofile, BreakCacheLevel)); in smb_oplock_break_PARENT()
2278 smb_oplock_break_BATCH(smb_node_t *node, smb_ofile_t *ofile, in smb_oplock_break_BATCH() argument
2281 if ((node->n_oplock.ol_state & BATCH_OPLOCK) == 0) in smb_oplock_break_BATCH()
2284 return (smb_oplock_break_OPEN(node, ofile, in smb_oplock_break_BATCH()
2297 smb_oplock_break_OPEN(smb_node_t *node, smb_ofile_t *ofile, in smb_oplock_break_OPEN() argument
2336 return (smb_oplock_break_cmn(node, ofile, BreakCacheLevel)); in smb_oplock_break_OPEN()
2345 smb_oplock_break_HANDLE(smb_node_t *node, smb_ofile_t *ofile) in smb_oplock_break_HANDLE() argument
2349 return (smb_oplock_break_cmn(node, ofile, BreakCacheLevel)); in smb_oplock_break_HANDLE()
2365 smb_oplock_break_CLOSE(smb_node_t *node, smb_ofile_t *ofile) in smb_oplock_break_CLOSE() argument
2369 ASSERT(RW_READ_HELD(&node->n_ofile_list.ll_lock)); in smb_oplock_break_CLOSE()
2370 ASSERT(MUTEX_HELD(&node->n_oplock.ol_mutex)); in smb_oplock_break_CLOSE()
2373 FOREACH_NODE_OFILE(node, o) { in smb_oplock_break_CLOSE()
2399 if (node->n_oplock.cnt_II > 0) { in smb_oplock_break_CLOSE()
2403 node->n_oplock.cnt_II--; in smb_oplock_break_CLOSE()
2404 ASSERT(node->n_oplock.cnt_II >= 0); in smb_oplock_break_CLOSE()
2420 RecomputeOplockState(node); in smb_oplock_break_CLOSE()
2445 if (node->n_oplock.cnt_R > 0) { in smb_oplock_break_CLOSE()
2449 node->n_oplock.cnt_R--; in smb_oplock_break_CLOSE()
2450 ASSERT(node->n_oplock.cnt_R >= 0); in smb_oplock_break_CLOSE()
2456 RecomputeOplockState(node); in smb_oplock_break_CLOSE()
2481 if (node->n_oplock.cnt_RH > 0) { in smb_oplock_break_CLOSE()
2485 node->n_oplock.cnt_RH--; in smb_oplock_break_CLOSE()
2486 ASSERT(node->n_oplock.cnt_RH >= 0); in smb_oplock_break_CLOSE()
2492 RecomputeOplockState(node); in smb_oplock_break_CLOSE()
2519 if (node->n_oplock.cnt_RHBQ > 0) { in smb_oplock_break_CLOSE()
2523 node->n_oplock.cnt_RHBQ--; in smb_oplock_break_CLOSE()
2524 ASSERT(node->n_oplock.cnt_RHBQ >= 0); in smb_oplock_break_CLOSE()
2526 RecomputeOplockState(node); in smb_oplock_break_CLOSE()
2532 cv_broadcast(&node->n_oplock.WaitingOpenCV); in smb_oplock_break_CLOSE()
2569 if (ofile == node->n_oplock.excl_open) { in smb_oplock_break_CLOSE()
2570 uint32_t level = node->n_oplock.ol_state & CACHE_RWH; in smb_oplock_break_CLOSE()
2572 (node->n_oplock.ol_state & BREAK_ANY) == 0) { in smb_oplock_break_CLOSE()
2577 node->n_oplock.excl_open = NULL; in smb_oplock_break_CLOSE()
2578 node->n_oplock.ol_state = NO_OPLOCK; in smb_oplock_break_CLOSE()
2579 cv_broadcast(&node->n_oplock.WaitingOpenCV); in smb_oplock_break_CLOSE()
2591 if ((node->n_oplock.ol_state & BREAK_ANY) == 0) in smb_oplock_break_CLOSE()
2592 cv_broadcast(&node->n_oplock.WaitingOpenCV); in smb_oplock_break_CLOSE()
2597 if (node->n_oplock.ol_state == NO_OPLOCK && in smb_oplock_break_CLOSE()
2598 node->n_oplock.ol_fem == B_TRUE) { in smb_oplock_break_CLOSE()
2599 smb_fem_oplock_uninstall(node); in smb_oplock_break_CLOSE()
2600 node->n_oplock.ol_fem = B_FALSE; in smb_oplock_break_CLOSE()
2611 smb_oplock_break_READ(smb_node_t *node, smb_ofile_t *ofile) in smb_oplock_break_READ() argument
2615 return (smb_oplock_break_cmn(node, ofile, BreakCacheLevel)); in smb_oplock_break_READ()
2636 smb_oplock_break_WRITE(smb_node_t *node, smb_ofile_t *ofile) in smb_oplock_break_WRITE() argument
2641 return (smb_oplock_break_cmn(node, ofile, BreakCacheLevel)); in smb_oplock_break_WRITE()
2666 smb_oplock_break_SETINFO(smb_node_t *node, smb_ofile_t *ofile, in smb_oplock_break_SETINFO() argument
2682 if (node->n_oplock.ol_state & BATCH_OPLOCK) { in smb_oplock_break_SETINFO()
2693 return (smb_oplock_break_cmn(node, ofile, BreakCacheLevel)); in smb_oplock_break_SETINFO()
2705 smb_oplock_break_DELETE(smb_node_t *node, smb_ofile_t *ofile) in smb_oplock_break_DELETE() argument
2709 if ((node->n_oplock.ol_state & BATCH_OPLOCK) != 0) in smb_oplock_break_DELETE()
2712 return (smb_oplock_break_cmn(node, ofile, BreakCacheLevel)); in smb_oplock_break_DELETE()
2730 smb_oplock_break_cmn(smb_node_t *node, in smb_oplock_break_cmn() argument
2733 smb_oplock_t *nol = &node->n_oplock; in smb_oplock_break_cmn()
2745 smb_llist_enter(&node->n_ofile_list, RW_READER); in smb_oplock_break_cmn()
2746 mutex_enter(&node->n_oplock.ol_mutex); in smb_oplock_break_cmn()
2749 FOREACH_NODE_OFILE(node, o) { in smb_oplock_break_cmn()
2754 if (node->n_oplock.ol_state == 0 || in smb_oplock_break_cmn()
2755 node->n_oplock.ol_state == NO_OPLOCK) in smb_oplock_break_cmn()
2923 FOREACH_NODE_OFILE(node, o) { in smb_oplock_break_cmn()
3046 FOREACH_NODE_OFILE(node, o) { in smb_oplock_break_cmn()
3074 RecomputeOplockState(node); in smb_oplock_break_cmn()
3090 FOREACH_NODE_OFILE(node, o) { in smb_oplock_break_cmn()
3162 FOREACH_NODE_OFILE(node, o) { in smb_oplock_break_cmn()
3205 FOREACH_NODE_OFILE(node, o) { in smb_oplock_break_cmn()
3251 FOREACH_NODE_OFILE(node, o) { in smb_oplock_break_cmn()
3260 RecomputeOplockState(node); in smb_oplock_break_cmn()
3283 FOREACH_NODE_OFILE(node, o) { in smb_oplock_break_cmn()
3290 RecomputeOplockState(node); in smb_oplock_break_cmn()
3306 FOREACH_NODE_OFILE(node, o) { in smb_oplock_break_cmn()
3606 mutex_exit(&node->n_oplock.ol_mutex); in smb_oplock_break_cmn()
3607 smb_llist_exit(&node->n_ofile_list); in smb_oplock_break_cmn()
3629 smb_oplock_move(smb_node_t *node, in smb_oplock_move() argument
3642 ASSERT(fr_ofile->f_node == node); in smb_oplock_move()
3643 ASSERT(to_ofile->f_node == node); in smb_oplock_move()
3644 ASSERT(MUTEX_HELD(&node->n_oplock.ol_mutex)); in smb_oplock_move()
3659 smb_node_t *, node, smb_ofile_t *, to_ofile); in smb_oplock_move()
3666 if (node->n_oplock.excl_open == fr_ofile) in smb_oplock_move()
3667 node->n_oplock.excl_open = to_ofile; in smb_oplock_move()