Lines Matching defs:fid

406 /* Allocate a new fid from the fidpool */
410 struct p9_fid *fid;
413 fid = uma_zalloc(p9fs_fid_zone, M_WAITOK | M_ZERO);
414 fid->fid = alloc_unr(&clnt->fidpool);
415 P9_DEBUG(LPROTO, "%s: fid %d\n", __func__, fid->fid);
418 if (fid->fid == -1) {
419 uma_zfree(p9fs_fid_zone, fid);
422 fid->mode = -1;
423 fid->uid = -1;
424 fid->clnt = clnt;
426 return (fid);
429 /* Free the fid by releasing it to fidpool */
431 p9_fid_destroy(struct p9_fid *fid)
435 P9_DEBUG(LPROTO, "%s: fid %d\n", __func__, fid->fid);
436 clnt = fid->clnt;
438 free_unr(&clnt->fidpool, fid->fid);
439 uma_zfree(p9fs_fid_zone, fid);
512 /* Create the request and the fid zones */
513 p9fs_fid_zone = uma_zcreate("p9fs fid zone",
516 /* Create the request and the fid zones */
601 * Attach a user to the filesystem. Create a fid for that user to access
609 struct p9_fid *fid;
614 fid = p9_fid_create(clnt);
615 if (fid == NULL) {
619 fid->uid = n_uname;
621 req = p9_client_request(clnt, P9PROTO_TATTACH, error, "ddssd", fid->fid,
636 memmove(&fid->qid, &qid, sizeof(struct p9_qid));
639 return (fid);
643 if (fid != NULL)
644 p9_fid_destroy(fid);
649 /* Delete a file/directory. Corresponding fid will be cluncked too */
651 p9_client_remove(struct p9_fid *fid)
657 P9_DEBUG(PROTO, "TREMOVE fid %d\n", fid->fid);
660 clnt = fid->clnt;
662 req = p9_client_request(clnt, P9PROTO_TREMOVE, &error, "d", fid->fid);
664 P9_DEBUG(PROTO, "RREMOVE fid %d\n", fid->fid);
683 dfid->fid, name, flags);
685 P9_DEBUG(PROTO, "RUNLINKAT fid %d\n", dfid->fid);
693 /* Inform the file server that the current file represented by fid is no longer
694 * needed by the client. Any allocated fid on the server needs a clunk to be
698 p9_client_clunk(struct p9_fid *fid)
706 if (fid == NULL) {
707 P9_DEBUG(ERROR, "%s: clunk with NULL fid is bad\n", __func__);
711 P9_DEBUG(PROTO, "TCLUNK fid %d \n", fid->fid);
713 clnt = fid->clnt;
714 req = p9_client_request(clnt, P9PROTO_TCLUNK, &error, "d", fid->fid);
716 P9_DEBUG(PROTO, "RCLUNK fid %d\n", fid->fid);
720 p9_fid_destroy(fid);
726 * This is usually called on lookups. Also when we need a new open fid
727 * as 9p needs to have an open fid for every file to fileops, we call this
735 struct p9_fid *fid;
745 * Before, we go and create fid, make sure we are not tearing
755 fid = p9_fid_create(clnt);
756 if (fid == NULL) {
760 fid->uid = oldfid->uid;
762 fid = oldfid;
765 oldfid->fid, fid->fid, nwnames,
770 * qemu on other side allocates or returns a fid if it sees a match
772 req = p9_client_request(clnt, P9PROTO_TWALK, error, "ddT", oldfid->fid,
773 fid->fid, wnames, nwnames);
775 if (fid != oldfid)
776 p9_fid_destroy(fid);
799 memmove(&fid->qid, &wqids[nwqids - 1], sizeof(struct p9_qid));
801 fid->qid = oldfid->qid;
805 return (fid);
811 if (fid && fid != oldfid)
812 p9_client_clunk(fid);
816 /* Open a file with given fid and mode */
818 p9_client_open(struct p9_fid *fid, int mode)
825 clnt = fid->clnt;
828 P9_DEBUG(PROTO, "%s fid %d mode %d\n",
830 fid->fid, mode);
832 if (fid->mode != -1)
837 fid->fid, mode);
840 fid->fid, mode);
845 error = p9_buf_readf(req->rc, clnt->proto_version, "Qd", &fid->qid,
852 (fid->qid).type, (unsigned long long)(fid->qid).path,
853 (fid->qid).version, mtu);
855 fid->mode = mode;
856 fid->mtu = mtu;
864 p9_client_readdir(struct p9_fid *fid, char *data, uint64_t offset,
873 P9_DEBUG(PROTO, "TREADDIR fid %d offset %llu count %d\n",
874 fid->fid, (unsigned long long) offset, count);
877 rsize = fid->mtu;
878 clnt = fid->clnt;
887 fid->fid, offset, rsize);
913 * Read count bytes from offset for the file fid into the character
920 p9_client_read(struct p9_fid *fid, uint64_t offset, uint32_t count, char *data)
927 clnt = fid->clnt;
928 rsize = fid->mtu;
931 P9_DEBUG(PROTO, "TREAD fid %d offset %llu %u\n",
932 fid->fid, (unsigned long long) offset, count);
941 req = p9_client_request(clnt, P9PROTO_TREAD, &error, "dqd", fid->fid,
979 * Write count bytes from buffer to the offset for the file fid
986 p9_client_write(struct p9_fid *fid, uint64_t offset, uint32_t count, char *data)
992 clnt = fid->clnt;
993 rsize = fid->mtu;
997 P9_DEBUG(PROTO, "TWRITE fid %d offset %llu %u\n",
998 fid->fid, (unsigned long long) offset, count);
1012 req = p9_client_request(clnt, P9PROTO_TWRITE, &error, "dqD", fid->fid,
1047 /* Create file under directory fid, with name, permissions, mode. */
1049 p9_client_file_create(struct p9_fid *fid, char *name, uint32_t perm, int mode,
1058 P9_DEBUG(PROTO, "TCREATE fid %d name %s perm %d mode %d\n",
1059 fid->fid, name, perm, mode);
1061 clnt = fid->clnt;
1064 if (fid->mode != -1)
1068 fid->fid, name, perm, mode, extension);
1078 fid->mode = mode;
1079 fid->mtu = mtu;
1088 p9_client_statfs(struct p9_fid *fid, struct p9_statfs *stat)
1095 clnt = fid->clnt;
1097 P9_DEBUG(PROTO, "TSTATFS fid %d\n", fid->fid);
1099 req = p9_client_request(clnt, P9PROTO_TSTATFS, &error, "d", fid->fid);
1112 P9_DEBUG(PROTO, "RSTATFS fid %d type 0x%jx bsize %ju "
1115 fid->fid, (uintmax_t)stat->type,
1126 /* Rename file referenced by the fid */
1136 oldfid->fid, oldname, newfid->fid, newname);
1147 oldfid->fid, oldname, newfid->fid, newname);
1158 p9_create_symlink(struct p9_fid *fid, char *name, char *symtgt, gid_t gid)
1166 clnt = fid->clnt;
1168 P9_DEBUG(PROTO, "TSYMLINK fid %d name %s\n", fid->fid, name);
1171 fid->fid, name, symtgt, gid);
1201 dfid->fid, oldfid->fid, name);
1203 req = p9_client_request(clnt, P9PROTO_TLINK, &error, "dds", dfid->fid,
1204 oldfid->fid, name);
1214 p9_readlink(struct p9_fid *fid, char **target)
1221 clnt = fid->clnt;
1223 P9_DEBUG(PROTO, "TREADLINK fid %d\n", fid->fid);
1225 req = p9_client_request(clnt, P9PROTO_TREADLINK, &error, "d", fid->fid);
1241 /* Get file attributes of the file referenced by the fid */
1243 p9_client_getattr(struct p9_fid *fid, struct p9_stat_dotl *stat_dotl,
1252 P9_DEBUG(PROTO, "TGETATTR fid %d mask %ju\n",
1253 fid->fid, (uintmax_t)request_mask);
1255 clnt = fid->clnt;
1256 req = p9_client_request(clnt, P9PROTO_TGETATTR, &err, "dq", fid->fid,
1270 P9_DEBUG(PROTO, "RGETATTR fid %d qid %x.%jx.%x st_mode %8.8x "
1275 "st_stat %ju, st_data_version %ju \n", fid->fid,
1297 /* Set file attributes of the file referenced by the fid */
1299 p9_client_setattr(struct p9_fid *fid, struct p9_iattr_dotl *p9attr)
1307 P9_DEBUG(PROTO, "TSETATTR fid %d"
1311 fid->fid,
1317 clnt = fid->clnt;
1320 req = p9_client_request(clnt, P9PROTO_TSETATTR, &err, "dA", fid->fid,