 4472b590c7
			
		
	
	
		4472b590c7
		
	
	
	
	
		
			
			This patch changes the prefetch API so that file systems must now provide a set of block numbers, rather than a set of buffers. The result is a leaner and more well-defined API; linear computation of the range of blocks to prefetch; duplicates no longer interfering with the prefetch process; guaranteed inclusion of the block needed next into the prefetch range; and, limits and policy decisions better established by libminixfs now actually being moved into libminixfs. Change-Id: I7e44daf2d2d164bc5e2f1473ad717f3ff0f0a77f
		
			
				
	
	
		
			36 lines
		
	
	
		
			959 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			959 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /* Created (MFS based):
 | |
|  *   February 2010 (Evgeniy Ivanov)
 | |
|  */
 | |
| 
 | |
| #include "fs.h"
 | |
| #include "inode.h"
 | |
| #include "super.h"
 | |
| #include <assert.h>
 | |
| 
 | |
| /*===========================================================================*
 | |
|  *				fs_sync					     *
 | |
|  *===========================================================================*/
 | |
| void fs_sync(void)
 | |
| {
 | |
| /* Perform the sync() system call.  Flush all the tables.
 | |
|  * The order in which the various tables are flushed is critical.  The
 | |
|  * blocks must be flushed last, since rw_inode() leaves its results in
 | |
|  * the block cache.
 | |
|  */
 | |
|   struct inode *rip;
 | |
| 
 | |
|   if (superblock->s_rd_only)
 | |
| 	return; /* nothing to sync */
 | |
| 
 | |
|   /* Write all the dirty inodes to the disk. */
 | |
|   for(rip = &inode[0]; rip < &inode[NR_INODES]; rip++)
 | |
| 	if(rip->i_count > 0 && rip->i_dirt == IN_DIRTY) rw_inode(rip, WRITING);
 | |
| 
 | |
|   lmfs_flushall();
 | |
| 
 | |
|   if (superblock->s_dev != NO_DEV) {
 | |
| 	superblock->s_wtime = clock_time(NULL);
 | |
| 	write_super(superblock);
 | |
|   }
 | |
| }
 |