Skip to content

Instantly share code, notes, and snippets.

@Mic92
Created July 8, 2019 16:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Mic92/7e0f76a1331604cb8e98acb1561eeca2 to your computer and use it in GitHub Desktop.
Save Mic92/7e0f76a1331604cb8e98acb1561eeca2 to your computer and use it in GitHub Desktop.
static void spdk_read_completion_cb(void *ctx, const struct spdk_nvme_cpl *cpl)
{
struct spdk_cmd *cmd = (struct spdk_cmd *)ctx;
struct bio_vec bvec;
struct request *req = cmd->req;
struct req_iterator iter;
char *p = (char *)cmd->spdk_buf;
if ((req->bio)) for (iter.bio = (req)->bio; iter.bio; iter.bio = iter.bio->bi_next) for (iter.iter = ((iter.bio)->bi_iter); (iter.iter).bi_size && ((bvec = ((struct bio_vec) { .bv_page = ((&(((((iter.bio))->bi_io_vec)))[(((((iter.iter))))).bi_idx])->bv_page), .bv_len = __builtin_choose_expr(((!!(sizeof((typeof(((((iter.iter)))).bi_size) *)1 == (typeof((&(((((iter.bio))->bi_io_vec)))[(((((iter.iter))))).bi_idx])->bv_len - ((((iter.iter)))).bi_bvec_done) *)1))) && ((sizeof(int) == sizeof(*(8 ? ((void *)((long)(((((iter.iter)))).bi_size) * 0l)) : (int *)8))) && (sizeof(int) == sizeof(*(8 ? ((void *)((long)((&(((((iter.bio))->bi_io_vec)))[(((((iter.iter))))).bi_idx])->bv_len - ((((iter.iter)))).bi_bvec_done) * 0l)) : (int *)8))))), ((((((iter.iter)))).bi_size) < ((&(((((iter.bio))->bi_io_vec)))[(((((iter.iter))))).bi_idx])->bv_len - ((((iter.iter)))).bi_bvec_done) ? (((((iter.iter)))).bi_size) : ((&(((((iter.bio))->bi_io_vec)))[(((((iter.iter))))).bi_idx])->bv_len - ((((iter.iter)))).bi_bvec_done)), ({ typeof(((((iter.iter)))).bi_size) __UNIQUE_ID___x38 = (((((iter.iter)))).bi_size); typeof((&(((((iter.bio))->bi_io_vec)))[(((((iter.iter))))).bi_idx])->bv_len - ((((iter.iter)))).bi_bvec_done) __UNIQUE_ID___y39 = ((&(((((iter.bio))->bi_io_vec)))[(((((iter.iter))))).bi_idx])->bv_len - ((((iter.iter)))).bi_bvec_done); ((__UNIQUE_ID___x38) < (__UNIQUE_ID___y39) ? (__UNIQUE_ID___x38) : (__UNIQUE_ID___y39)); })), .bv_offset = ((&(((((iter.bio))->bi_io_vec)))[(((((iter.iter))))).bi_idx])->bv_offset + ((((iter.iter)))).bi_bvec_done), })), 1); bio_advance_iter((iter.bio), &(iter.iter), (bvec).bv_len)) {
memcpy(lowmem_page_address(bvec.bv_page) + bvec.bv_offset, p,
bvec.bv_len);
p += bvec.bv_len;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment