/* deliver reply data to an FS.CreateFile or an FS.MakeDir  */
static int afs_deliver_fs_create_vnode(struct afs_call *call, struct sk_buff *skb, bool last)
/* deliver reply data to an FS.CreateFile or an FS.MakeDir  */
static int afs_deliver_fs_create_vnode(struct afs_call *call, struct sk_buff *skb, bool last)
{
	struct afs_vnode *vnode = call->reply;
	const __be32 *bp;
	_enter("{%u},{%u},%d", call->unmarshall, skb->len, last);
	afs_transfer_reply(call, skb);
	if (!last)
		return 0;
	if (call->reply_size != call->reply_max)
		return -EBADMSG;
	bp = call->buffer;
	xdr_decode_AFSFid(&bp, call->reply2);
	xdr_decode_AFSFetchStatus(&bp, call->reply3, NULL, NULL);
	xdr_decode_AFSFetchStatus(&bp, &vnode->status, vnode, NULL);
	xdr_decode_AFSCallBack_raw(&bp, call->reply4);
	_leave(" = 0 [done]");
	return 0;
}