public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: David Howells <dhowells@redhat.com>
To: torvalds@osdl.org, akpm@osdl.org
Cc: linux-kernel@vger.kernel.org, reiserfs-dev@namesys.com,
	Olof Johansson <olof@lixom.net>,
	"Rafael J. Wysocki" <rjw@sisk.pl>,
	dhowells@redhat.com
Subject: [PATCH] ReiserFS: Make sure all dentries refs are released before calling kill_block_super() [try #2]
Date: Wed, 09 Aug 2006 14:43:26 +0100	[thread overview]
Message-ID: <912.1155131006@warthog.cambridge.redhat.com> (raw)
In-Reply-To: 20060804192540.17098.39244.stgit@warthog.cambridge.redhat.com


Make sure all dentries refs are released before calling kill_block_super() so
that the assumption that generic_shutdown_super() can completely destroy the
dentry tree for there will be no external references holds true.

What was being done in the put_super() superblock op, is now done in the
kill_sb() filesystem op instead, prior to calling kill_block_super().


Changes made in [try #2]:

 (*) reiserfs_kill_sb() now checks that the superblock FS info pointer is set
     before trying to dereference it.

Signed-Off-By: David Howells <dhowells@redhat.com>
---

 fs/reiserfs/super.c |   31 ++++++++++++++++++++-----------
 1 files changed, 20 insertions(+), 11 deletions(-)

diff --git a/fs/reiserfs/super.c b/fs/reiserfs/super.c
index 5567328..c6e327a 100644
--- a/fs/reiserfs/super.c
+++ b/fs/reiserfs/super.c
@@ -430,22 +430,31 @@ int remove_save_link(struct inode *inode
 	return journal_end(&th, inode->i_sb, JOURNAL_PER_BALANCE_CNT);
 }
 
+static void reiserfs_kill_sb(struct super_block *s)
+{
+	if (REISERFS_SB(s)) {
+		if (REISERFS_SB(s)->xattr_root) {
+			d_invalidate(REISERFS_SB(s)->xattr_root);
+			dput(REISERFS_SB(s)->xattr_root);
+			REISERFS_SB(s)->xattr_root = NULL;
+		}
+
+		if (REISERFS_SB(s)->priv_root) {
+			d_invalidate(REISERFS_SB(s)->priv_root);
+			dput(REISERFS_SB(s)->priv_root);
+			REISERFS_SB(s)->priv_root = NULL;
+		}
+	}
+
+	kill_block_super(s);
+}
+
 static void reiserfs_put_super(struct super_block *s)
 {
 	int i;
 	struct reiserfs_transaction_handle th;
 	th.t_trans_id = 0;
 
-	if (REISERFS_SB(s)->xattr_root) {
-		d_invalidate(REISERFS_SB(s)->xattr_root);
-		dput(REISERFS_SB(s)->xattr_root);
-	}
-
-	if (REISERFS_SB(s)->priv_root) {
-		d_invalidate(REISERFS_SB(s)->priv_root);
-		dput(REISERFS_SB(s)->priv_root);
-	}
-
 	/* change file system state to current state if it was mounted with read-write permissions */
 	if (!(s->s_flags & MS_RDONLY)) {
 		if (!journal_begin(&th, s, 10)) {
@@ -2300,7 +2309,7 @@ struct file_system_type reiserfs_fs_type
 	.owner = THIS_MODULE,
 	.name = "reiserfs",
 	.get_sb = get_super_block,
-	.kill_sb = kill_block_super,
+	.kill_sb = reiserfs_kill_sb,
 	.fs_flags = FS_REQUIRES_DEV,
 };
 

  parent reply	other threads:[~2006-08-09 13:44 UTC|newest]

Thread overview: 126+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-08-06 10:08 2.6.18-rc3-mm2 Andrew Morton
2006-08-06 11:09 ` 2.6.18-rc3-mm2 Michal Piotrowski
2006-08-07  9:52   ` 2.6.18-rc3-mm2 Balbir Singh
2006-08-07 12:16     ` 2.6.18-rc3-mm2 Michal Piotrowski
2006-08-07 14:05       ` 2.6.18-rc3-mm2 Balbir Singh
2006-08-06 13:33 ` 2.6.18-rc3-mm2 Mattia Dongili
2006-08-06 14:55   ` 2.6.18-rc3-mm2 [BUG at mm/vmscan.c:383!] Hugh Dickins
2006-08-06 17:02     ` Mattia Dongili
2006-08-06 14:11 ` 2.6.18-rc3-mm2 Reuben Farrelly
     [not found] ` <b637ec0b0608060848k22af58cbo6f13cee19498c2d2@mail.gmail.com>
2006-08-06 19:09   ` 2.6.18-rc3-mm2 Andrew Morton
2006-08-07  2:18     ` 2.6.18-rc3-mm2 Dmitry Torokhov
2006-08-07 18:47       ` 2.6.18-rc3-mm2 Fabio Comolli
2006-08-07 19:00         ` 2.6.18-rc3-mm2 Dmitry Torokhov
2006-08-08 14:41           ` 2.6.18-rc3-mm2 Rafael J. Wysocki
2006-08-08 17:42             ` 2.6.18-rc3-mm2 Dmitry Torokhov
2006-08-08 18:16               ` 2.6.18-rc3-mm2 Fabio Comolli
2006-08-08 18:24                 ` 2.6.18-rc3-mm2 Dmitry Torokhov
2006-08-08 18:36                   ` 2.6.18-rc3-mm2 Fabio Comolli
2006-08-09  3:47                     ` 2.6.18-rc3-mm2 Dmitry Torokhov
2006-08-09  7:11                       ` 2.6.18-rc3-mm2 Rafael J. Wysocki
2006-08-09 19:47                       ` 2.6.18-rc3-mm2 Fabio Comolli
2006-08-09 20:13                         ` 2.6.18-rc3-mm2 Dmitry Torokhov
2006-08-08 20:32               ` 2.6.18-rc3-mm2 Rafael J. Wysocki
2006-08-08 18:14           ` 2.6.18-rc3-mm2 Fabio Comolli
2006-08-06 22:42 ` 2.6.18-rc3-mm2 Rafael J. Wysocki
2006-08-06 22:54   ` 2.6.18-rc3-mm2 Andrew Morton
2006-08-07  9:15     ` 2.6.18-rc3-mm2 Rafael J. Wysocki
2006-08-07 20:34       ` 2.6.18-rc3-mm2 Rafael J. Wysocki
2006-08-07 20:55         ` 2.6.18-rc3-mm2 Andrew Morton
2006-08-08  5:21           ` 2.6.18-rc3-mm2 Jens Axboe
2006-08-07  2:18   ` 2.6.18-rc3-mm2 Dmitry Torokhov
2006-08-07  2:20     ` 2.6.18-rc3-mm2 Dmitry Torokhov
2006-08-07  2:07 ` 2.6.18-rc3-mm2 Grant Coady
2006-08-07  9:28 ` swsusp regression [Was: 2.6.18-rc3-mm2] Jiri Slaby
2006-08-07 16:23   ` Jason Lunz
2006-08-07 20:47     ` Rafael J. Wysocki
2006-08-08  8:41       ` Jens Axboe
2006-08-08  9:49         ` Jiri Slaby
2006-08-08 10:43           ` Jens Axboe
2006-08-08 10:08       ` Jiri Slaby
2006-08-08 10:43         ` Jens Axboe
2006-08-08 10:59           ` Rafael J. Wysocki
2006-08-08 11:04             ` Jens Axboe
2006-08-08 11:07               ` Jens Axboe
2006-08-08 11:16                 ` Rafael J. Wysocki
2006-08-08 11:19                   ` Jens Axboe
2006-08-08 13:50                     ` Rafael J. Wysocki
2006-08-08 14:06                       ` Jens Axboe
2006-08-08 16:41                         ` Jiri Slaby
2006-08-08 17:53                           ` Jens Axboe
2006-08-07 21:09     ` Jiri Slaby
2006-08-07 13:40 ` x86_64 command line truncated Andy Whitcroft
2006-08-07 14:05   ` Andi Kleen
2006-08-07 14:37     ` x86_64 command line truncated II Andi Kleen
2006-08-07 14:42       ` Andy Whitcroft
2006-08-07 14:46         ` Andi Kleen
2006-08-07 15:04           ` Andy Whitcroft
2006-08-07 15:12             ` [PATCH] x86_64 dirty fix to restore dual command line store Andy Whitcroft
2006-08-07 21:47               ` Keith Mannthey
2006-08-07 21:59                 ` Keith Mannthey
2006-08-07 14:38     ` x86_64 command line truncated Andy Whitcroft
2006-08-07 15:15       ` Andrew Morton
2006-08-07 15:58         ` Andi Kleen
2006-08-07 15:49 ` [-mm patch] make arch/i386/kernel/acpi/boot.c:acpi_force static Adrian Bunk
2006-08-07 16:07   ` Andi Kleen
2006-08-07 15:49 ` [-mm patch] make arch/i386/kernel/apic.c:enable_local_apic static Adrian Bunk
2006-08-07 15:49 ` [-mm patch] net/: make code static Adrian Bunk
2006-08-08  4:51   ` David Miller
2006-08-07 15:50 ` [-mm patch] drivers/crypto/geode-aes.c: cleanups Adrian Bunk
2006-08-07 19:38 ` resume from S3 regression [Was: 2.6.18-rc3-mm2] Mattia Dongili
2006-08-07 20:02   ` Andrew Morton
2006-08-07 20:57     ` Mattia Dongili
2006-08-07 22:09       ` Mattia Dongili
2006-08-07 21:04 ` [RFC: -mm patch] bcm43xx_main.c: remove 3 functions Adrian Bunk
2006-08-08 18:32   ` Michael Buesch
2006-08-08 19:42     ` Adrian Bunk
2006-08-09  4:47       ` Michael Buesch
2006-08-08 22:14     ` Jeff Garzik
2006-08-08 14:39 ` 2.6.18-rc3-mm2: reiserfs problem? Rafael J. Wysocki
2006-08-08 15:12   ` Andrew Morton
     [not found]   ` <20060804192540.17098.39244.stgit@warthog.cambridge.redhat.com>
2006-08-08 17:23     ` [PATCH] ReiserFS: Make sure all dentries refs are released before calling kill_block_super() David Howells
2006-08-08 23:16       ` Rafael J. Wysocki
2006-08-09 10:14         ` David Howells
2006-08-09 10:23           ` Rafael J. Wysocki
2006-08-09 11:00         ` David Howells
2006-08-09 13:43     ` David Howells [this message]
2006-08-09 21:56       ` [PATCH] ReiserFS: Make sure all dentries refs are released before calling kill_block_super() [try #2] Rafael J. Wysocki
2006-08-10 10:16         ` David Howells
2006-08-09 19:06 ` 2.6.18-rc3-mm2 - ext3 locking issue? Valdis.Kletnieks
2006-08-09 20:01   ` Andrew Morton
2006-08-09 20:43     ` Valdis.Kletnieks
2006-08-10  3:32       ` Valdis.Kletnieks
2006-08-10 11:40         ` Jiri Slaby
2006-08-10 15:27           ` Andrew Morton
2006-08-10 17:33             ` Mattia Dongili
2006-08-10 17:43               ` Jiri Slaby
2006-08-10 17:44               ` Valdis.Kletnieks
2006-08-11  6:17                 ` Andrew Morton
2006-08-11  6:55                   ` Valdis.Kletnieks
2006-08-11 22:39           ` Laurent Riffard
2006-08-15 23:38   ` Valdis.Kletnieks
2006-08-10  9:04 ` 2.6.18-rc3-mm2 - OOM storm Laurent Riffard
2006-08-10  9:19   ` Andrew Morton
2006-08-10 23:20     ` Laurent Riffard
2006-08-11 12:31       ` Laurent Riffard
2006-08-11 21:50         ` Mike Galbraith
2006-08-11  8:33     ` Mike Galbraith
2006-08-11  6:55       ` Andrew Morton
2006-08-11  9:37         ` Mike Galbraith
2006-08-12 15:07     ` [patch] " Mike Galbraith
2006-08-12 21:26       ` Laurent Riffard
2006-08-10 12:13 ` [patch] Use rwsems instead of custom locking scheme in net/socket.c and net/dccp/ccid.c Frederik Deweerdt
2006-08-10 12:57   ` David Miller
2006-08-10 13:19     ` Frederik Deweerdt
2006-08-10 13:43 ` 2.6.18-rc3-mm2 [oops: shrink_dcache_for_umount_subtree ?] Reuben Farrelly
2006-08-10 15:38   ` Andrew Morton
2006-08-10 17:38 ` 2.6.18-rc3-mm2 - IPV6_MULTIPLE_TABLES borked Valdis.Kletnieks
2006-08-10 20:02   ` Patrick McHardy
2006-08-10 21:44     ` Valdis.Kletnieks
2006-08-11  2:15 ` 2.6.18-rc3-mm2 - BUG in rt6_lookup() from ipv6_del_addr() Valdis.Kletnieks
2006-08-11  4:20   ` David Miller
2006-08-11 18:11 ` 2.6.18-rc3-mm2 Mark Haverkamp
2006-08-11 18:36   ` 2.6.18-rc3-mm2 Andrew Morton
2006-08-11 20:31     ` 2.6.18-rc3-mm2 Mark Haverkamp
2006-08-11 22:58       ` 2.6.18-rc3-mm2 Andrew Morton
2006-08-23 17:02         ` 2.6.18-rc3-mm2 Mark Haverkamp

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=912.1155131006@warthog.cambridge.redhat.com \
    --to=dhowells@redhat.com \
    --cc=akpm@osdl.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=olof@lixom.net \
    --cc=reiserfs-dev@namesys.com \
    --cc=rjw@sisk.pl \
    --cc=torvalds@osdl.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox