From: James Pearson <james-p@moving-picture.com>
To: Greg Banks <gnb@melbourne.sgi.com>
Cc: Trond Myklebust <trond.myklebust@fys.uio.no>,
Linux NFS Mailing List <nfs@lists.sourceforge.net>
Subject: Re: [PATCH] SGI 882960: Busy inodes after unmount, oops
Date: Thu, 05 Feb 2004 12:40:35 +0000 [thread overview]
Message-ID: <402239C3.AD21DDAD@moving-picture.com> (raw)
In-Reply-To: 40209B6D.56ED461E@melbourne.sgi.com
I notice this patch doesn't apply cleanly with Trond's fix_unlink patch
- can the two patches live together?
Thanks
James Pearson
Greg Banks wrote:
>
> G'day,
>
> This patch fixes a bug where the forced killing of pending asynchronous
> unlink rpc_tasks during unmount leaks inode reference counts for the
> parent of the silly-renamed file and all its ancestor directories,
> resulting in the message
>
> VFS: Busy inodes after unmount. Self-destruct in 5 seconds. Have a nice day...
>
> and a few seconds later an oops with a stack trace ending in
> prune_dcache -> nfs_dentry_iput -> iput.
>
> This is probably also the bug discussed last September on the autofs
> mailing list. The patch posted by Olaf Hering then has no effect
> at all, but it did put me on the right track (thanks Olaf).
>
> The first part makes sure that dput() will unhash and kill dentries
> and their parents if called while the unmount is underway.
>
> The second part moves the dput() call from the tk_exit callback of
> the async unlink rpc_task to the tk_release callback so that it
> will be called if the rpc_task is killed by rpc_killall_tasks()
> instead of completing normally.
>
> ===========================================================================
> linux/linux/fs/nfs/dir.c
> ===========================================================================
>
> --- /usr/tmp/TmpDir.27555-0/linux/linux/fs/nfs/dir.c_1.32 Wed Feb 4 17:57:23 2004
> +++ linux/linux/fs/nfs/dir.c Wed Feb 4 17:52:20 2004
> @@ -551,6 +551,11 @@ static int nfs_dentry_delete(struct dent
> /* Unhash it, so that ->d_iput() would be called */
> return 1;
> }
> + if (!(dentry->d_sb->s_flags & MS_ACTIVE)) {
> + /* Unhash it, so that ancestors of killed async unlink
> + * files will be cleaned up during umount */
> + return 1;
> + }
> return 0;
>
> }
>
> ===========================================================================
> linux/linux/fs/nfs/unlink.c
> ===========================================================================
>
> --- /usr/tmp/TmpDir.27555-0/linux/linux/fs/nfs/unlink.c_1.6 Wed Feb 4 17:57:23 2004
> +++ linux/linux/fs/nfs/unlink.c Wed Feb 4 17:56:57 2004
> @@ -51,6 +51,7 @@ static void
> nfs_put_unlinkdata(struct nfs_unlinkdata *data)
> {
> if (--data->count == 0) {
> + dput(data->dir);
> nfs_detach_unlinkdata(data);
> if (data->name.name != NULL)
> kfree(data->name.name);
> @@ -132,7 +133,6 @@ nfs_async_unlink_done(struct rpc_task *t
> NFS_PROTO(dir_i)->unlink_done(dir, &task->tk_msg);
> put_rpccred(data->cred);
> data->cred = NULL;
> - dput(dir);
> }
>
> /**
>
> Greg.
> --
> Greg Banks, R&D Software Engineer, SGI Australian Software Group.
> I don't speak for SGI.
>
> -------------------------------------------------------
> The SF.Net email is sponsored by EclipseCon 2004
> Premiere Conference on Open Tools Development and Integration
> See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
> http://www.eclipsecon.org/osdn
> _______________________________________________
> NFS maillist - NFS@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/nfs
-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004
Premiere Conference on Open Tools Development and Integration
See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
_______________________________________________
NFS maillist - NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs
next prev parent reply other threads:[~2004-02-05 12:41 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-02-04 7:12 [PATCH] SGI 882960: Busy inodes after unmount, oops Greg Banks
2004-02-04 10:42 ` Olaf Kirch
2004-02-04 22:59 ` Greg Banks
2004-02-04 12:09 ` Olaf Kirch
2004-02-04 22:41 ` Greg Banks
2004-02-05 16:15 ` Olaf Kirch
2004-02-05 22:23 ` Greg Banks
2004-02-06 5:50 ` Greg Banks
2004-02-13 16:26 ` canon
2004-02-04 14:24 ` raven
2004-02-04 22:56 ` Greg Banks
2004-02-05 12:40 ` James Pearson [this message]
2004-02-09 7:46 ` Greg Banks
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=402239C3.AD21DDAD@moving-picture.com \
--to=james-p@moving-picture.com \
--cc=gnb@melbourne.sgi.com \
--cc=nfs@lists.sourceforge.net \
--cc=trond.myklebust@fys.uio.no \
/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