block: Use CAFs in block status functions
Use the child access functions in the block status inquiry functions as appropriate. Signed-off-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
		
							parent
							
								
									93393e698c
								
							
						
					
					
						commit
						cb8503159a
					
				
							
								
								
									
										19
									
								
								block/io.c
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								block/io.c
									
									
									
									
									
								
							| @ -2409,9 +2409,10 @@ static int coroutine_fn bdrv_co_block_status(BlockDriverState *bs, | |||||||
|     if (ret & (BDRV_BLOCK_DATA | BDRV_BLOCK_ZERO)) { |     if (ret & (BDRV_BLOCK_DATA | BDRV_BLOCK_ZERO)) { | ||||||
|         ret |= BDRV_BLOCK_ALLOCATED; |         ret |= BDRV_BLOCK_ALLOCATED; | ||||||
|     } else if (want_zero && bs->drv->supports_backing) { |     } else if (want_zero && bs->drv->supports_backing) { | ||||||
|         if (bs->backing) { |         BlockDriverState *cow_bs = bdrv_cow_bs(bs); | ||||||
|             BlockDriverState *bs2 = bs->backing->bs; | 
 | ||||||
|             int64_t size2 = bdrv_getlength(bs2); |         if (cow_bs) { | ||||||
|  |             int64_t size2 = bdrv_getlength(cow_bs); | ||||||
| 
 | 
 | ||||||
|             if (size2 >= 0 && offset >= size2) { |             if (size2 >= 0 && offset >= size2) { | ||||||
|                 ret |= BDRV_BLOCK_ZERO; |                 ret |= BDRV_BLOCK_ZERO; | ||||||
| @ -2479,7 +2480,7 @@ static int coroutine_fn bdrv_co_block_status_above(BlockDriverState *bs, | |||||||
|     bool first = true; |     bool first = true; | ||||||
| 
 | 
 | ||||||
|     assert(bs != base); |     assert(bs != base); | ||||||
|     for (p = bs; p != base; p = backing_bs(p)) { |     for (p = bs; p != base; p = bdrv_filter_or_cow_bs(p)) { | ||||||
|         ret = bdrv_co_block_status(p, want_zero, offset, bytes, pnum, map, |         ret = bdrv_co_block_status(p, want_zero, offset, bytes, pnum, map, | ||||||
|                                    file); |                                    file); | ||||||
|         if (ret < 0) { |         if (ret < 0) { | ||||||
| @ -2553,7 +2554,7 @@ int bdrv_block_status_above(BlockDriverState *bs, BlockDriverState *base, | |||||||
| int bdrv_block_status(BlockDriverState *bs, int64_t offset, int64_t bytes, | int bdrv_block_status(BlockDriverState *bs, int64_t offset, int64_t bytes, | ||||||
|                       int64_t *pnum, int64_t *map, BlockDriverState **file) |                       int64_t *pnum, int64_t *map, BlockDriverState **file) | ||||||
| { | { | ||||||
|     return bdrv_block_status_above(bs, backing_bs(bs), |     return bdrv_block_status_above(bs, bdrv_filter_or_cow_bs(bs), | ||||||
|                                    offset, bytes, pnum, map, file); |                                    offset, bytes, pnum, map, file); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -2563,9 +2564,9 @@ int coroutine_fn bdrv_is_allocated(BlockDriverState *bs, int64_t offset, | |||||||
|     int ret; |     int ret; | ||||||
|     int64_t dummy; |     int64_t dummy; | ||||||
| 
 | 
 | ||||||
|     ret = bdrv_common_block_status_above(bs, backing_bs(bs), false, offset, |     ret = bdrv_common_block_status_above(bs, bdrv_filter_or_cow_bs(bs), false, | ||||||
|                                          bytes, pnum ? pnum : &dummy, NULL, |                                          offset, bytes, pnum ? pnum : &dummy, | ||||||
|                                          NULL); |                                          NULL, NULL); | ||||||
|     if (ret < 0) { |     if (ret < 0) { | ||||||
|         return ret; |         return ret; | ||||||
|     } |     } | ||||||
| @ -2628,7 +2629,7 @@ int bdrv_is_allocated_above(BlockDriverState *top, | |||||||
|             break; |             break; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         intermediate = backing_bs(intermediate); |         intermediate = bdrv_filter_or_cow_bs(intermediate); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     *pnum = n; |     *pnum = n; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Max Reitz
						Max Reitz