block: Formats don't need CONSISTENT_READ with NO_IO
Commit 1f4ad7d fixed 'qemu-img info' for raw images that are currently in use as a mirror target. It is not enough for image formats, though, as these still unconditionally request BLK_PERM_CONSISTENT_READ. As this permission is geared towards whether the guest-visible data is consistent, and has no impact on whether the metadata is sane, and 'qemu-img info' does not read guest-visible data (except for the raw format), it makes sense to not require BLK_PERM_CONSISTENT_READ if there is not going to be any guest I/O performed, regardless of image format. Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
		
							parent
							
								
									281f327487
								
							
						
					
					
						commit
						5fbfabd313
					
				
							
								
								
									
										4
									
								
								block.c
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								block.c
									
									
									
									
									
								
							@ -1924,6 +1924,8 @@ void bdrv_format_default_perms(BlockDriverState *bs, BdrvChild *c,
 | 
				
			|||||||
    assert(role == &child_backing || role == &child_file);
 | 
					    assert(role == &child_backing || role == &child_file);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!backing) {
 | 
					    if (!backing) {
 | 
				
			||||||
 | 
					        int flags = bdrv_reopen_get_flags(reopen_queue, bs);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /* Apart from the modifications below, the same permissions are
 | 
					        /* Apart from the modifications below, the same permissions are
 | 
				
			||||||
         * forwarded and left alone as for filters */
 | 
					         * forwarded and left alone as for filters */
 | 
				
			||||||
        bdrv_filter_default_perms(bs, c, role, reopen_queue, perm, shared,
 | 
					        bdrv_filter_default_perms(bs, c, role, reopen_queue, perm, shared,
 | 
				
			||||||
@ -1936,7 +1938,9 @@ void bdrv_format_default_perms(BlockDriverState *bs, BdrvChild *c,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        /* bs->file always needs to be consistent because of the metadata. We
 | 
					        /* bs->file always needs to be consistent because of the metadata. We
 | 
				
			||||||
         * can never allow other users to resize or write to it. */
 | 
					         * can never allow other users to resize or write to it. */
 | 
				
			||||||
 | 
					        if (!(flags & BDRV_O_NO_IO)) {
 | 
				
			||||||
            perm |= BLK_PERM_CONSISTENT_READ;
 | 
					            perm |= BLK_PERM_CONSISTENT_READ;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        shared &= ~(BLK_PERM_WRITE | BLK_PERM_RESIZE);
 | 
					        shared &= ~(BLK_PERM_WRITE | BLK_PERM_RESIZE);
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        /* We want consistent read from backing files if the parent needs it.
 | 
					        /* We want consistent read from backing files if the parent needs it.
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user