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