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); | 	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) | 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; | 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 READ_SYNC		0 | ||||||
| #define WRITE_SYNC		(REQ_SYNC | REQ_NOIDLE) | #define WRITE_SYNC		(REQ_SYNC | REQ_NOIDLE) | ||||||
| #define WRITE_ODIRECT		REQ_SYNC | #define WRITE_ODIRECT		REQ_SYNC | ||||||
| #define WRITE_FLUSH		(REQ_SYNC | REQ_NOIDLE | REQ_PREFLUSH) | #define WRITE_FLUSH		(REQ_NOIDLE | REQ_PREFLUSH) | ||||||
| #define WRITE_FUA		(REQ_SYNC | REQ_NOIDLE | REQ_FUA) | #define WRITE_FUA		(REQ_NOIDLE | REQ_FUA) | ||||||
| #define WRITE_FLUSH_FUA		(REQ_SYNC | REQ_NOIDLE | REQ_PREFLUSH | REQ_FUA) | #define WRITE_FLUSH_FUA		(REQ_NOIDLE | REQ_PREFLUSH | REQ_FUA) | ||||||
| 
 | 
 | ||||||
| /*
 | /*
 | ||||||
|  * Attribute flags.  These should be or-ed together to figure out what |  * Attribute flags.  These should be or-ed together to figure out what | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Christoph Hellwig
						Christoph Hellwig