block: Assertions for resize permission
This adds an assertion that ensures that the necessary resize permission has been granted before bdrv_truncate() is called. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Max Reitz <mreitz@redhat.com> Acked-by: Fam Zheng <famz@redhat.com>
This commit is contained in:
		
							parent
							
								
									afa4b29323
								
							
						
					
					
						commit
						c8f6d58edb
					
				
							
								
								
									
										3
									
								
								block.c
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								block.c
									
									
									
									
									
								
							@ -3122,6 +3122,9 @@ int bdrv_truncate(BdrvChild *child, int64_t offset)
 | 
				
			|||||||
    BlockDriverState *bs = child->bs;
 | 
					    BlockDriverState *bs = child->bs;
 | 
				
			||||||
    BlockDriver *drv = bs->drv;
 | 
					    BlockDriver *drv = bs->drv;
 | 
				
			||||||
    int ret;
 | 
					    int ret;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    assert(child->perm & BLK_PERM_RESIZE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!drv)
 | 
					    if (!drv)
 | 
				
			||||||
        return -ENOMEDIUM;
 | 
					        return -ENOMEDIUM;
 | 
				
			||||||
    if (!drv->bdrv_truncate)
 | 
					    if (!drv->bdrv_truncate)
 | 
				
			||||||
 | 
				
			|||||||
@ -1339,6 +1339,7 @@ static int coroutine_fn bdrv_aligned_pwritev(BdrvChild *child,
 | 
				
			|||||||
    assert(req->overlap_offset <= offset);
 | 
					    assert(req->overlap_offset <= offset);
 | 
				
			||||||
    assert(offset + bytes <= req->overlap_offset + req->overlap_bytes);
 | 
					    assert(offset + bytes <= req->overlap_offset + req->overlap_bytes);
 | 
				
			||||||
    assert(child->perm & BLK_PERM_WRITE);
 | 
					    assert(child->perm & BLK_PERM_WRITE);
 | 
				
			||||||
 | 
					    assert(end_sector <= bs->total_sectors || child->perm & BLK_PERM_RESIZE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ret = notifier_with_return_list_notify(&bs->before_write_notifiers, req);
 | 
					    ret = notifier_with_return_list_notify(&bs->before_write_notifiers, req);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user