Lines Matching +full:vp +full:- +full:p
1 // SPDX-License-Identifier: GPL-2.0-or-later
24 fid->vid = xdr_to_u64(x->volume); in xdr_decode_YFSFid()
25 fid->vnode = xdr_to_u64(x->vnode.lo); in xdr_decode_YFSFid()
26 fid->vnode_hi = ntohl(x->vnode.hi); in xdr_decode_YFSFid()
27 fid->unique = ntohl(x->vnode.unique); in xdr_decode_YFSFid()
49 x->volume = u64_to_xdr(fid->vid); in xdr_encode_YFSFid()
50 x->vnode.lo = u64_to_xdr(fid->vnode); in xdr_encode_YFSFid()
51 x->vnode.hi = htonl(fid->vnode_hi); in xdr_encode_YFSFid()
52 x->vnode.unique = htonl(fid->unique); in xdr_encode_YFSFid()
61 static __be32 *xdr_encode_string(__be32 *bp, const char *p, unsigned int len) in xdr_encode_string() argument
64 bp = memcpy(bp, p, len); in xdr_encode_string()
66 unsigned int pad = 4 - (len & 3); in xdr_encode_string()
75 static __be32 *xdr_encode_name(__be32 *bp, const struct qstr *p) in xdr_encode_name() argument
77 return xdr_encode_string(bp, p->name, p->len); in xdr_encode_name()
83 return (u64)t->tv_sec * 10000000 + t->tv_nsec/100; in linux_to_yfs_time()
90 x->mask = htonl(AFS_SET_MODE); in xdr_encode_YFSStoreStatus_mode()
91 x->mode = htonl(mode & S_IALLUGO); in xdr_encode_YFSStoreStatus_mode()
92 x->mtime_client = u64_to_xdr(0); in xdr_encode_YFSStoreStatus_mode()
93 x->owner = u64_to_xdr(0); in xdr_encode_YFSStoreStatus_mode()
94 x->group = u64_to_xdr(0); in xdr_encode_YFSStoreStatus_mode()
103 x->mask = htonl(AFS_SET_MTIME); in xdr_encode_YFSStoreStatus_mtime()
104 x->mode = htonl(0); in xdr_encode_YFSStoreStatus_mtime()
105 x->mtime_client = u64_to_xdr(mtime); in xdr_encode_YFSStoreStatus_mtime()
106 x->owner = u64_to_xdr(0); in xdr_encode_YFSStoreStatus_mtime()
107 x->group = u64_to_xdr(0); in xdr_encode_YFSStoreStatus_mtime()
112 * Convert a signed 100ns-resolution 64-bit time into a timespec.
125 abs_t = -t; in yfs_time_to_linux()
127 ts.tv_nsec = -ts.tv_nsec; in yfs_time_to_linux()
128 ts.tv_sec = -abs_t; in yfs_time_to_linux()
147 size_t len = (void *)bp - call->request; in yfs_check_req()
149 if (len > call->request_size) in yfs_check_req()
151 call->type->name, len, call->request_size); in yfs_check_req()
152 else if (len < call->request_size) in yfs_check_req()
154 call->type->name, len, call->request_size); in yfs_check_req()
185 struct afs_file_status *status = &scb->status; in xdr_decode_YFSFetchStatus()
188 status->abort_code = ntohl(xdr->abort_code); in xdr_decode_YFSFetchStatus()
189 if (status->abort_code != 0) { in xdr_decode_YFSFetchStatus()
190 if (status->abort_code == VNOVNODE) in xdr_decode_YFSFetchStatus()
191 status->nlink = 0; in xdr_decode_YFSFetchStatus()
192 scb->have_error = true; in xdr_decode_YFSFetchStatus()
196 type = ntohl(xdr->type); in xdr_decode_YFSFetchStatus()
201 status->type = type; in xdr_decode_YFSFetchStatus()
207 status->nlink = ntohl(xdr->nlink); in xdr_decode_YFSFetchStatus()
208 status->author = xdr_to_u64(xdr->author); in xdr_decode_YFSFetchStatus()
209 status->owner = xdr_to_u64(xdr->owner); in xdr_decode_YFSFetchStatus()
210 status->caller_access = ntohl(xdr->caller_access); /* Ticket dependent */ in xdr_decode_YFSFetchStatus()
211 status->anon_access = ntohl(xdr->anon_access); in xdr_decode_YFSFetchStatus()
212 status->mode = ntohl(xdr->mode) & S_IALLUGO; in xdr_decode_YFSFetchStatus()
213 status->group = xdr_to_u64(xdr->group); in xdr_decode_YFSFetchStatus()
214 status->lock_count = ntohl(xdr->lock_count); in xdr_decode_YFSFetchStatus()
216 status->mtime_client = xdr_to_time(xdr->mtime_client); in xdr_decode_YFSFetchStatus()
217 status->mtime_server = xdr_to_time(xdr->mtime_server); in xdr_decode_YFSFetchStatus()
218 status->size = xdr_to_u64(xdr->size); in xdr_decode_YFSFetchStatus()
219 status->data_version = xdr_to_u64(xdr->data_version); in xdr_decode_YFSFetchStatus()
220 scb->have_status = true; in xdr_decode_YFSFetchStatus()
239 struct afs_callback *cb = &scb->callback; in xdr_decode_YFSCallBack()
242 cb_expiry = ktime_add(call->issue_time, xdr_to_u64(x->expiration_time) * 100); in xdr_decode_YFSCallBack()
243 cb->expires_at = ktime_divns(cb_expiry, NSEC_PER_SEC); in xdr_decode_YFSCallBack()
244 scb->have_cb = true; in xdr_decode_YFSCallBack()
258 creation = xdr_to_u64(x->vol_creation_date); in xdr_decode_YFSVolSync()
260 volsync->creation = creation; in xdr_decode_YFSVolSync()
276 if (attr->ia_valid & ATTR_MTIME) { in xdr_encode_YFS_StoreStatus()
278 mtime = linux_to_yfs_time(&attr->ia_mtime); in xdr_encode_YFS_StoreStatus()
281 if (attr->ia_valid & ATTR_UID) { in xdr_encode_YFS_StoreStatus()
283 owner = from_kuid(&init_user_ns, attr->ia_uid); in xdr_encode_YFS_StoreStatus()
286 if (attr->ia_valid & ATTR_GID) { in xdr_encode_YFS_StoreStatus()
288 group = from_kgid(&init_user_ns, attr->ia_gid); in xdr_encode_YFS_StoreStatus()
291 if (attr->ia_valid & ATTR_MODE) { in xdr_encode_YFS_StoreStatus()
293 mode = attr->ia_mode & S_IALLUGO; in xdr_encode_YFS_StoreStatus()
296 x->mask = htonl(mask); in xdr_encode_YFS_StoreStatus()
297 x->mode = htonl(mode); in xdr_encode_YFS_StoreStatus()
298 x->mtime_client = u64_to_xdr(mtime); in xdr_encode_YFS_StoreStatus()
299 x->owner = u64_to_xdr(owner); in xdr_encode_YFS_StoreStatus()
300 x->group = u64_to_xdr(group); in xdr_encode_YFS_StoreStatus()
313 vs->vid = xdr_to_u64(x->vid); in xdr_decode_YFSFetchVolumeStatus()
314 vs->parent_id = xdr_to_u64(x->parent_id); in xdr_decode_YFSFetchVolumeStatus()
315 flags = ntohl(x->flags); in xdr_decode_YFSFetchVolumeStatus()
316 vs->online = flags & yfs_FVSOnline; in xdr_decode_YFSFetchVolumeStatus()
317 vs->in_service = flags & yfs_FVSInservice; in xdr_decode_YFSFetchVolumeStatus()
318 vs->blessed = flags & yfs_FVSBlessed; in xdr_decode_YFSFetchVolumeStatus()
319 vs->needs_salvage = flags & yfs_FVSNeedsSalvage; in xdr_decode_YFSFetchVolumeStatus()
320 vs->type = ntohl(x->type); in xdr_decode_YFSFetchVolumeStatus()
321 vs->min_quota = 0; in xdr_decode_YFSFetchVolumeStatus()
322 vs->max_quota = xdr_to_u64(x->max_quota); in xdr_decode_YFSFetchVolumeStatus()
323 vs->blocks_in_use = xdr_to_u64(x->blocks_in_use); in xdr_decode_YFSFetchVolumeStatus()
324 vs->part_blocks_avail = xdr_to_u64(x->part_blocks_avail); in xdr_decode_YFSFetchVolumeStatus()
325 vs->part_max_blocks = xdr_to_u64(x->part_max_blocks); in xdr_decode_YFSFetchVolumeStatus()
326 vs->vol_copy_date = xdr_to_u64(x->vol_copy_date); in xdr_decode_YFSFetchVolumeStatus()
327 vs->vol_backup_date = xdr_to_u64(x->vol_backup_date); in xdr_decode_YFSFetchVolumeStatus()
337 struct afs_operation *op = call->op; in yfs_deliver_status_and_volsync()
345 bp = call->buffer; in yfs_deliver_status_and_volsync()
346 xdr_decode_YFSFetchStatus(&bp, call, &op->file[0].scb); in yfs_deliver_status_and_volsync()
347 xdr_decode_YFSVolSync(&bp, &op->volsync); in yfs_deliver_status_and_volsync()
358 struct afs_operation *op = call->op; in yfs_deliver_fs_fetch_data64()
359 struct afs_vnode_param *vp = &op->file[0]; in yfs_deliver_fs_fetch_data64() local
360 struct afs_read *req = op->fetch.req; in yfs_deliver_fs_fetch_data64()
366 call->unmarshall, iov_iter_count(call->iter), req->actual_len); in yfs_deliver_fs_fetch_data64()
368 switch (call->unmarshall) { in yfs_deliver_fs_fetch_data64()
370 req->actual_len = 0; in yfs_deliver_fs_fetch_data64()
371 req->index = 0; in yfs_deliver_fs_fetch_data64()
372 req->offset = req->pos & (PAGE_SIZE - 1); in yfs_deliver_fs_fetch_data64()
374 call->unmarshall++; in yfs_deliver_fs_fetch_data64()
384 req->actual_len = be64_to_cpu(call->tmp64); in yfs_deliver_fs_fetch_data64()
385 _debug("DATA length: %llu", req->actual_len); in yfs_deliver_fs_fetch_data64()
386 req->remain = min(req->len, req->actual_len); in yfs_deliver_fs_fetch_data64()
387 if (req->remain == 0) in yfs_deliver_fs_fetch_data64()
390 call->unmarshall++; in yfs_deliver_fs_fetch_data64()
393 ASSERTCMP(req->index, <, req->nr_pages); in yfs_deliver_fs_fetch_data64()
394 if (req->remain > PAGE_SIZE - req->offset) in yfs_deliver_fs_fetch_data64()
395 size = PAGE_SIZE - req->offset; in yfs_deliver_fs_fetch_data64()
397 size = req->remain; in yfs_deliver_fs_fetch_data64()
398 call->bvec[0].bv_len = size; in yfs_deliver_fs_fetch_data64()
399 call->bvec[0].bv_offset = req->offset; in yfs_deliver_fs_fetch_data64()
400 call->bvec[0].bv_page = req->pages[req->index]; in yfs_deliver_fs_fetch_data64()
401 iov_iter_bvec(&call->def_iter, READ, call->bvec, 1, size); in yfs_deliver_fs_fetch_data64()
408 iov_iter_count(call->iter), req->remain); in yfs_deliver_fs_fetch_data64()
413 req->remain -= call->bvec[0].bv_len; in yfs_deliver_fs_fetch_data64()
414 req->offset += call->bvec[0].bv_len; in yfs_deliver_fs_fetch_data64()
415 ASSERTCMP(req->offset, <=, PAGE_SIZE); in yfs_deliver_fs_fetch_data64()
416 if (req->offset == PAGE_SIZE) { in yfs_deliver_fs_fetch_data64()
417 req->offset = 0; in yfs_deliver_fs_fetch_data64()
418 req->index++; in yfs_deliver_fs_fetch_data64()
419 if (req->remain > 0) in yfs_deliver_fs_fetch_data64()
423 ASSERTCMP(req->remain, ==, 0); in yfs_deliver_fs_fetch_data64()
424 if (req->actual_len <= req->len) in yfs_deliver_fs_fetch_data64()
428 afs_extract_discard(call, req->actual_len - req->len); in yfs_deliver_fs_fetch_data64()
429 call->unmarshall = 3; in yfs_deliver_fs_fetch_data64()
434 iov_iter_count(call->iter), req->actual_len - req->len); in yfs_deliver_fs_fetch_data64()
441 call->unmarshall = 4; in yfs_deliver_fs_fetch_data64()
454 bp = call->buffer; in yfs_deliver_fs_fetch_data64()
455 xdr_decode_YFSFetchStatus(&bp, call, &vp->scb); in yfs_deliver_fs_fetch_data64()
456 xdr_decode_YFSCallBack(&bp, call, &vp->scb); in yfs_deliver_fs_fetch_data64()
457 xdr_decode_YFSVolSync(&bp, &op->volsync); in yfs_deliver_fs_fetch_data64()
459 req->data_version = vp->scb.status.data_version; in yfs_deliver_fs_fetch_data64()
460 req->file_size = vp->scb.status.size; in yfs_deliver_fs_fetch_data64()
462 call->unmarshall++; in yfs_deliver_fs_fetch_data64()
469 for (; req->index < req->nr_pages; req->index++) { in yfs_deliver_fs_fetch_data64()
470 if (req->offset < PAGE_SIZE) in yfs_deliver_fs_fetch_data64()
471 zero_user_segment(req->pages[req->index], in yfs_deliver_fs_fetch_data64()
472 req->offset, PAGE_SIZE); in yfs_deliver_fs_fetch_data64()
473 req->offset = 0; in yfs_deliver_fs_fetch_data64()
476 if (req->page_done) in yfs_deliver_fs_fetch_data64()
477 for (req->index = 0; req->index < req->nr_pages; req->index++) in yfs_deliver_fs_fetch_data64()
478 req->page_done(req); in yfs_deliver_fs_fetch_data64()
499 struct afs_vnode_param *vp = &op->file[0]; in yfs_fs_fetch_data() local
500 struct afs_read *req = op->fetch.req; in yfs_fs_fetch_data()
505 key_serial(op->key), vp->fid.vid, vp->fid.vnode, in yfs_fs_fetch_data()
506 req->pos, req->len); in yfs_fs_fetch_data()
508 call = afs_alloc_flat_call(op->net, &yfs_RXYFSFetchData64, in yfs_fs_fetch_data()
519 bp = call->request; in yfs_fs_fetch_data()
522 bp = xdr_encode_YFSFid(bp, &vp->fid); in yfs_fs_fetch_data()
523 bp = xdr_encode_u64(bp, req->pos); in yfs_fs_fetch_data()
524 bp = xdr_encode_u64(bp, req->len); in yfs_fs_fetch_data()
527 trace_afs_make_fs_call(call, &vp->fid); in yfs_fs_fetch_data()
536 struct afs_operation *op = call->op; in yfs_deliver_fs_create_vnode()
537 struct afs_vnode_param *dvp = &op->file[0]; in yfs_deliver_fs_create_vnode()
538 struct afs_vnode_param *vp = &op->file[1]; in yfs_deliver_fs_create_vnode() local
542 _enter("{%u}", call->unmarshall); in yfs_deliver_fs_create_vnode()
549 bp = call->buffer; in yfs_deliver_fs_create_vnode()
550 xdr_decode_YFSFid(&bp, &op->file[1].fid); in yfs_deliver_fs_create_vnode()
551 xdr_decode_YFSFetchStatus(&bp, call, &vp->scb); in yfs_deliver_fs_create_vnode()
552 xdr_decode_YFSFetchStatus(&bp, call, &dvp->scb); in yfs_deliver_fs_create_vnode()
553 xdr_decode_YFSCallBack(&bp, call, &vp->scb); in yfs_deliver_fs_create_vnode()
554 xdr_decode_YFSVolSync(&bp, &op->volsync); in yfs_deliver_fs_create_vnode()
575 const struct qstr *name = &op->dentry->d_name; in yfs_fs_create_file()
576 struct afs_vnode_param *dvp = &op->file[0]; in yfs_fs_create_file()
586 xdr_strlen(name->len) + in yfs_fs_create_file()
595 call = afs_alloc_flat_call(op->net, &afs_RXFSCreateFile, reqsz, rplsz); in yfs_fs_create_file()
600 bp = call->request; in yfs_fs_create_file()
603 bp = xdr_encode_YFSFid(bp, &dvp->fid); in yfs_fs_create_file()
605 bp = xdr_encode_YFSStoreStatus_mode(bp, op->create.mode); in yfs_fs_create_file()
609 trace_afs_make_fs_call1(call, &dvp->fid, name); in yfs_fs_create_file()
625 const struct qstr *name = &op->dentry->d_name; in yfs_fs_make_dir()
626 struct afs_vnode_param *dvp = &op->file[0]; in yfs_fs_make_dir()
636 xdr_strlen(name->len) + in yfs_fs_make_dir()
644 call = afs_alloc_flat_call(op->net, &yfs_RXFSMakeDir, reqsz, rplsz); in yfs_fs_make_dir()
649 bp = call->request; in yfs_fs_make_dir()
652 bp = xdr_encode_YFSFid(bp, &dvp->fid); in yfs_fs_make_dir()
654 bp = xdr_encode_YFSStoreStatus_mode(bp, op->create.mode); in yfs_fs_make_dir()
657 trace_afs_make_fs_call1(call, &dvp->fid, name); in yfs_fs_make_dir()
666 struct afs_operation *op = call->op; in yfs_deliver_fs_remove_file2()
667 struct afs_vnode_param *dvp = &op->file[0]; in yfs_deliver_fs_remove_file2()
668 struct afs_vnode_param *vp = &op->file[1]; in yfs_deliver_fs_remove_file2() local
673 _enter("{%u}", call->unmarshall); in yfs_deliver_fs_remove_file2()
679 bp = call->buffer; in yfs_deliver_fs_remove_file2()
680 xdr_decode_YFSFetchStatus(&bp, call, &dvp->scb); in yfs_deliver_fs_remove_file2()
682 xdr_decode_YFSFetchStatus(&bp, call, &vp->scb); in yfs_deliver_fs_remove_file2()
683 /* Was deleted if vnode->status.abort_code == VNOVNODE. */ in yfs_deliver_fs_remove_file2()
685 xdr_decode_YFSVolSync(&bp, &op->volsync); in yfs_deliver_fs_remove_file2()
691 if (call->error == -ECONNABORTED && in yfs_done_fs_remove_file2()
692 call->abort_code == RX_INVALID_OPERATION) { in yfs_done_fs_remove_file2()
693 set_bit(AFS_SERVER_FL_NO_RM2, &call->server->flags); in yfs_done_fs_remove_file2()
694 call->op->flags |= AFS_OPERATION_DOWNGRADE; in yfs_done_fs_remove_file2()
714 struct afs_vnode_param *dvp = &op->file[0]; in yfs_fs_remove_file2()
715 const struct qstr *name = &op->dentry->d_name; in yfs_fs_remove_file2()
721 call = afs_alloc_flat_call(op->net, &yfs_RXYFSRemoveFile2, in yfs_fs_remove_file2()
725 xdr_strlen(name->len), in yfs_fs_remove_file2()
734 bp = call->request; in yfs_fs_remove_file2()
737 bp = xdr_encode_YFSFid(bp, &dvp->fid); in yfs_fs_remove_file2()
741 trace_afs_make_fs_call1(call, &dvp->fid, name); in yfs_fs_remove_file2()
750 struct afs_operation *op = call->op; in yfs_deliver_fs_remove()
751 struct afs_vnode_param *dvp = &op->file[0]; in yfs_deliver_fs_remove()
755 _enter("{%u}", call->unmarshall); in yfs_deliver_fs_remove()
761 bp = call->buffer; in yfs_deliver_fs_remove()
762 xdr_decode_YFSFetchStatus(&bp, call, &dvp->scb); in yfs_deliver_fs_remove()
763 xdr_decode_YFSVolSync(&bp, &op->volsync); in yfs_deliver_fs_remove()
782 const struct qstr *name = &op->dentry->d_name; in yfs_fs_remove_file()
783 struct afs_vnode_param *dvp = &op->file[0]; in yfs_fs_remove_file()
789 if (!test_bit(AFS_SERVER_FL_NO_RM2, &op->server->flags)) in yfs_fs_remove_file()
792 call = afs_alloc_flat_call(op->net, &yfs_RXYFSRemoveFile, in yfs_fs_remove_file()
796 xdr_strlen(name->len), in yfs_fs_remove_file()
803 bp = call->request; in yfs_fs_remove_file()
806 bp = xdr_encode_YFSFid(bp, &dvp->fid); in yfs_fs_remove_file()
810 trace_afs_make_fs_call1(call, &dvp->fid, name); in yfs_fs_remove_file()
826 const struct qstr *name = &op->dentry->d_name; in yfs_fs_remove_dir()
827 struct afs_vnode_param *dvp = &op->file[0]; in yfs_fs_remove_dir()
833 call = afs_alloc_flat_call(op->net, &yfs_RXYFSRemoveDir, in yfs_fs_remove_dir()
837 xdr_strlen(name->len), in yfs_fs_remove_dir()
844 bp = call->request; in yfs_fs_remove_dir()
847 bp = xdr_encode_YFSFid(bp, &dvp->fid); in yfs_fs_remove_dir()
851 trace_afs_make_fs_call1(call, &dvp->fid, name); in yfs_fs_remove_dir()
860 struct afs_operation *op = call->op; in yfs_deliver_fs_link()
861 struct afs_vnode_param *dvp = &op->file[0]; in yfs_deliver_fs_link()
862 struct afs_vnode_param *vp = &op->file[1]; in yfs_deliver_fs_link() local
866 _enter("{%u}", call->unmarshall); in yfs_deliver_fs_link()
872 bp = call->buffer; in yfs_deliver_fs_link()
873 xdr_decode_YFSFetchStatus(&bp, call, &vp->scb); in yfs_deliver_fs_link()
874 xdr_decode_YFSFetchStatus(&bp, call, &dvp->scb); in yfs_deliver_fs_link()
875 xdr_decode_YFSVolSync(&bp, &op->volsync); in yfs_deliver_fs_link()
895 const struct qstr *name = &op->dentry->d_name; in yfs_fs_link()
896 struct afs_vnode_param *dvp = &op->file[0]; in yfs_fs_link()
897 struct afs_vnode_param *vp = &op->file[1]; in yfs_fs_link() local
903 call = afs_alloc_flat_call(op->net, &yfs_RXYFSLink, in yfs_fs_link()
907 xdr_strlen(name->len) + in yfs_fs_link()
916 bp = call->request; in yfs_fs_link()
919 bp = xdr_encode_YFSFid(bp, &dvp->fid); in yfs_fs_link()
921 bp = xdr_encode_YFSFid(bp, &vp->fid); in yfs_fs_link()
924 trace_afs_make_fs_call1(call, &vp->fid, name); in yfs_fs_link()
933 struct afs_operation *op = call->op; in yfs_deliver_fs_symlink()
934 struct afs_vnode_param *dvp = &op->file[0]; in yfs_deliver_fs_symlink()
935 struct afs_vnode_param *vp = &op->file[1]; in yfs_deliver_fs_symlink() local
939 _enter("{%u}", call->unmarshall); in yfs_deliver_fs_symlink()
946 bp = call->buffer; in yfs_deliver_fs_symlink()
947 xdr_decode_YFSFid(&bp, &vp->fid); in yfs_deliver_fs_symlink()
948 xdr_decode_YFSFetchStatus(&bp, call, &vp->scb); in yfs_deliver_fs_symlink()
949 xdr_decode_YFSFetchStatus(&bp, call, &dvp->scb); in yfs_deliver_fs_symlink()
950 xdr_decode_YFSVolSync(&bp, &op->volsync); in yfs_deliver_fs_symlink()
971 const struct qstr *name = &op->dentry->d_name; in yfs_fs_symlink()
972 struct afs_vnode_param *dvp = &op->file[0]; in yfs_fs_symlink()
979 contents_sz = strlen(op->create.symlink); in yfs_fs_symlink()
980 call = afs_alloc_flat_call(op->net, &yfs_RXYFSSymlink, in yfs_fs_symlink()
984 xdr_strlen(name->len) + in yfs_fs_symlink()
995 bp = call->request; in yfs_fs_symlink()
998 bp = xdr_encode_YFSFid(bp, &dvp->fid); in yfs_fs_symlink()
1000 bp = xdr_encode_string(bp, op->create.symlink, contents_sz); in yfs_fs_symlink()
1004 trace_afs_make_fs_call1(call, &dvp->fid, name); in yfs_fs_symlink()
1013 struct afs_operation *op = call->op; in yfs_deliver_fs_rename()
1014 struct afs_vnode_param *orig_dvp = &op->file[0]; in yfs_deliver_fs_rename()
1015 struct afs_vnode_param *new_dvp = &op->file[1]; in yfs_deliver_fs_rename()
1019 _enter("{%u}", call->unmarshall); in yfs_deliver_fs_rename()
1025 bp = call->buffer; in yfs_deliver_fs_rename()
1029 xdr_decode_YFSFetchStatus(&bp, call, &orig_dvp->scb); in yfs_deliver_fs_rename()
1030 xdr_decode_YFSFetchStatus(&bp, call, &new_dvp->scb); in yfs_deliver_fs_rename()
1031 xdr_decode_YFSVolSync(&bp, &op->volsync); in yfs_deliver_fs_rename()
1051 struct afs_vnode_param *orig_dvp = &op->file[0]; in yfs_fs_rename()
1052 struct afs_vnode_param *new_dvp = &op->file[1]; in yfs_fs_rename()
1053 const struct qstr *orig_name = &op->dentry->d_name; in yfs_fs_rename()
1054 const struct qstr *new_name = &op->dentry_2->d_name; in yfs_fs_rename()
1060 call = afs_alloc_flat_call(op->net, &yfs_RXYFSRename, in yfs_fs_rename()
1064 xdr_strlen(orig_name->len) + in yfs_fs_rename()
1066 xdr_strlen(new_name->len), in yfs_fs_rename()
1074 bp = call->request; in yfs_fs_rename()
1077 bp = xdr_encode_YFSFid(bp, &orig_dvp->fid); in yfs_fs_rename()
1079 bp = xdr_encode_YFSFid(bp, &new_dvp->fid); in yfs_fs_rename()
1083 trace_afs_make_fs_call2(call, &orig_dvp->fid, orig_name, new_name); in yfs_fs_rename()
1102 struct afs_vnode_param *vp = &op->file[0]; in yfs_fs_store_data() local
1108 key_serial(op->key), vp->fid.vid, vp->fid.vnode); in yfs_fs_store_data()
1110 size = (loff_t)op->store.last_to - (loff_t)op->store.first_offset; in yfs_fs_store_data()
1111 if (op->store.first != op->store.last) in yfs_fs_store_data()
1112 size += (loff_t)(op->store.last - op->store.first) << PAGE_SHIFT; in yfs_fs_store_data()
1113 pos = (loff_t)op->store.first << PAGE_SHIFT; in yfs_fs_store_data()
1114 pos += op->store.first_offset; in yfs_fs_store_data()
1116 i_size = i_size_read(&vp->vnode->vfs_inode); in yfs_fs_store_data()
1124 call = afs_alloc_flat_call(op->net, &yfs_RXYFSStoreData64, in yfs_fs_store_data()
1135 call->key = op->key; in yfs_fs_store_data()
1136 call->send_pages = true; in yfs_fs_store_data()
1139 bp = call->request; in yfs_fs_store_data()
1142 bp = xdr_encode_YFSFid(bp, &vp->fid); in yfs_fs_store_data()
1143 bp = xdr_encode_YFSStoreStatus_mtime(bp, &op->mtime); in yfs_fs_store_data()
1149 trace_afs_make_fs_call(call, &vp->fid); in yfs_fs_store_data()
1176 struct afs_vnode_param *vp = &op->file[0]; in yfs_fs_setattr_size() local
1178 struct iattr *attr = op->setattr.attr; in yfs_fs_setattr_size()
1182 key_serial(op->key), vp->fid.vid, vp->fid.vnode); in yfs_fs_setattr_size()
1184 call = afs_alloc_flat_call(op->net, &yfs_RXYFSStoreData64_as_Status, in yfs_fs_setattr_size()
1195 bp = call->request; in yfs_fs_setattr_size()
1198 bp = xdr_encode_YFSFid(bp, &vp->fid); in yfs_fs_setattr_size()
1200 bp = xdr_encode_u64(bp, attr->ia_size); /* position of start of write */ in yfs_fs_setattr_size()
1202 bp = xdr_encode_u64(bp, attr->ia_size); /* new file length */ in yfs_fs_setattr_size()
1205 trace_afs_make_fs_call(call, &vp->fid); in yfs_fs_setattr_size()
1215 struct afs_vnode_param *vp = &op->file[0]; in yfs_fs_setattr() local
1217 struct iattr *attr = op->setattr.attr; in yfs_fs_setattr()
1220 if (attr->ia_valid & ATTR_SIZE) in yfs_fs_setattr()
1224 key_serial(op->key), vp->fid.vid, vp->fid.vnode); in yfs_fs_setattr()
1226 call = afs_alloc_flat_call(op->net, &yfs_RXYFSStoreStatus, in yfs_fs_setattr()
1236 bp = call->request; in yfs_fs_setattr()
1239 bp = xdr_encode_YFSFid(bp, &vp->fid); in yfs_fs_setattr()
1243 trace_afs_make_fs_call(call, &vp->fid); in yfs_fs_setattr()
1252 struct afs_operation *op = call->op; in yfs_deliver_fs_get_volume_status()
1254 char *p; in yfs_deliver_fs_get_volume_status() local
1258 _enter("{%u}", call->unmarshall); in yfs_deliver_fs_get_volume_status()
1260 switch (call->unmarshall) { in yfs_deliver_fs_get_volume_status()
1262 call->unmarshall++; in yfs_deliver_fs_get_volume_status()
1273 bp = call->buffer; in yfs_deliver_fs_get_volume_status()
1274 xdr_decode_YFSFetchVolumeStatus(&bp, &op->volstatus.vs); in yfs_deliver_fs_get_volume_status()
1275 call->unmarshall++; in yfs_deliver_fs_get_volume_status()
1285 call->count = ntohl(call->tmp); in yfs_deliver_fs_get_volume_status()
1286 _debug("volname length: %u", call->count); in yfs_deliver_fs_get_volume_status()
1287 if (call->count >= AFSNAMEMAX) in yfs_deliver_fs_get_volume_status()
1289 size = (call->count + 3) & ~3; /* It's padded */ in yfs_deliver_fs_get_volume_status()
1291 call->unmarshall++; in yfs_deliver_fs_get_volume_status()
1301 p = call->buffer; in yfs_deliver_fs_get_volume_status()
1302 p[call->count] = 0; in yfs_deliver_fs_get_volume_status()
1303 _debug("volname '%s'", p); in yfs_deliver_fs_get_volume_status()
1305 call->unmarshall++; in yfs_deliver_fs_get_volume_status()
1314 call->count = ntohl(call->tmp); in yfs_deliver_fs_get_volume_status()
1315 _debug("offline msg length: %u", call->count); in yfs_deliver_fs_get_volume_status()
1316 if (call->count >= AFSNAMEMAX) in yfs_deliver_fs_get_volume_status()
1318 size = (call->count + 3) & ~3; /* It's padded */ in yfs_deliver_fs_get_volume_status()
1320 call->unmarshall++; in yfs_deliver_fs_get_volume_status()
1330 p = call->buffer; in yfs_deliver_fs_get_volume_status()
1331 p[call->count] = 0; in yfs_deliver_fs_get_volume_status()
1332 _debug("offline '%s'", p); in yfs_deliver_fs_get_volume_status()
1335 call->unmarshall++; in yfs_deliver_fs_get_volume_status()
1344 call->count = ntohl(call->tmp); in yfs_deliver_fs_get_volume_status()
1345 _debug("motd length: %u", call->count); in yfs_deliver_fs_get_volume_status()
1346 if (call->count >= AFSNAMEMAX) in yfs_deliver_fs_get_volume_status()
1348 size = (call->count + 3) & ~3; /* It's padded */ in yfs_deliver_fs_get_volume_status()
1350 call->unmarshall++; in yfs_deliver_fs_get_volume_status()
1360 p = call->buffer; in yfs_deliver_fs_get_volume_status()
1361 p[call->count] = 0; in yfs_deliver_fs_get_volume_status()
1362 _debug("motd '%s'", p); in yfs_deliver_fs_get_volume_status()
1364 call->unmarshall++; in yfs_deliver_fs_get_volume_status()
1390 struct afs_vnode_param *vp = &op->file[0]; in yfs_fs_get_volume_status() local
1396 call = afs_alloc_flat_call(op->net, &yfs_RXYFSGetVolumeStatus, in yfs_fs_get_volume_status()
1407 bp = call->request; in yfs_fs_get_volume_status()
1410 bp = xdr_encode_u64(bp, vp->fid.vid); in yfs_fs_get_volume_status()
1413 trace_afs_make_fs_call(call, &vp->fid); in yfs_fs_get_volume_status()
1454 struct afs_vnode_param *vp = &op->file[0]; in yfs_fs_set_lock() local
1460 call = afs_alloc_flat_call(op->net, &yfs_RXYFSSetLock, in yfs_fs_set_lock()
1470 bp = call->request; in yfs_fs_set_lock()
1473 bp = xdr_encode_YFSFid(bp, &vp->fid); in yfs_fs_set_lock()
1474 bp = xdr_encode_u32(bp, op->lock.type); in yfs_fs_set_lock()
1477 trace_afs_make_fs_calli(call, &vp->fid, op->lock.type); in yfs_fs_set_lock()
1486 struct afs_vnode_param *vp = &op->file[0]; in yfs_fs_extend_lock() local
1492 call = afs_alloc_flat_call(op->net, &yfs_RXYFSExtendLock, in yfs_fs_extend_lock()
1501 bp = call->request; in yfs_fs_extend_lock()
1504 bp = xdr_encode_YFSFid(bp, &vp->fid); in yfs_fs_extend_lock()
1507 trace_afs_make_fs_call(call, &vp->fid); in yfs_fs_extend_lock()
1516 struct afs_vnode_param *vp = &op->file[0]; in yfs_fs_release_lock() local
1522 call = afs_alloc_flat_call(op->net, &yfs_RXYFSReleaseLock, in yfs_fs_release_lock()
1531 bp = call->request; in yfs_fs_release_lock()
1534 bp = xdr_encode_YFSFid(bp, &vp->fid); in yfs_fs_release_lock()
1537 trace_afs_make_fs_call(call, &vp->fid); in yfs_fs_release_lock()
1546 struct afs_operation *op = call->op; in yfs_deliver_fs_fetch_status()
1547 struct afs_vnode_param *vp = &op->file[op->fetch_status.which]; in yfs_deliver_fs_fetch_status() local
1556 bp = call->buffer; in yfs_deliver_fs_fetch_status()
1557 xdr_decode_YFSFetchStatus(&bp, call, &vp->scb); in yfs_deliver_fs_fetch_status()
1558 xdr_decode_YFSCallBack(&bp, call, &vp->scb); in yfs_deliver_fs_fetch_status()
1559 xdr_decode_YFSVolSync(&bp, &op->volsync); in yfs_deliver_fs_fetch_status()
1580 struct afs_vnode_param *vp = &op->file[op->fetch_status.which]; in yfs_fs_fetch_status() local
1585 key_serial(op->key), vp->fid.vid, vp->fid.vnode); in yfs_fs_fetch_status()
1587 call = afs_alloc_flat_call(op->net, &yfs_RXYFSFetchStatus, in yfs_fs_fetch_status()
1597 bp = call->request; in yfs_fs_fetch_status()
1600 bp = xdr_encode_YFSFid(bp, &vp->fid); in yfs_fs_fetch_status()
1603 trace_afs_make_fs_call(call, &vp->fid); in yfs_fs_fetch_status()
1612 struct afs_operation *op = call->op; in yfs_deliver_fs_inline_bulk_status()
1618 _enter("{%u}", call->unmarshall); in yfs_deliver_fs_inline_bulk_status()
1620 switch (call->unmarshall) { in yfs_deliver_fs_inline_bulk_status()
1623 call->unmarshall++; in yfs_deliver_fs_inline_bulk_status()
1633 tmp = ntohl(call->tmp); in yfs_deliver_fs_inline_bulk_status()
1634 _debug("status count: %u/%u", tmp, op->nr_files); in yfs_deliver_fs_inline_bulk_status()
1635 if (tmp != op->nr_files) in yfs_deliver_fs_inline_bulk_status()
1638 call->count = 0; in yfs_deliver_fs_inline_bulk_status()
1639 call->unmarshall++; in yfs_deliver_fs_inline_bulk_status()
1645 _debug("extract status array %u", call->count); in yfs_deliver_fs_inline_bulk_status()
1650 switch (call->count) { in yfs_deliver_fs_inline_bulk_status()
1652 scb = &op->file[0].scb; in yfs_deliver_fs_inline_bulk_status()
1655 scb = &op->file[1].scb; in yfs_deliver_fs_inline_bulk_status()
1658 scb = &op->more_files[call->count - 2].scb; in yfs_deliver_fs_inline_bulk_status()
1662 bp = call->buffer; in yfs_deliver_fs_inline_bulk_status()
1665 call->count++; in yfs_deliver_fs_inline_bulk_status()
1666 if (call->count < op->nr_files) in yfs_deliver_fs_inline_bulk_status()
1669 call->count = 0; in yfs_deliver_fs_inline_bulk_status()
1670 call->unmarshall++; in yfs_deliver_fs_inline_bulk_status()
1681 tmp = ntohl(call->tmp); in yfs_deliver_fs_inline_bulk_status()
1683 if (tmp != op->nr_files) in yfs_deliver_fs_inline_bulk_status()
1685 call->count = 0; in yfs_deliver_fs_inline_bulk_status()
1686 call->unmarshall++; in yfs_deliver_fs_inline_bulk_status()
1698 switch (call->count) { in yfs_deliver_fs_inline_bulk_status()
1700 scb = &op->file[0].scb; in yfs_deliver_fs_inline_bulk_status()
1703 scb = &op->file[1].scb; in yfs_deliver_fs_inline_bulk_status()
1706 scb = &op->more_files[call->count - 2].scb; in yfs_deliver_fs_inline_bulk_status()
1710 bp = call->buffer; in yfs_deliver_fs_inline_bulk_status()
1712 call->count++; in yfs_deliver_fs_inline_bulk_status()
1713 if (call->count < op->nr_files) in yfs_deliver_fs_inline_bulk_status()
1717 call->unmarshall++; in yfs_deliver_fs_inline_bulk_status()
1725 bp = call->buffer; in yfs_deliver_fs_inline_bulk_status()
1726 xdr_decode_YFSVolSync(&bp, &op->volsync); in yfs_deliver_fs_inline_bulk_status()
1728 call->unmarshall++; in yfs_deliver_fs_inline_bulk_status()
1754 struct afs_vnode_param *dvp = &op->file[0]; in yfs_fs_inline_bulk_status()
1755 struct afs_vnode_param *vp = &op->file[1]; in yfs_fs_inline_bulk_status() local
1761 key_serial(op->key), vp->fid.vid, vp->fid.vnode, op->nr_files); in yfs_fs_inline_bulk_status()
1763 call = afs_alloc_flat_call(op->net, &yfs_RXYFSInlineBulkStatus, in yfs_fs_inline_bulk_status()
1767 sizeof(struct yfs_xdr_YFSFid) * op->nr_files, in yfs_fs_inline_bulk_status()
1773 bp = call->request; in yfs_fs_inline_bulk_status()
1776 bp = xdr_encode_u32(bp, op->nr_files); in yfs_fs_inline_bulk_status()
1777 bp = xdr_encode_YFSFid(bp, &dvp->fid); in yfs_fs_inline_bulk_status()
1778 bp = xdr_encode_YFSFid(bp, &vp->fid); in yfs_fs_inline_bulk_status()
1779 for (i = 0; i < op->nr_files - 2; i++) in yfs_fs_inline_bulk_status()
1780 bp = xdr_encode_YFSFid(bp, &op->more_files[i].fid); in yfs_fs_inline_bulk_status()
1783 trace_afs_make_fs_call(call, &vp->fid); in yfs_fs_inline_bulk_status()
1792 struct afs_operation *op = call->op; in yfs_deliver_fs_fetch_opaque_acl()
1793 struct afs_vnode_param *vp = &op->file[0]; in yfs_deliver_fs_fetch_opaque_acl() local
1794 struct yfs_acl *yacl = op->yacl; in yfs_deliver_fs_fetch_opaque_acl()
1800 _enter("{%u}", call->unmarshall); in yfs_deliver_fs_fetch_opaque_acl()
1802 switch (call->unmarshall) { in yfs_deliver_fs_fetch_opaque_acl()
1805 call->unmarshall++; in yfs_deliver_fs_fetch_opaque_acl()
1814 size = call->count2 = ntohl(call->tmp); in yfs_deliver_fs_fetch_opaque_acl()
1817 if (yacl->flags & YFS_ACL_WANT_ACL) { in yfs_deliver_fs_fetch_opaque_acl()
1820 return -ENOMEM; in yfs_deliver_fs_fetch_opaque_acl()
1821 yacl->acl = acl; in yfs_deliver_fs_fetch_opaque_acl()
1822 acl->size = call->count2; in yfs_deliver_fs_fetch_opaque_acl()
1823 afs_extract_begin(call, acl->data, size); in yfs_deliver_fs_fetch_opaque_acl()
1827 call->unmarshall++; in yfs_deliver_fs_fetch_opaque_acl()
1837 call->unmarshall++; in yfs_deliver_fs_fetch_opaque_acl()
1846 size = call->count2 = ntohl(call->tmp); in yfs_deliver_fs_fetch_opaque_acl()
1849 if (yacl->flags & YFS_ACL_WANT_VOL_ACL) { in yfs_deliver_fs_fetch_opaque_acl()
1852 return -ENOMEM; in yfs_deliver_fs_fetch_opaque_acl()
1853 yacl->vol_acl = acl; in yfs_deliver_fs_fetch_opaque_acl()
1854 acl->size = call->count2; in yfs_deliver_fs_fetch_opaque_acl()
1855 afs_extract_begin(call, acl->data, size); in yfs_deliver_fs_fetch_opaque_acl()
1859 call->unmarshall++; in yfs_deliver_fs_fetch_opaque_acl()
1872 call->unmarshall++; in yfs_deliver_fs_fetch_opaque_acl()
1881 bp = call->buffer; in yfs_deliver_fs_fetch_opaque_acl()
1882 yacl->inherit_flag = ntohl(*bp++); in yfs_deliver_fs_fetch_opaque_acl()
1883 yacl->num_cleaned = ntohl(*bp++); in yfs_deliver_fs_fetch_opaque_acl()
1884 xdr_decode_YFSFetchStatus(&bp, call, &vp->scb); in yfs_deliver_fs_fetch_opaque_acl()
1885 xdr_decode_YFSVolSync(&bp, &op->volsync); in yfs_deliver_fs_fetch_opaque_acl()
1887 call->unmarshall++; in yfs_deliver_fs_fetch_opaque_acl()
1901 kfree(yacl->acl); in yfs_free_opaque_acl()
1902 kfree(yacl->vol_acl); in yfs_free_opaque_acl()
1922 struct afs_vnode_param *vp = &op->file[0]; in yfs_fs_fetch_opaque_acl() local
1927 key_serial(op->key), vp->fid.vid, vp->fid.vnode); in yfs_fs_fetch_opaque_acl()
1929 call = afs_alloc_flat_call(op->net, &yfs_RXYFSFetchOpaqueACL, in yfs_fs_fetch_opaque_acl()
1939 bp = call->request; in yfs_fs_fetch_opaque_acl()
1942 bp = xdr_encode_YFSFid(bp, &vp->fid); in yfs_fs_fetch_opaque_acl()
1945 trace_afs_make_fs_call(call, &vp->fid); in yfs_fs_fetch_opaque_acl()
1964 struct afs_vnode_param *vp = &op->file[0]; in yfs_fs_store_opaque_acl2() local
1966 struct afs_acl *acl = op->acl; in yfs_fs_store_opaque_acl2()
1971 key_serial(op->key), vp->fid.vid, vp->fid.vnode); in yfs_fs_store_opaque_acl2()
1973 size = round_up(acl->size, 4); in yfs_fs_store_opaque_acl2()
1974 call = afs_alloc_flat_call(op->net, &yfs_RXYFSStoreOpaqueACL2, in yfs_fs_store_opaque_acl2()
1984 bp = call->request; in yfs_fs_store_opaque_acl2()
1987 bp = xdr_encode_YFSFid(bp, &vp->fid); in yfs_fs_store_opaque_acl2()
1988 bp = xdr_encode_u32(bp, acl->size); in yfs_fs_store_opaque_acl2()
1989 memcpy(bp, acl->data, acl->size); in yfs_fs_store_opaque_acl2()
1990 if (acl->size != size) in yfs_fs_store_opaque_acl2()
1991 memset((void *)bp + acl->size, 0, size - acl->size); in yfs_fs_store_opaque_acl2()
1995 trace_afs_make_fs_call(call, &vp->fid); in yfs_fs_store_opaque_acl2()