All of lore.kernel.org
 help / color / mirror / Atom feed
* [patch 3/10] Allow truncate to discard unmapped buffers
@ 2002-05-05 20:54 Andrew Morton
  0 siblings, 0 replies; only message in thread
From: Andrew Morton @ 2002-05-05 20:54 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: lkml



The buffer state "uptodate, dirty, unmapped" is legal.  It occurs when
a mapped page with attached buffers which is over a hole is dirtied.

So discard_buffer() needs to be able to discard those buffers as well;
otherwise the page ends up clean, with dirty buffers and is unfreeable.


=====================================

--- 2.5.13/fs/buffer.c~truncate-leak	Sun May  5 13:32:00 2002
+++ 2.5.13-akpm/fs/buffer.c	Sun May  5 13:32:37 2002
@@ -1091,17 +1091,15 @@ EXPORT_SYMBOL(set_bh_page);
 /*
  * Called when truncating a buffer on a page completely.
  */
-static void discard_buffer(struct buffer_head * bh)
+static /* inline */ void discard_buffer(struct buffer_head * bh)
 {
-	if (buffer_mapped(bh)) {
-		clear_buffer_dirty(bh);
-		lock_buffer(bh);
-		bh->b_bdev = NULL;
-		clear_buffer_mapped(bh);
-		clear_buffer_req(bh);
-		clear_buffer_new(bh);
-		unlock_buffer(bh);
-	}
+	lock_buffer(bh);
+	clear_buffer_dirty(bh);
+	bh->b_bdev = NULL;
+	clear_buffer_mapped(bh);
+	clear_buffer_req(bh);
+	clear_buffer_new(bh);
+	unlock_buffer(bh);
 }
 
 /**
--- 2.5.13/fs/jbd/transaction.c~truncate-leak	Sun May  5 13:32:00 2002
+++ 2.5.13-akpm/fs/jbd/transaction.c	Sun May  5 13:32:37 2002
@@ -1587,7 +1587,7 @@ static int __journal_try_to_free_buffer(
 		goto out;
 	}
 
-	if (!buffer_uptodate(bh))
+	if (!buffer_uptodate(bh))	/* AKPM: why? */
 		goto out;
 
 	if (jh->b_next_transaction != 0)
@@ -1775,9 +1775,6 @@ static int journal_unmap_buffer(journal_
 
 	BUFFER_TRACE(bh, "entry");
 
-	if (!buffer_mapped(bh))
-		return 1;
-
 	/* It is safe to proceed here without the
 	 * journal_datalist_spinlock because the buffers cannot be
 	 * stolen by try_to_free_buffers as long as we are holding the

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2002-05-05 20:52 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-05-05 20:54 [patch 3/10] Allow truncate to discard unmapped buffers Andrew Morton

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.