All of lore.kernel.org
 help / color / mirror / Atom feed
* 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.