Lines Matching refs:ctx

136 raid_bdev_parse_superblock(struct raid_bdev_read_sb_ctx *ctx)  in raid_bdev_parse_superblock()  argument
138 struct raid_bdev_superblock *sb = ctx->buf; in raid_bdev_parse_superblock()
139 struct spdk_bdev *bdev = spdk_bdev_desc_get_bdev(ctx->desc); in raid_bdev_parse_superblock()
149 spdk_divide_round_up(ctx->buf_size, bdev->blocklen)) { in raid_bdev_parse_superblock()
188 raid_bdev_read_sb_ctx_free(struct raid_bdev_read_sb_ctx *ctx) in raid_bdev_read_sb_ctx_free() argument
190 spdk_dma_free(ctx->buf); in raid_bdev_read_sb_ctx_free()
192 free(ctx); in raid_bdev_read_sb_ctx_free()
198 raid_bdev_read_sb_remainder(struct raid_bdev_read_sb_ctx *ctx) in raid_bdev_read_sb_remainder() argument
200 struct raid_bdev_superblock *sb = ctx->buf; in raid_bdev_read_sb_remainder()
201 struct spdk_bdev *bdev = spdk_bdev_desc_get_bdev(ctx->desc); in raid_bdev_read_sb_remainder()
206 buf_size_prev = ctx->buf_size; in raid_bdev_read_sb_remainder()
207 ctx->buf_size = spdk_divide_round_up(spdk_min(sb->length, RAID_BDEV_SB_MAX_LENGTH), in raid_bdev_read_sb_remainder()
209 buf = spdk_dma_realloc(ctx->buf, ctx->buf_size, spdk_bdev_get_buf_align(bdev), NULL); in raid_bdev_read_sb_remainder()
214 ctx->buf = buf; in raid_bdev_read_sb_remainder()
216 rc = spdk_bdev_read(ctx->desc, ctx->ch, ctx->buf + buf_size_prev, buf_size_prev, in raid_bdev_read_sb_remainder()
217 ctx->buf_size - buf_size_prev, raid_bdev_read_sb_cb, ctx); in raid_bdev_read_sb_remainder()
231 struct raid_bdev_read_sb_ctx *ctx = cb_arg; in raid_bdev_read_sb_cb() local
235 if (spdk_bdev_is_md_interleaved(bdev_io->bdev) && ctx->buf_size > bdev->blocklen) { in raid_bdev_read_sb_cb()
239 for (i = 1; i < ctx->buf_size / bdev->blocklen; i++) { in raid_bdev_read_sb_cb()
240 memmove(ctx->buf + (i * data_block_size), in raid_bdev_read_sb_cb()
241 ctx->buf + (i * bdev->blocklen), in raid_bdev_read_sb_cb()
253 status = raid_bdev_parse_superblock(ctx); in raid_bdev_read_sb_cb()
255 status = raid_bdev_read_sb_remainder(ctx); in raid_bdev_read_sb_cb()
261 spdk_bdev_get_name(spdk_bdev_desc_get_bdev(ctx->desc))); in raid_bdev_read_sb_cb()
263 sb = ctx->buf; in raid_bdev_read_sb_cb()
266 ctx->cb(sb, status, ctx->cb_ctx); in raid_bdev_read_sb_cb()
268 raid_bdev_read_sb_ctx_free(ctx); in raid_bdev_read_sb_cb()
276 struct raid_bdev_read_sb_ctx *ctx; in raid_bdev_load_base_bdev_superblock() local
281 ctx = calloc(1, sizeof(*ctx)); in raid_bdev_load_base_bdev_superblock()
282 if (!ctx) { in raid_bdev_load_base_bdev_superblock()
286 ctx->desc = desc; in raid_bdev_load_base_bdev_superblock()
287 ctx->ch = ch; in raid_bdev_load_base_bdev_superblock()
288 ctx->cb = cb; in raid_bdev_load_base_bdev_superblock()
289 ctx->cb_ctx = cb_ctx; in raid_bdev_load_base_bdev_superblock()
290 ctx->buf_size = spdk_divide_round_up(sizeof(struct raid_bdev_superblock), in raid_bdev_load_base_bdev_superblock()
292 ctx->buf = spdk_dma_malloc(ctx->buf_size, spdk_bdev_get_buf_align(bdev), NULL); in raid_bdev_load_base_bdev_superblock()
293 if (!ctx->buf) { in raid_bdev_load_base_bdev_superblock()
298 rc = spdk_bdev_read(desc, ch, ctx->buf, 0, ctx->buf_size, raid_bdev_read_sb_cb, ctx); in raid_bdev_load_base_bdev_superblock()
305 raid_bdev_read_sb_ctx_free(ctx); in raid_bdev_load_base_bdev_superblock()
311 raid_bdev_write_sb_base_bdev_done(int status, struct raid_bdev_write_sb_ctx *ctx) in raid_bdev_write_sb_base_bdev_done() argument
314 ctx->status = status; in raid_bdev_write_sb_base_bdev_done()
317 if (--ctx->remaining == 0) { in raid_bdev_write_sb_base_bdev_done()
318 ctx->cb(ctx->status, ctx->raid_bdev, ctx->cb_ctx); in raid_bdev_write_sb_base_bdev_done()
319 free(ctx); in raid_bdev_write_sb_base_bdev_done()
326 struct raid_bdev_write_sb_ctx *ctx = cb_arg; in raid_bdev_write_superblock_cb() local
336 raid_bdev_write_sb_base_bdev_done(status, ctx); in raid_bdev_write_superblock_cb()
342 struct raid_bdev_write_sb_ctx *ctx = _ctx; in _raid_bdev_write_superblock() local
343 struct raid_bdev *raid_bdev = ctx->raid_bdev; in _raid_bdev_write_superblock()
348 for (i = ctx->submitted; i < raid_bdev->num_base_bdevs; i++) { in _raid_bdev_write_superblock()
352 assert(ctx->remaining > 1); in _raid_bdev_write_superblock()
353 raid_bdev_write_sb_base_bdev_done(0, ctx); in _raid_bdev_write_superblock()
354 ctx->submitted++; in _raid_bdev_write_superblock()
360 raid_bdev_write_superblock_cb, ctx); in _raid_bdev_write_superblock()
365 ctx->wait_entry.bdev = bdev; in _raid_bdev_write_superblock()
366 ctx->wait_entry.cb_fn = _raid_bdev_write_superblock; in _raid_bdev_write_superblock()
367 ctx->wait_entry.cb_arg = ctx; in _raid_bdev_write_superblock()
368 spdk_bdev_queue_io_wait(bdev, base_info->app_thread_ch, &ctx->wait_entry); in _raid_bdev_write_superblock()
372 assert(ctx->remaining > 1); in _raid_bdev_write_superblock()
373 raid_bdev_write_sb_base_bdev_done(rc, ctx); in _raid_bdev_write_superblock()
376 ctx->submitted++; in _raid_bdev_write_superblock()
379 raid_bdev_write_sb_base_bdev_done(0, ctx); in _raid_bdev_write_superblock()
385 struct raid_bdev_write_sb_ctx *ctx; in raid_bdev_write_superblock() local
400 ctx = calloc(1, sizeof(*ctx)); in raid_bdev_write_superblock()
401 if (!ctx) { in raid_bdev_write_superblock()
406 ctx->raid_bdev = raid_bdev; in raid_bdev_write_superblock()
407 ctx->remaining = raid_bdev->num_base_bdevs + 1; in raid_bdev_write_superblock()
408 ctx->cb = cb; in raid_bdev_write_superblock()
409 ctx->cb_ctx = cb_ctx; in raid_bdev_write_superblock()
424 _raid_bdev_write_superblock(ctx); in raid_bdev_write_superblock()