* reiserfs set_page_dirty vs truncate race?
@ 2006-10-10 7:44 Nick Piggin
2006-10-10 14:29 ` Vladimir V. Saveliev
0 siblings, 1 reply; 3+ messages in thread
From: Nick Piggin @ 2006-10-10 7:44 UTC (permalink / raw)
To: reiserfs-list
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);
}
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: reiserfs set_page_dirty vs truncate race?
2006-10-10 7:44 reiserfs set_page_dirty vs truncate race? Nick Piggin
@ 2006-10-10 14:29 ` Vladimir V. Saveliev
2006-10-10 15:08 ` Nick Piggin
0 siblings, 1 reply; 3+ messages in thread
From: Vladimir V. Saveliev @ 2006-10-10 14:29 UTC (permalink / raw)
To: Nick Piggin; +Cc: reiserfs-list
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);
> }
>
>
>
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: reiserfs set_page_dirty vs truncate race?
2006-10-10 14:29 ` Vladimir V. Saveliev
@ 2006-10-10 15:08 ` Nick Piggin
0 siblings, 0 replies; 3+ messages in thread
From: Nick Piggin @ 2006-10-10 15:08 UTC (permalink / raw)
To: Vladimir V. Saveliev; +Cc: reiserfs-list
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 <npiggin@suse.de>
Thanks,
Nick
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2006-10-10 15:08 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-10-10 7:44 reiserfs set_page_dirty vs truncate race? Nick Piggin
2006-10-10 14:29 ` Vladimir V. Saveliev
2006-10-10 15:08 ` Nick Piggin
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.