reiserfs set_page_dirty vs truncate race?
Hi, I wonder if resierfs needs to be careful 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); }
Re: Reiser4: Running out of room still causes corruption
On Tuesday 10 October 2006 18:48, Daniel Kasak wrote: I'd had more problems with filesystem corruption after running out of space. So have I, while using Ktorrent on one occasion and rsync to update a portage tree on the other. Both caused fairly massive filesystem corruption, i.e. 200+ files or directories being described as recoverable errors, yet they produced error messages when fsck.reiser4 was run with --fix. Then 200+ objects turned up in lost+found. I do hope this problem can be fixed because in all other features reiser4 is an _excellent_ file system. If there is anything I, as an experienced user, but not much of a programmer any more, can do please ask. Sorry, but I have not made any records of error messages. I have a spare disk on the end of a USB wire with which I am happy to experiment. -- Christopher Sawtell.
Re: reiserfs set_page_dirty vs truncate race?
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); }
Re: reiserfs set_page_dirty vs truncate race?
On Tue, Oct 10, 2006 at 06:29:27PM +0400, Vladimir V. Saveliev wrote: 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. So they may operate on truncated pages? Then you probably need the fix. Anyway, if you would like to merge it, you may add a Signed-off-by: Nick Piggin [EMAIL PROTECTED] Thanks, Nick
Recommendation for traders: STR0NG buy. [9 October, 2006]
hi do not respond
Hans Reiser arrested...
http://sfgate.com/cgi-bin/article.cgi?f=/c/a/2006/10/10/BAGERLM3RR15.DTL posted on Slashdot. I hope reiser4 development still continues despite this...