Lines Matching defs:psn
47 struct psshfs_node *psn, *psn_dir = pn_dir->pn_data;
54 psn = psn_dir->parent->pn_data;
55 psn->stat &= ~PSN_RECLAIMED;
82 psn = pn->pn_data;
83 psn->attrread = time(NULL);
104 psn = pn->pn_data;
107 psn->stat &= ~PSN_RECLAIMED;
142 struct psshfs_node *psn = pn->pn_data;
153 if (!psn->attrread || REFRESHTIMEOUT(pctx, time(NULL)-psn->attrread))
214 psn->attrread = time(NULL);
293 struct psshfs_node *psn = pn->pn_data;
304 if (mode & FREAD && psn->fhand_r == NULL && psn->lazyopen_r == NULL) {
313 lazyopen_rresp, psn, 0) == -1) {
319 psn->lazyopen_r = pb;
322 if (mode & FWRITE && psn->fhand_w == NULL && psn->lazyopen_w == NULL) {
331 lazyopen_wresp, psn, 0) == -1) {
337 psn->lazyopen_w = pb2;
340 psn->stat &= ~PSN_HANDLECLOSE;
344 if (didread && (psn->stat & PSN_DOLAZY_R) == 0) {
345 assert(psn->lazyopen_r);
347 rv = puffs_framev_framebuf_ccpromote(psn->lazyopen_r, pcc);
348 lazyopen_rresp(pu, psn->lazyopen_r, psn, rv);
349 if (psn->fhand_r) {
350 psn->stat |= PSN_DOLAZY_R;
352 if (psn->lazyopen_err_r)
353 return psn->lazyopen_err_r;
359 if (didwrite && (psn->stat & PSN_DOLAZY_W) == 0) {
360 assert(psn->lazyopen_w);
362 rv = puffs_framev_framebuf_ccpromote(psn->lazyopen_w, pcc);
363 lazyopen_wresp(pu, psn->lazyopen_w, psn, rv);
364 if (psn->fhand_w) {
365 psn->stat |= PSN_DOLAZY_W;
367 if (psn->lazyopen_err_w)
368 return psn->lazyopen_err_w;
394 struct psshfs_node *psn = pn->pn_data;
400 if (psn->stat & PSN_READDIR) {
406 TAILQ_INSERT_TAIL(&psn->pw, &pw, pw_entries);
410 psn->stat |= PSN_READDIR;
422 if (i >= psn->dentnext)
424 pd = &psn->dir[i];
439 if (++i >= psn->dentnext)
441 pd = &psn->dir[i];
448 if (i >= psn->dentnext)
458 TAILQ_FOREACH(pw, &psn->pw, pw_entries) {
461 TAILQ_REMOVE(&psn->pw, pw, pw_entries);
464 psn->stat &= ~PSN_READDIR;
477 struct psshfs_node *psn = pn->pn_data;
487 if (!psn->fhand_r && !psn->lazyopen_r) {
488 rv = psn->lazyopen_err_r;
493 if (psn->stat & PSN_LAZYWAIT_R) {
496 assert(psn->lazyopen_r);
500 TAILQ_INSERT_TAIL(&psn->pw, &pw, pw_entries);
505 if (psn->lazyopen_r) {
506 psn->stat |= PSN_LAZYWAIT_R;
507 rv = puffs_framev_framebuf_ccpromote(psn->lazyopen_r, pcc);
508 lazyopen_rresp(pu, psn->lazyopen_r, psn, rv);
511 TAILQ_FOREACH(pwp, &psn->pw, pw_entries)
514 TAILQ_REMOVE(&psn->pw, pwp, pw_entries);
516 psn->stat &= ~PSN_LAZYWAIT_R;
518 if ((rv = psn->lazyopen_err_r) != 0)
523 if (!psn->fhand_r) {
530 psbuf_req_data(pb, SSH_FXP_READ, reqid, psn->fhand_r, psn->fhand_r_len);
538 if (max_reads && ++psn->readcount > max_reads) {
543 TAILQ_INSERT_TAIL(&psn->pw, &pw, pw_entries);
557 if (max_reads && --psn->readcount >= max_reads) {
558 TAILQ_FOREACH(pwp, &psn->pw, pw_entries)
563 TAILQ_REMOVE(&psn->pw, pwp, pw_entries);
574 if (psn->stat & PSN_HANDLECLOSE && psn->fhand_r) {
575 TAILQ_FOREACH(pwp, &psn->pw, pw_entries)
579 closehandles(pu, psn, HANDLE_READ);
593 struct psshfs_node *psn = pn->pn_data;
602 if (!psn->fhand_w && !psn->lazyopen_w) {
603 rv = psn->lazyopen_err_w;
607 if (psn->stat & PSN_LAZYWAIT_W) {
610 assert(psn->lazyopen_w);
614 TAILQ_INSERT_TAIL(&psn->pw, &pw, pw_entries);
623 if (psn->lazyopen_w) {
624 psn->stat |= PSN_LAZYWAIT_W;
625 rv = puffs_framev_framebuf_ccpromote(psn->lazyopen_w, pcc);
626 lazyopen_wresp(pu, psn->lazyopen_w, psn, rv);
629 TAILQ_FOREACH(pwp, &psn->pw, pw_entries)
632 TAILQ_REMOVE(&psn->pw, pwp, pw_entries);
634 psn->stat &= ~PSN_LAZYWAIT_W;
636 if ((rv = psn->lazyopen_err_w) != 0)
640 if (!psn->fhand_w) {
647 psbuf_req_data(pb, SSH_FXP_WRITE, reqid, psn->fhand_w,psn->fhand_w_len);
661 if (psn->stat & PSN_HANDLECLOSE && psn->fhand_w) {
662 TAILQ_FOREACH(pwp, &psn->pw, pw_entries)
666 closehandles(pu, psn, HANDLE_WRITE);
677 struct psshfs_node *psn = pn->pn_data;
692 if (psn->symlink && !REFRESHTIMEOUT(pctx, time(NULL) - psn->slread))
695 if (psn->symlink) {
696 free(psn->symlink);
697 psn->symlink = NULL;
698 psn->slread = 0;
712 rv = psbuf_get_str(pb, &psn->symlink, NULL);
715 psn->slread = time(NULL);
718 *linklen = strlen(psn->symlink);
719 (void) memcpy(linkvalue, psn->symlink, *linklen);
928 struct psshfs_node *psn = pn->pn_data;
934 if (psn->stat & PSN_HASFH)
937 psn->stat |= PSN_RECLAIMED;
940 psn = pn->pn_data;
941 if ((psn->stat & PSN_RECLAIMED) == 0 || psn->childcount != 0)
944 pn_next = psn->parent;