block: introduce bdrv_can_set_read_only()
Introduce check function for setting read_only flags. Will return < 0 on error, with appropriate Error value set. Does not alter any flags. Signed-off-by: Jeff Cody <jcody@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: John Snow <jsnow@redhat.com> Message-id: e2bba34ac3bc76a0c42adc390413f358ae0566e8.1491597120.git.jcody@redhat.com
This commit is contained in:
		
							parent
							
								
									93ed524e3d
								
							
						
					
					
						commit
						45803a0396
					
				
							
								
								
									
										14
									
								
								block.c
								
								
								
								
							
							
						
						
									
										14
									
								
								block.c
								
								
								
								
							| 
						 | 
					@ -197,7 +197,7 @@ bool bdrv_is_read_only(BlockDriverState *bs)
 | 
				
			||||||
    return bs->read_only;
 | 
					    return bs->read_only;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int bdrv_set_read_only(BlockDriverState *bs, bool read_only, Error **errp)
 | 
					int bdrv_can_set_read_only(BlockDriverState *bs, bool read_only, Error **errp)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    /* Do not set read_only if copy_on_read is enabled */
 | 
					    /* Do not set read_only if copy_on_read is enabled */
 | 
				
			||||||
    if (bs->copy_on_read && read_only) {
 | 
					    if (bs->copy_on_read && read_only) {
 | 
				
			||||||
| 
						 | 
					@ -213,6 +213,18 @@ int bdrv_set_read_only(BlockDriverState *bs, bool read_only, Error **errp)
 | 
				
			||||||
        return -EPERM;
 | 
					        return -EPERM;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int bdrv_set_read_only(BlockDriverState *bs, bool read_only, Error **errp)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    int ret = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ret = bdrv_can_set_read_only(bs, read_only, errp);
 | 
				
			||||||
 | 
					    if (ret < 0) {
 | 
				
			||||||
 | 
					        return ret;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    bs->read_only = read_only;
 | 
					    bs->read_only = read_only;
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -434,6 +434,7 @@ int bdrv_is_allocated_above(BlockDriverState *top, BlockDriverState *base,
 | 
				
			||||||
                            int64_t sector_num, int nb_sectors, int *pnum);
 | 
					                            int64_t sector_num, int nb_sectors, int *pnum);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool bdrv_is_read_only(BlockDriverState *bs);
 | 
					bool bdrv_is_read_only(BlockDriverState *bs);
 | 
				
			||||||
 | 
					int bdrv_can_set_read_only(BlockDriverState *bs, bool read_only, Error **errp);
 | 
				
			||||||
int bdrv_set_read_only(BlockDriverState *bs, bool read_only, Error **errp);
 | 
					int bdrv_set_read_only(BlockDriverState *bs, bool read_only, Error **errp);
 | 
				
			||||||
bool bdrv_is_sg(BlockDriverState *bs);
 | 
					bool bdrv_is_sg(BlockDriverState *bs);
 | 
				
			||||||
bool bdrv_is_inserted(BlockDriverState *bs);
 | 
					bool bdrv_is_inserted(BlockDriverState *bs);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue