iotests: Add creation test to 153
This patch adds a test case to 153 which tries to overwrite an image (using qemu-img create) while it is in use. Without the original user explicitly sharing the necessary permissions (writing and truncation), this should not be allowed. Signed-off-by: Max Reitz <mreitz@redhat.com> Reviewed-by: Fam Zheng <famz@redhat.com> Message-id: 20180509215336.31304-4-mreitz@redhat.com Signed-off-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
		
							parent
							
								
									b8cf1913a9
								
							
						
					
					
						commit
						f45b638f9f
					
				| @ -137,6 +137,24 @@ for opts1 in "" "read-only=on" "read-only=on,force-share=on"; do | ||||
|         _run_cmd $QEMU_IMG dd          $L if="${TEST_IMG}" of="${TEST_IMG}.convert" bs=512 count=1 | ||||
|         _run_cmd $QEMU_IMG bench       $L -c 1 "${TEST_IMG}" | ||||
|         _run_cmd $QEMU_IMG bench       $L -w -c 1 "${TEST_IMG}" | ||||
| 
 | ||||
|         # qemu-img create does not support -U | ||||
|         if [ -z "$L" ]; then | ||||
|             _run_cmd $QEMU_IMG create -f $IMGFMT "${TEST_IMG}" \ | ||||
|                                       -b ${TEST_IMG}.base | ||||
|             # Read the file format.  It used to be the case that | ||||
|             # file-posix simply truncated the file, but the qcow2 | ||||
|             # driver then failed to format it because it was unable | ||||
|             # to acquire the necessary WRITE permission.  However, the | ||||
|             # truncation was already wrong, and the whole process | ||||
|             # resulted in the file being completely empty and thus its | ||||
|             # format would be detected to be raw. | ||||
|             # So we read it here to see that creation either completed | ||||
|             # successfully (thus the format is qcow2) or it aborted | ||||
|             # before the file was changed at all (thus the format stays | ||||
|             # qcow2). | ||||
|             _img_info -U | grep 'file format' | ||||
|         fi | ||||
|     done | ||||
|     _send_qemu_cmd $h "{ 'execute': 'quit', }" "" | ||||
|     echo | ||||
|  | ||||
| @ -92,6 +92,11 @@ _qemu_img_wrapper bench -w -c 1 TEST_DIR/t.qcow2 | ||||
| qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock | ||||
| Is another process using the image? | ||||
| 
 | ||||
| _qemu_img_wrapper create -f qcow2 TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base | ||||
| qemu-img: TEST_DIR/t.qcow2: Failed to get "write" lock | ||||
| Is another process using the image? | ||||
| file format: IMGFMT | ||||
| 
 | ||||
| == Running utility commands -U == | ||||
| 
 | ||||
| _qemu_io_wrapper -U -c read 0 512 TEST_DIR/t.qcow2 | ||||
| @ -209,6 +214,11 @@ _qemu_img_wrapper bench -w -c 1 TEST_DIR/t.qcow2 | ||||
| qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock | ||||
| Is another process using the image? | ||||
| 
 | ||||
| _qemu_img_wrapper create -f qcow2 TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base | ||||
| qemu-img: TEST_DIR/t.qcow2: Failed to get "write" lock | ||||
| Is another process using the image? | ||||
| file format: IMGFMT | ||||
| 
 | ||||
| == Running utility commands -U == | ||||
| 
 | ||||
| _qemu_io_wrapper -U -c read 0 512 TEST_DIR/t.qcow2 | ||||
| @ -309,6 +319,9 @@ _qemu_img_wrapper bench -c 1 TEST_DIR/t.qcow2 | ||||
| 
 | ||||
| _qemu_img_wrapper bench -w -c 1 TEST_DIR/t.qcow2 | ||||
| 
 | ||||
| _qemu_img_wrapper create -f qcow2 TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base | ||||
| file format: IMGFMT | ||||
| 
 | ||||
| == Running utility commands -U == | ||||
| 
 | ||||
| _qemu_io_wrapper -U -c read 0 512 TEST_DIR/t.qcow2 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Max Reitz
						Max Reitz