Skip to contentSkip to conversation

reiserfs: discard prealloc in reiserfs_delete_inode

PATCH In review Jeff Mahoney 2 participants 3 messages Jul 8, 2008 – Jul 11, 2008

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 reiserfs: discard prealloc in reiserfs_delete_inode

With the removal of struct file from the xattr code, reiserfs_file_release() isn't used anymore, so the prealloc isn't discarded. This causes hangs later down the line.

This patch adds it to reiserfs_delete_inode. In most cases it will be a no-op due to it already having been called, but will avoid hangs with xattrs.

---
 fs/reiserfs/inode.c |    2 ++
 1 file changed, 2 insertions(+)
fs/reiserfs/inode.c +2 -0
@@ -45,6 +45,8 @@ void reiserfs_delete_inode(struct inode
 			goto out;
 		reiserfs_update_inode_transaction(inode);
 
+		reiserfs_discard_prealloc(&th, inode);
+
 		err = reiserfs_delete_object(&th, inode);
 
 		/* Do quota update inside a transaction for journaled quotas. We must do that
Signature · 2 lines
Jeff Mahoney
SUSE Labs
#1 lore raw
Quoted 15 lines · On Tue, 08 Jul 2008 14:37:06 -0400 Jeff Mahoney <[email protected]> wrote:

With the removal of struct file from the xattr code, reiserfs_file_release() isn't used anymore, so the prealloc isn't discarded. This causes hangs later down the line.

This patch adds it to reiserfs_delete_inode. In most cases it will be a no-op due to it already having been called, but will avoid hangs with xattrs.

---
 fs/reiserfs/inode.c |    2 ++
 1 file changed, 2 insertions(+)

fs/reiserfs/inode.c void reiserfs_delete_inode(struct inode · line 52

Quoted 8 lines
fs/reiserfs/inode.c +2 -0
@@ -45,6 +45,8 @@ void reiserfs_delete_inode(struct inode
 			goto out;
 		reiserfs_update_inode_transaction(inode);
 
+		reiserfs_discard_prealloc(&th, inode);
+
 		err = reiserfs_delete_object(&th, inode);
 
 		/* Do quota update inside a transaction for journaled quotas. We must do that

Can you please remind us when "the removal of struct file from the xattr code" happened?

Because hangs aren't good, and 2.6.25 might want this.

#2 lore raw

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Quoted 24 lines · Andrew Morton
Quoted 22 lines · On Tue, 08 Jul 2008 14:37:06 -0400 Jeff Mahoney <[email protected]> wrote:

With the removal of struct file from the xattr code, reiserfs_file_release() isn't used anymore, so the prealloc isn't discarded. This causes hangs later down the line.

This patch adds it to reiserfs_delete_inode. In most cases it will be a no-op due to it already having been called, but will avoid hangs with xattrs.

---
 fs/reiserfs/inode.c |    2 ++
 1 file changed, 2 insertions(+)
fs/reiserfs/inode.c +2 -0
@@ -45,6 +45,8 @@ void reiserfs_delete_inode(struct inode
 			goto out;
 		reiserfs_update_inode_transaction(inode);
 
+		reiserfs_discard_prealloc(&th, inode);
+
 		err = reiserfs_delete_object(&th, inode);
 
Quoted 6 lines

fs/reiserfs/inode.c void reiserfs_delete_inode(struct inode · line 52

Quoted 1 line
fs/reiserfs/inode.c +0 -0
 		/* Do quota update inside a transaction for journaled quotas. We must do that

Can you please remind us when "the removal of struct file from the xattr code" happened?

Because hangs aren't good, and 2.6.25 might want this.

You're right. It was added in 2.6.25-rc7. I'll ping Greg about including it in the stable tree.

- -Jeff

- --
Jeff Mahoney
SUSE Labs
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.9 (GNU/Linux)
Comment: Using GnuPG with SUSE - http://enigmail.mozdev.org

iEYEARECAAYFAkh3szkACgkQLPWxlyuTD7IOyACZAd0+kO4D+bPjx1W1pX/APgl+ eKgAoJ75yKu/IlmHxvlmyWM5DThyKCQL
=BLAB
-----END PGP SIGNATURE-----