Revision 955efc47

b/hw/virtio-9p.c
861 861

  
862 862
static void v9fs_attach(V9fsState *s, V9fsPDU *pdu)
863 863
{
864
    if (debug_9p_pdu) {
865
        pprint_pdu(pdu);
864
    int32_t fid, afid, n_uname;
865
    V9fsString uname, aname;
866
    V9fsFidState *fidp;
867
    V9fsQID qid;
868
    size_t offset = 7;
869
    ssize_t err;
870

  
871
    pdu_unmarshal(pdu, offset, "ddssd", &fid, &afid, &uname, &aname, &n_uname);
872

  
873
    fidp = alloc_fid(s, fid);
874
    if (fidp == NULL) {
875
        err = -EINVAL;
876
        goto out;
866 877
    }
878

  
879
    fidp->uid = n_uname;
880

  
881
    v9fs_string_sprintf(&fidp->path, "%s", "/");
882
    err = fid_to_qid(s, fidp, &qid);
883
    if (err) {
884
        err = -EINVAL;
885
        free_fid(s, fid);
886
        goto out;
887
    }
888

  
889
    offset += pdu_marshal(pdu, offset, "Q", &qid);
890

  
891
    err = offset;
892
out:
893
    complete_pdu(s, pdu, err);
894
    v9fs_string_free(&uname);
895
    v9fs_string_free(&aname);
867 896
}
868 897

  
869 898
static void v9fs_stat(V9fsState *s, V9fsPDU *pdu)

Also available in: Unified diff