diff options
Diffstat (limited to 'fs/nilfs2/inode.c')
| -rw-r--r-- | fs/nilfs2/inode.c | 7 | 
1 files changed, 6 insertions, 1 deletions
diff --git a/fs/nilfs2/inode.c b/fs/nilfs2/inode.c index 6252b173a465..d071e7f23de2 100644 --- a/fs/nilfs2/inode.c +++ b/fs/nilfs2/inode.c @@ -24,6 +24,7 @@  #include <linux/buffer_head.h>  #include <linux/gfp.h>  #include <linux/mpage.h> +#include <linux/pagemap.h>  #include <linux/writeback.h>  #include <linux/aio.h>  #include "nilfs.h" @@ -219,10 +220,10 @@ static int nilfs_writepage(struct page *page, struct writeback_control *wbc)  static int nilfs_set_page_dirty(struct page *page)  { +	struct inode *inode = page->mapping->host;  	int ret = __set_page_dirty_nobuffers(page);  	if (page_has_buffers(page)) { -		struct inode *inode = page->mapping->host;  		unsigned nr_dirty = 0;  		struct buffer_head *bh, *head; @@ -245,6 +246,10 @@ static int nilfs_set_page_dirty(struct page *page)  		if (nr_dirty)  			nilfs_set_file_dirty(inode, nr_dirty); +	} else if (ret) { +		unsigned nr_dirty = 1 << (PAGE_CACHE_SHIFT - inode->i_blkbits); + +		nilfs_set_file_dirty(inode, nr_dirty);  	}  	return ret;  }  |