Hello
On Tuesday 10 October 2006 11:44, Nick Piggin wrote:
> Hi,
>
> I wonder if resierfs needs to be careful about truncated pages,
I think it is assumed that __set_page_dirty_nobuffers and
__set_page_dirty_buffers care about truncated pages.
> or does
> your .invalidatepage provide synchronisation against set_page_dirty somehow?
> --
> Index: linux-2.6/fs/reiserfs/inode.c
> ===================================================================
> --- linux-2.6.orig/fs/reiserfs/inode.c
> +++ linux-2.6/fs/reiserfs/inode.c
> @@ -2840,10 +2840,14 @@ static void reiserfs_invalidatepage(stru
>
> static int reiserfs_set_page_dirty(struct page *page)
> {
> - struct inode *inode = page->mapping->host;
> - if (reiserfs_file_data_log(inode)) {
> - SetPageChecked(page);
> - return __set_page_dirty_nobuffers(page);
> + struct address_space *mapping = page->mapping;
> + struct inode *inode;
> + if (mapping) {
> + inode = mapping->host;
> + if (reiserfs_file_data_log(inode)) {
> + SetPageChecked(page);
> + return __set_page_dirty_nobuffers(page);
> + }
> }
> return __set_page_dirty_buffers(page);
> }
>
>
>