Add flag to indicate external users to block device
Certain operations such as drive_del or resize cannot be performed while external users (eg. block migration) reference the block device. Add a flag to indicate that. Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
		
							parent
							
								
									f48905d44f
								
							
						
					
					
						commit
						db593f2565
					
				
							
								
								
									
										11
									
								
								block.c
								
								
								
								
							
							
						
						
									
										11
									
								
								block.c
								
								
								
								
							| 
						 | 
				
			
			@ -2774,6 +2774,17 @@ int64_t bdrv_get_dirty_count(BlockDriverState *bs)
 | 
			
		|||
    return bs->dirty_count;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void bdrv_set_in_use(BlockDriverState *bs, int in_use)
 | 
			
		||||
{
 | 
			
		||||
    assert(bs->in_use != in_use);
 | 
			
		||||
    bs->in_use = in_use;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int bdrv_in_use(BlockDriverState *bs)
 | 
			
		||||
{
 | 
			
		||||
    return bs->in_use;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int bdrv_img_create(const char *filename, const char *fmt,
 | 
			
		||||
                    const char *base_filename, const char *base_fmt,
 | 
			
		||||
                    char *options, uint64_t img_size, int flags)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										2
									
								
								block.h
								
								
								
								
							
							
						
						
									
										2
									
								
								block.h
								
								
								
								
							| 
						 | 
				
			
			@ -241,6 +241,8 @@ void bdrv_reset_dirty(BlockDriverState *bs, int64_t cur_sector,
 | 
			
		|||
                      int nr_sectors);
 | 
			
		||||
int64_t bdrv_get_dirty_count(BlockDriverState *bs);
 | 
			
		||||
 | 
			
		||||
void bdrv_set_in_use(BlockDriverState *bs, int in_use);
 | 
			
		||||
int bdrv_in_use(BlockDriverState *bs);
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    BLKDBG_L1_UPDATE,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -199,6 +199,7 @@ struct BlockDriverState {
 | 
			
		|||
    char device_name[32];
 | 
			
		||||
    unsigned long *dirty_bitmap;
 | 
			
		||||
    int64_t dirty_count;
 | 
			
		||||
    int in_use; /* users other than guest access, eg. block migration */
 | 
			
		||||
    QTAILQ_ENTRY(BlockDriverState) list;
 | 
			
		||||
    void *private;
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue