Lines Matching defs:shr

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