mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +03:00 
			
		
		
		
	Set the maximum ZVOL transfer size correctly
ZoL had been setting max_sectors to UINT_MAX, but until Linux 3.19, it the kernel artifically capped it at 1024 (BLK_DEF_MAX_SECTORS). This cap was removed in torvalds/linux@34b48db. This patch changes it to DMU_MAX_ACCESS (in sectors) and also changes the ASSERT in dmu_tx_hold_write() to allow the maximum transfer size. Signed-off-by: Tim Chase <tim@chase2k.com> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #3212
This commit is contained in:
		
							parent
							
								
									7b4536c710
								
							
						
					
					
						commit
						ded576e28f
					
				| @ -420,7 +420,7 @@ dmu_tx_hold_write(dmu_tx_t *tx, uint64_t object, uint64_t off, int len) | |||||||
| 	dmu_tx_hold_t *txh; | 	dmu_tx_hold_t *txh; | ||||||
| 
 | 
 | ||||||
| 	ASSERT(tx->tx_txg == 0); | 	ASSERT(tx->tx_txg == 0); | ||||||
| 	ASSERT(len < DMU_MAX_ACCESS); | 	ASSERT(len <= DMU_MAX_ACCESS); | ||||||
| 	ASSERT(len == 0 || UINT64_MAX - off >= len - 1); | 	ASSERT(len == 0 || UINT64_MAX - off >= len - 1); | ||||||
| 
 | 
 | ||||||
| 	txh = dmu_tx_hold_object_impl(tx, tx->tx_objset, | 	txh = dmu_tx_hold_object_impl(tx, tx->tx_objset, | ||||||
|  | |||||||
| @ -1389,7 +1389,7 @@ __zvol_create_minor(const char *name, boolean_t ignore_snapdev) | |||||||
| 
 | 
 | ||||||
| 	set_capacity(zv->zv_disk, zv->zv_volsize >> 9); | 	set_capacity(zv->zv_disk, zv->zv_volsize >> 9); | ||||||
| 
 | 
 | ||||||
| 	blk_queue_max_hw_sectors(zv->zv_queue, UINT_MAX); | 	blk_queue_max_hw_sectors(zv->zv_queue, DMU_MAX_ACCESS / 512); | ||||||
| 	blk_queue_max_segments(zv->zv_queue, UINT16_MAX); | 	blk_queue_max_segments(zv->zv_queue, UINT16_MAX); | ||||||
| 	blk_queue_max_segment_size(zv->zv_queue, UINT_MAX); | 	blk_queue_max_segment_size(zv->zv_queue, UINT_MAX); | ||||||
| 	blk_queue_physical_block_size(zv->zv_queue, zv->zv_volblocksize); | 	blk_queue_physical_block_size(zv->zv_queue, zv->zv_volblocksize); | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Tim Chase
						Tim Chase