diff options
Diffstat (limited to 'fs/afs/write.c')
| -rw-r--r-- | fs/afs/write.c | 9 | 
1 files changed, 8 insertions, 1 deletions
diff --git a/fs/afs/write.c b/fs/afs/write.c index 5e9157d0da29..f447c902318d 100644 --- a/fs/afs/write.c +++ b/fs/afs/write.c @@ -703,7 +703,7 @@ static int afs_writepages_region(struct address_space *mapping,  	struct folio *folio;  	struct page *head_page;  	ssize_t ret; -	int n; +	int n, skips = 0;  	_enter("%llx,%llx,", start, end); @@ -754,8 +754,15 @@ static int afs_writepages_region(struct address_space *mapping,  #ifdef CONFIG_AFS_FSCACHE  				folio_wait_fscache(folio);  #endif +			} else { +				start += folio_size(folio);  			}  			folio_put(folio); +			if (wbc->sync_mode == WB_SYNC_NONE) { +				if (skips >= 5 || need_resched()) +					break; +				skips++; +			}  			continue;  		}  |