blklogwrites.c (fcb7e040f5c69ca1f0678f991ab5354488a9e192) | blklogwrites.c (c86422c5549c0983b4b4525b8f56a1c69dd67aa1) |
---|---|
1/* 2 * Write logging blk driver based on blkverify and blkdebug. 3 * 4 * Copyright (c) 2017 Tuomas Tynkkynen <tuomas@tuxera.com> 5 * Copyright (c) 2018 Aapo Vienamo <aapo@tuxera.com> 6 * Copyright (c) 2018 Ari Sundholm <ari@tuxera.com> 7 * 8 * This work is licensed under the terms of the GNU GPL, version 2 or later. --- 253 unchanged lines hidden (view full) --- 262static void blk_log_writes_close(BlockDriverState *bs) 263{ 264 BDRVBlkLogWritesState *s = bs->opaque; 265 266 bdrv_unref_child(bs, s->log_file); 267 s->log_file = NULL; 268} 269 | 1/* 2 * Write logging blk driver based on blkverify and blkdebug. 3 * 4 * Copyright (c) 2017 Tuomas Tynkkynen <tuomas@tuxera.com> 5 * Copyright (c) 2018 Aapo Vienamo <aapo@tuxera.com> 6 * Copyright (c) 2018 Ari Sundholm <ari@tuxera.com> 7 * 8 * This work is licensed under the terms of the GNU GPL, version 2 or later. --- 253 unchanged lines hidden (view full) --- 262static void blk_log_writes_close(BlockDriverState *bs) 263{ 264 BDRVBlkLogWritesState *s = bs->opaque; 265 266 bdrv_unref_child(bs, s->log_file); 267 s->log_file = NULL; 268} 269 |
270static int64_t blk_log_writes_getlength(BlockDriverState *bs) | 270static int64_t coroutine_fn blk_log_writes_co_getlength(BlockDriverState *bs) |
271{ | 271{ |
272 return bdrv_getlength(bs->file->bs); | 272 return bdrv_co_getlength(bs->file->bs); |
273} 274 275static void blk_log_writes_child_perm(BlockDriverState *bs, BdrvChild *c, 276 BdrvChildRole role, 277 BlockReopenQueue *ro_q, 278 uint64_t perm, uint64_t shrd, 279 uint64_t *nperm, uint64_t *nshrd) 280{ --- 212 unchanged lines hidden (view full) --- 493}; 494 495static BlockDriver bdrv_blk_log_writes = { 496 .format_name = "blklogwrites", 497 .instance_size = sizeof(BDRVBlkLogWritesState), 498 499 .bdrv_open = blk_log_writes_open, 500 .bdrv_close = blk_log_writes_close, | 273} 274 275static void blk_log_writes_child_perm(BlockDriverState *bs, BdrvChild *c, 276 BdrvChildRole role, 277 BlockReopenQueue *ro_q, 278 uint64_t perm, uint64_t shrd, 279 uint64_t *nperm, uint64_t *nshrd) 280{ --- 212 unchanged lines hidden (view full) --- 493}; 494 495static BlockDriver bdrv_blk_log_writes = { 496 .format_name = "blklogwrites", 497 .instance_size = sizeof(BDRVBlkLogWritesState), 498 499 .bdrv_open = blk_log_writes_open, 500 .bdrv_close = blk_log_writes_close, |
501 .bdrv_getlength = blk_log_writes_getlength, | 501 .bdrv_co_getlength = blk_log_writes_co_getlength, |
502 .bdrv_child_perm = blk_log_writes_child_perm, 503 .bdrv_refresh_limits = blk_log_writes_refresh_limits, 504 505 .bdrv_co_preadv = blk_log_writes_co_preadv, 506 .bdrv_co_pwritev = blk_log_writes_co_pwritev, 507 .bdrv_co_pwrite_zeroes = blk_log_writes_co_pwrite_zeroes, 508 .bdrv_co_flush_to_disk = blk_log_writes_co_flush_to_disk, 509 .bdrv_co_pdiscard = blk_log_writes_co_pdiscard, 510 511 .is_filter = true, 512 .strong_runtime_opts = blk_log_writes_strong_runtime_opts, 513}; 514 515static void bdrv_blk_log_writes_init(void) 516{ 517 bdrv_register(&bdrv_blk_log_writes); 518} 519 520block_init(bdrv_blk_log_writes_init); | 502 .bdrv_child_perm = blk_log_writes_child_perm, 503 .bdrv_refresh_limits = blk_log_writes_refresh_limits, 504 505 .bdrv_co_preadv = blk_log_writes_co_preadv, 506 .bdrv_co_pwritev = blk_log_writes_co_pwritev, 507 .bdrv_co_pwrite_zeroes = blk_log_writes_co_pwrite_zeroes, 508 .bdrv_co_flush_to_disk = blk_log_writes_co_flush_to_disk, 509 .bdrv_co_pdiscard = blk_log_writes_co_pdiscard, 510 511 .is_filter = true, 512 .strong_runtime_opts = blk_log_writes_strong_runtime_opts, 513}; 514 515static void bdrv_blk_log_writes_init(void) 516{ 517 bdrv_register(&bdrv_blk_log_writes); 518} 519 520block_init(bdrv_blk_log_writes_init); |