forked from mirrors/linux
		
	block: treat REQ_FUA and REQ_PREFLUSH as synchronous
Instead of requiring everyone to specify the REQ_SYNC flag aѕ well. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
		
							parent
							
								
									6f6b29171a
								
							
						
					
					
						commit
						b685d3d65a
					
				
					 2 changed files with 10 additions and 4 deletions
				
			
		|  | @ -216,9 +216,15 @@ static inline bool op_is_write(unsigned int op) | |||
| 	return (op & 1); | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  * Reads are always treated as synchronous, as are requests with the FUA or | ||||
|  * PREFLUSH flag.  Other operations may be marked as synchronous using the | ||||
|  * REQ_SYNC flag. | ||||
|  */ | ||||
| static inline bool op_is_sync(unsigned int op) | ||||
| { | ||||
| 	return (op & REQ_OP_MASK) == REQ_OP_READ || (op & REQ_SYNC); | ||||
| 	return (op & REQ_OP_MASK) == REQ_OP_READ || | ||||
| 		(op & (REQ_SYNC | REQ_FUA | REQ_PREFLUSH)); | ||||
| } | ||||
| 
 | ||||
| typedef unsigned int blk_qc_t; | ||||
|  |  | |||
|  | @ -199,9 +199,9 @@ typedef int (dio_iodone_t)(struct kiocb *iocb, loff_t offset, | |||
| #define READ_SYNC		0 | ||||
| #define WRITE_SYNC		(REQ_SYNC | REQ_NOIDLE) | ||||
| #define WRITE_ODIRECT		REQ_SYNC | ||||
| #define WRITE_FLUSH		(REQ_SYNC | REQ_NOIDLE | REQ_PREFLUSH) | ||||
| #define WRITE_FUA		(REQ_SYNC | REQ_NOIDLE | REQ_FUA) | ||||
| #define WRITE_FLUSH_FUA		(REQ_SYNC | REQ_NOIDLE | REQ_PREFLUSH | REQ_FUA) | ||||
| #define WRITE_FLUSH		(REQ_NOIDLE | REQ_PREFLUSH) | ||||
| #define WRITE_FUA		(REQ_NOIDLE | REQ_FUA) | ||||
| #define WRITE_FLUSH_FUA		(REQ_NOIDLE | REQ_PREFLUSH | REQ_FUA) | ||||
| 
 | ||||
| /*
 | ||||
|  * Attribute flags.  These should be or-ed together to figure out what | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Christoph Hellwig
						Christoph Hellwig