[XFS] only mark buffers done when all pages are uptodate in addition
replace PBF_NONE with an inverted PBF_DONE, so it's like all the other flags. SGI-PV: 942609 SGI-Modid: xfs-linux:xfs-kern:199136a Signed-off-by: Christoph Hellwig <hch@sgi.com> Signed-off-by: Nathan Scott <nathans@sgi.com>
This commit is contained in:
		
							parent
							
								
									d0cfb37305
								
							
						
					
					
						commit
						c86e711ceb
					
				| @ -286,7 +286,7 @@ _pagebuf_initialize( | ||||
| 	 * most cases but may be reset (e.g. XFS recovery). | ||||
| 	 */ | ||||
| 	pb->pb_buffer_length = pb->pb_count_desired = range_length; | ||||
| 	pb->pb_flags = flags | PBF_NONE; | ||||
| 	pb->pb_flags = flags; | ||||
| 	pb->pb_bn = XFS_BUF_DADDR_NULL; | ||||
| 	atomic_set(&pb->pb_pin_count, 0); | ||||
| 	init_waitqueue_head(&pb->pb_waiters); | ||||
| @ -458,8 +458,8 @@ _pagebuf_lookup_pages( | ||||
| 			unlock_page(bp->pb_pages[i]); | ||||
| 	} | ||||
| 
 | ||||
| 	if (page_count) | ||||
| 		bp->pb_flags &= ~PBF_NONE; | ||||
| 	if (page_count == bp->pb_page_count) | ||||
| 		bp->pb_flags |= PBF_DONE; | ||||
| 
 | ||||
| 	PB_TRACE(bp, "lookup_pages", (long)page_count); | ||||
| 	return error; | ||||
| @ -1119,7 +1119,7 @@ pagebuf_iodone( | ||||
| { | ||||
| 	pb->pb_flags &= ~(PBF_READ | PBF_WRITE); | ||||
| 	if (pb->pb_error == 0) | ||||
| 		pb->pb_flags &= ~PBF_NONE; | ||||
| 		pb->pb_flags |= PBF_DONE; | ||||
| 
 | ||||
| 	PB_TRACE(pb, "iodone", pb->pb_iodone); | ||||
| 
 | ||||
|  | ||||
| @ -70,7 +70,7 @@ typedef enum page_buf_flags_e {		/* pb_flags values */ | ||||
| 	PBF_WRITE = (1 << 1),	/* buffer intended for writing to device   */ | ||||
| 	PBF_MAPPED = (1 << 2),  /* buffer mapped (pb_addr valid)           */ | ||||
| 	PBF_ASYNC = (1 << 4),   /* initiator will not wait for completion  */ | ||||
| 	PBF_NONE = (1 << 5),    /* buffer not read at all                  */ | ||||
| 	PBF_DONE = (1 << 5),    /* all pages in the buffer uptodate	   */ | ||||
| 	PBF_DELWRI = (1 << 6),  /* buffer has dirty pages                  */ | ||||
| 	PBF_STALE = (1 << 7),	/* buffer has been staled, do not find it  */ | ||||
| 	PBF_FS_MANAGED = (1 << 8),  /* filesystem controls freeing memory  */ | ||||
| @ -371,9 +371,9 @@ extern void pagebuf_trace( | ||||
| #define XFS_BUF_GETERROR(x)	 pagebuf_geterror(x) | ||||
| #define XFS_BUF_ISERROR(x)	 (pagebuf_geterror(x)?1:0) | ||||
| 
 | ||||
| #define XFS_BUF_DONE(x)		 ((x)->pb_flags &= ~PBF_NONE) | ||||
| #define XFS_BUF_UNDONE(x)	 ((x)->pb_flags |= PBF_NONE) | ||||
| #define XFS_BUF_ISDONE(x)	 (((x)->pb_flags & PBF_NONE) == 0) | ||||
| #define XFS_BUF_DONE(x)		 ((x)->pb_flags |= PBF_DONE) | ||||
| #define XFS_BUF_UNDONE(x)	 ((x)->pb_flags &= ~PBF_DONE) | ||||
| #define XFS_BUF_ISDONE(x)	 ((x)->pb_flags & PBF_DONE) | ||||
| 
 | ||||
| #define XFS_BUF_BUSY(x)		 do { } while (0) | ||||
| #define XFS_BUF_UNBUSY(x)	 do { } while (0) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user