On Thu, Mar 29, 2018 at 07:09:07PM +0800, Fam Zheng wrote: > diff --git a/block/io.c b/block/io.c > index bd9a19a9c4..1b4cfcacb1 100644 > --- a/block/io.c > +++ b/block/io.c > @@ -2826,3 +2826,47 @@ void bdrv_unregister_buf(BlockDriverState *bs, void > *host) > bdrv_unregister_buf(child->bs, host); > } > } > + > +int coroutine_fn bdrv_co_map_range(BdrvChild *child, int64_t offset, > + int64_t bytes, int64_t *pnum, int64_t > *map,
s/map/file_offset/ is clearer, since this function has self-expanatory 'offset' and 'file' arguments. This is the "offset within the file" -> file_offset. > + /** > + * Get or create offset mappings for a virtual range. > + * > + * @offset: the offset of the beginning of the range. Adding the units and avoiding reusing "offset" in the description: "byte position of the beginning of the range" > + * @bytes: the maximum bytes of the range to map. > + * @pnum: at return, this will point to the number of bytes in the > returned > + * mapping status > + * @map: at return, this will point to the offset which the range maps to > + * @file: at return, this will point to the file where the data is > mapped. > + * If it is set to bs, it means the mapping is terminal and the result > can > + * be used for read/write and copy_range; if it is NULL, it means the > range > + * doesn't map to a file, or no I/O to any file is necessary; otherwise, > it > + * means the query should be passed down to an underlying > format/protocol. What does "the query should be passed down to an underlying format/protocol" mean? > + * @flags: flags for the request. BDRV_REQ_ALLOCATE means the range > + * should be allocated if necessary. > + */ What are return values? Please include a statement describing how long the mapping is considered stable. For example, a qcow2 copy-on-write could "move" the data somewhere else. Therefore it's not safe to store the value of "map" and use it again later on. Additionally, please explain what the caller is allowed to do with the returned information. Using qcow2 copy-on-write as an example again, it is not okay to write to "map" since that bypasses qcow2's COW mechanism.
Description: PGP signature