mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	mm: fadvise: document the fadvise(FADV_DONTNEED) behaviour for partial pages
A random seek IO benchmark appeared to regress because of a change to readahead but the real problem was the benchmark. To ensure the IO request accesssed disk, it used fadvise(FADV_DONTNEED) on a block boundary (512K) but the hint is ignored by the kernel. This is correct but not necessarily obvious behaviour. As much as I dislike comment patches, the explanation for this behaviour predates current git history. Clarify why it behaves like this in case someone "fixes" fadvise or readahead for the wrong reasons. Signed-off-by: Mel Gorman <mgorman@suse.de> Cc: Michael Kerrisk <mtk.manpages@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									7e5b528b4c
								
							
						
					
					
						commit
						441c228f81
					
				
					 1 changed files with 5 additions and 1 deletions
				
			
		| 
						 | 
					@ -117,7 +117,11 @@ SYSCALL_DEFINE4(fadvise64_64, int, fd, loff_t, offset, loff_t, len, int, advice)
 | 
				
			||||||
			__filemap_fdatawrite_range(mapping, offset, endbyte,
 | 
								__filemap_fdatawrite_range(mapping, offset, endbyte,
 | 
				
			||||||
						   WB_SYNC_NONE);
 | 
											   WB_SYNC_NONE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		/* First and last FULL page! */
 | 
							/*
 | 
				
			||||||
 | 
							 * First and last FULL page! Partial pages are deliberately
 | 
				
			||||||
 | 
							 * preserved on the expectation that it is better to preserve
 | 
				
			||||||
 | 
							 * needed memory than to discard unneeded memory.
 | 
				
			||||||
 | 
							 */
 | 
				
			||||||
		start_index = (offset+(PAGE_CACHE_SIZE-1)) >> PAGE_CACHE_SHIFT;
 | 
							start_index = (offset+(PAGE_CACHE_SIZE-1)) >> PAGE_CACHE_SHIFT;
 | 
				
			||||||
		end_index = (endbyte >> PAGE_CACHE_SHIFT);
 | 
							end_index = (endbyte >> PAGE_CACHE_SHIFT);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue