[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 7/7] Mini-OS: add read and write support to 9pfsfront
Juergen Gross, le ven. 10 févr. 2023 11:46:28 +0100, a ecrit: > + while ( len ) > + { > + count = len; > + if ( count > dev->msize_max - 24 ) > + count = dev->msize_max - 24; 24 should be detailed, to include e.g. sizeof(p9_header) and the sum of sizes of the fields (I'm surprised that it's the same 24 for read and write, notably). > + send_9p(dev, req, "ULU", fid, offset, count); > + rcv_9p(dev, req, "D", &count, data); > + > + if ( !count ) > + break; > + if ( req->result ) > + { > + ret = -1; > + errno = EIO; I'd say log req->result? > + break; > + } > + ret += count; > + offset += count; > + data += count; > + len -= count; > + } > + > + put_free_req(dev, req); > + > + return ret; > +} > + > +static int p9_write(struct dev_9pfs *dev, uint32_t fid, uint64_t offset, > + const uint8_t *data, uint32_t len) > +{ > + struct req *req = get_free_req(dev); > + int ret = 0; > + uint32_t count; > + > + if ( !req ) > + { > + errno = EAGAIN; > + return -1; > + } > + req->cmd = P9_CMD_WRITE; > + > + while ( len ) > + { > + count = len; > + if ( count > dev->msize_max - 24 ) > + count = dev->msize_max - 24; Same here. > + send_9p(dev, req, "ULD", fid, offset, count, data); > + rcv_9p(dev, req, "U", &count); > + if ( req->result ) > + { > + ret = -1; > + errno = EIO; Same here. > + break; > + } > + ret += count; > + offset += count; > + data += count; > + len -= count; > + } > + > + put_free_req(dev, req); > + > + return ret; > +}
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |