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()
129 struct shrlock *, shrl->shr); in add_share()
141 struct shrlock *, shrl->shr); in add_share()
150 if ((shr->s_access == F_RDACC) && in add_share()
151 (shrl->shr->s_access == F_RDACC)) in add_share()
155 struct shrlock *, shrl->shr); in add_share()
164 if ((shrl->shr->s_deny & F_COMPAT) && (shr->s_deny & F_COMPAT)) in add_share()
170 if (shr->s_deny & F_COMPAT) { in add_share()
176 if ((shr->s_access & F_WRACC) || in add_share()
177 (shrl->shr->s_deny & F_RDDNY) || in add_share()
178 (shrl->shr->s_access & F_WRACC)) { in add_share()
181 struct shrlock *, shrl->shr); in add_share()
189 if ((shrl->shr->s_access == F_RDACC) && in add_share()
195 struct shrlock *, shrl->shr); in add_share()
209 if ((shr->s_access & shrl->shr->s_deny) || in add_share()
210 (shr->s_deny & shrl->shr->s_access)) { in add_share()
213 struct shrlock *, shrl->shr); in add_share()
219 shrl->shr = kmem_alloc(sizeof (struct shrlock), KM_SLEEP); in add_share()
220 shrl->shr->s_access = shr->s_access; in add_share()
221 shrl->shr->s_deny = shr->s_deny; in add_share()
226 if (shrl->shr->s_deny & F_COMPAT) in add_share()
227 shrl->shr->s_deny = F_COMPAT; in add_share()
228 shrl->shr->s_sysid = shr->s_sysid; /* XXX ref cnt? */ in add_share()
229 shrl->shr->s_pid = shr->s_pid; in add_share()
230 shrl->shr->s_own_len = shr->s_own_len; in add_share()
231 shrl->shr->s_owner = kmem_alloc(shr->s_own_len, KM_SLEEP); in add_share()
232 bcopy(shr->s_owner, shrl->shr->s_owner, shr->s_own_len); in add_share()
258 is_match_for_del(struct shrlock *shr, struct shrlock *element) in is_match_for_del() argument
263 nlmid1 = GETNLMID(shr->s_sysid); in is_match_for_del()
267 if (GETSYSID(shr->s_sysid) != 0 && shr->s_pid == 0) { in is_match_for_del()
272 result = shr->s_sysid == element->s_sysid; in is_match_for_del()
273 } else if (GETSYSID(shr->s_sysid) == 0 && shr->s_pid == 0) { in is_match_for_del()
279 } else if (GETSYSID(shr->s_sysid) == 0 && shr->s_pid != 0) { in is_match_for_del()
285 shr->s_pid == element->s_pid); in is_match_for_del()
288 result = ((shr->s_sysid == 0 && in is_match_for_del()
289 shr->s_pid == element->s_pid) || in is_match_for_del()
290 (shr->s_sysid != 0 && in is_match_for_del()
291 shr->s_sysid == element->s_sysid)); in is_match_for_del()
304 del_share(struct vnode *vp, struct shrlock *shr) in del_share() argument
319 if ((shr->s_own_len == (*shrlp)->shr->s_own_len && in del_share()
320 (bcmp(shr->s_owner, (*shrlp)->shr->s_owner, in del_share()
321 shr->s_own_len) == 0)) || in del_share()
323 (shr->s_own_len == 0 && in del_share()
324 is_match_for_del(shr, (*shrlp)->shr))) { in del_share()
329 if (shrl->shr->s_deny & F_MANDDNY) in del_share()
333 kmem_free(shrl->shr->s_owner, shrl->shr->s_own_len); in del_share()
334 kmem_free(shrl->shr, sizeof (struct shrlock)); in del_share()
382 struct shrlock shr; in do_cleanshares() local
387 shr.s_access = 0; in do_cleanshares()
388 shr.s_deny = 0; in do_cleanshares()
389 shr.s_pid = pid; in do_cleanshares()
390 shr.s_sysid = sysid; in do_cleanshares()
391 shr.s_own_len = 0; in do_cleanshares()
392 shr.s_owner = NULL; in do_cleanshares()
394 (void) del_share(vp, &shr); in do_cleanshares()
443 if (is_match_for_has_remote(sysid, shrl->shr->s_sysid)) { in shr_has_remote_shares()
474 print_share(shrl->shr); in print_shares()
480 print_share(struct shrlock *shr) in print_share() argument
484 if (shr == NULL) { in print_share()
489 printf(" access(%d): ", shr->s_access); in print_share()
490 if (shr->s_access & F_RDACC) in print_share()
492 if (shr->s_access & F_WRACC) in print_share()
494 if ((shr->s_access & (F_RDACC|F_WRACC)) == 0) in print_share()
498 if (shr->s_deny & F_COMPAT) in print_share()
500 if (shr->s_deny & F_RDDNY) in print_share()
502 if (shr->s_deny & F_WRDNY) in print_share()
504 if (shr->s_deny == F_NODNY) in print_share()
507 printf(" sysid: %d\n", shr->s_sysid); in print_share()
508 printf(" pid: %d\n", shr->s_pid); in print_share()
509 printf(" owner: [%d]", shr->s_own_len); in print_share()
511 for (i = 0; i < shr->s_own_len; i++) in print_share()
512 printf("%02x", (unsigned)shr->s_owner[i]); in print_share()
580 if (!(shrl->shr->s_deny & F_MANDDNY)) in nbl_share_conflict()
586 if (shrl->shr->s_sysid == sysid && in nbl_share_conflict()
587 shrl->shr->s_pid == pid) in nbl_share_conflict()
600 if (shrl->shr->s_deny & F_RDDNY) in nbl_share_conflict()
604 if (shrl->shr->s_deny & F_WRDNY) in nbl_share_conflict()
608 if (shrl->shr->s_deny & F_RWDNY) in nbl_share_conflict()
613 if (shrl->shr->s_deny & F_RMDNY) in nbl_share_conflict()
626 struct shrlock *, shrl->shr); in nbl_share_conflict()
650 if (shrl->shr->s_sysid == 0 && in proc_has_nbmand_share_on_vp()
651 (shrl->shr->s_deny & F_MANDDNY) && in proc_has_nbmand_share_on_vp()
652 (shrl->shr->s_pid == pid)) { in proc_has_nbmand_share_on_vp()