Lines Matching refs:shr
60 add_share(struct vnode *vp, struct shrlock *shr) in add_share() argument
70 if ((shr->s_access == 0) && (GETSYSID(shr->s_sysid) == 0)) { in add_share()
78 if (shr->s_access & ~(F_RDACC|F_WRACC|F_RWACC|F_RMACC|F_MDACC)) { in add_share()
81 if (shr->s_deny & ~(F_NODNY|F_RDDNY|F_WRDNY|F_RWDNY|F_COMPAT| in add_share()
92 if ((shrl->shr->s_sysid == shr->s_sysid) && in add_share()
93 (shrl->shr->s_pid == shr->s_pid) && in add_share()
94 (shrl->shr->s_own_len == shr->s_own_len) && in add_share()
95 bcmp(shrl->shr->s_owner, shr->s_owner, in add_share()
96 shr->s_own_len) == 0) { in add_share()
105 if ((shrl->shr->s_deny & F_COMPAT) && in add_share()
106 (shr->s_deny & F_COMPAT) && in add_share()
108 (shrl->shr->s_access & F_WRACC))) in add_share()
116 if ((shrl->shr->s_deny & F_COMPAT) && (shrl->next == NULL)) { in add_share()
118 if (!(shr->s_deny & F_COMPAT)) { in add_share()
124 if ((shr->s_access & F_WRACC) || in add_share()
125 (shr->s_deny & F_RDDNY) || in add_share()
126 (shrl->shr->s_access & F_WRACC)) { in add_share()
146 if ((shr->s_access == F_RDACC) && in add_share()
147 (shrl->shr->s_access == F_RDACC)) in add_share()
158 if ((shrl->shr->s_deny & F_COMPAT) && (shr->s_deny & F_COMPAT)) in add_share()
164 if (shr->s_deny & F_COMPAT) { in add_share()
170 if ((shr->s_access & F_WRACC) || in add_share()
171 (shrl->shr->s_deny & F_RDDNY) || in add_share()
172 (shrl->shr->s_access & F_WRACC)) { in add_share()
181 if ((shrl->shr->s_access == F_RDACC) && in add_share()
199 if ((shr->s_access & shrl->shr->s_deny) || in add_share()
200 (shr->s_deny & shrl->shr->s_access)) { in add_share()
207 shrl->shr = kmem_alloc(sizeof (struct shrlock), KM_SLEEP); in add_share()
208 shrl->shr->s_access = shr->s_access; in add_share()
209 shrl->shr->s_deny = shr->s_deny; in add_share()
214 if (shrl->shr->s_deny & F_COMPAT) in add_share()
215 shrl->shr->s_deny = F_COMPAT; in add_share()
216 shrl->shr->s_sysid = shr->s_sysid; /* XXX ref cnt? */ in add_share()
217 shrl->shr->s_pid = shr->s_pid; in add_share()
218 shrl->shr->s_own_len = shr->s_own_len; in add_share()
219 shrl->shr->s_owner = kmem_alloc(shr->s_own_len, KM_SLEEP); in add_share()
220 bcopy(shr->s_owner, shrl->shr->s_owner, shr->s_own_len); in add_share()
246 is_match_for_del(struct shrlock *shr, struct shrlock *element) in is_match_for_del() argument
251 nlmid1 = GETNLMID(shr->s_sysid); in is_match_for_del()
255 if (GETSYSID(shr->s_sysid) != 0 && shr->s_pid == 0) { in is_match_for_del()
260 result = shr->s_sysid == element->s_sysid; in is_match_for_del()
261 } else if (GETSYSID(shr->s_sysid) == 0 && shr->s_pid == 0) { in is_match_for_del()
267 } else if (GETSYSID(shr->s_sysid) == 0 && shr->s_pid != 0) { in is_match_for_del()
273 shr->s_pid == element->s_pid); in is_match_for_del()
276 result = ((shr->s_sysid == 0 && in is_match_for_del()
277 shr->s_pid == element->s_pid) || in is_match_for_del()
278 (shr->s_sysid != 0 && in is_match_for_del()
279 shr->s_sysid == element->s_sysid)); in is_match_for_del()
292 del_share(struct vnode *vp, struct shrlock *shr) in del_share() argument
307 if ((shr->s_own_len == (*shrlp)->shr->s_own_len && in del_share()
308 (bcmp(shr->s_owner, (*shrlp)->shr->s_owner, in del_share()
309 shr->s_own_len) == 0)) || in del_share()
311 (shr->s_own_len == 0 && in del_share()
312 is_match_for_del(shr, (*shrlp)->shr))) { in del_share()
317 if (shrl->shr->s_deny & F_MANDDNY) in del_share()
321 kmem_free(shrl->shr->s_owner, shrl->shr->s_own_len); in del_share()
322 kmem_free(shrl->shr, sizeof (struct shrlock)); in del_share()
370 struct shrlock shr; in do_cleanshares() local
375 shr.s_access = 0; in do_cleanshares()
376 shr.s_deny = 0; in do_cleanshares()
377 shr.s_pid = pid; in do_cleanshares()
378 shr.s_sysid = sysid; in do_cleanshares()
379 shr.s_own_len = 0; in do_cleanshares()
380 shr.s_owner = NULL; in do_cleanshares()
382 (void) del_share(vp, &shr); in do_cleanshares()
431 if (is_match_for_has_remote(sysid, shrl->shr->s_sysid)) { in shr_has_remote_shares()
462 print_share(shrl->shr); in print_shares()
468 print_share(struct shrlock *shr) in print_share() argument
472 if (shr == NULL) { in print_share()
477 printf(" access(%d): ", shr->s_access); in print_share()
478 if (shr->s_access & F_RDACC) in print_share()
480 if (shr->s_access & F_WRACC) in print_share()
482 if ((shr->s_access & (F_RDACC|F_WRACC)) == 0) in print_share()
486 if (shr->s_deny & F_COMPAT) in print_share()
488 if (shr->s_deny & F_RDDNY) in print_share()
490 if (shr->s_deny & F_WRDNY) in print_share()
492 if (shr->s_deny == F_NODNY) in print_share()
495 printf(" sysid: %d\n", shr->s_sysid); in print_share()
496 printf(" pid: %d\n", shr->s_pid); in print_share()
497 printf(" owner: [%d]", shr->s_own_len); in print_share()
499 for (i = 0; i < shr->s_own_len; i++) in print_share()
500 printf("%02x", (unsigned)shr->s_owner[i]); in print_share()
571 if (!(shrl->shr->s_deny & F_MANDDNY)) in nbl_share_conflict()
583 if ((shrl->shr->s_deny & F_RDDNY) && in nbl_share_conflict()
584 (shrl->shr->s_sysid != sysid || in nbl_share_conflict()
585 shrl->shr->s_pid != pid)) in nbl_share_conflict()
589 if ((shrl->shr->s_deny & F_WRDNY) && in nbl_share_conflict()
590 (shrl->shr->s_sysid != sysid || in nbl_share_conflict()
591 shrl->shr->s_pid != pid)) in nbl_share_conflict()
595 if ((shrl->shr->s_deny & F_RWDNY) && in nbl_share_conflict()
596 (shrl->shr->s_sysid != sysid || in nbl_share_conflict()
597 shrl->shr->s_pid != pid)) in nbl_share_conflict()
601 if (shrl->shr->s_access & (F_RWACC|F_RMACC)) in nbl_share_conflict()
605 if (shrl->shr->s_access & (F_WRACC|F_RMACC)) in nbl_share_conflict()
608 else if ((shrl->shr->s_access & F_RDACC) && in nbl_share_conflict()
609 (shrl->shr->s_deny & F_RMDNY)) in nbl_share_conflict()
643 if (shrl->shr->s_sysid == 0 && in proc_has_nbmand_share_on_vp()
644 (shrl->shr->s_deny & F_MANDDNY) && in proc_has_nbmand_share_on_vp()
645 (shrl->shr->s_pid == pid)) { in proc_has_nbmand_share_on_vp()