From: "J. Bruce Fields" <bfields@fieldses.org>
To: "Ismael Farfán" <sulfurfff@gmail.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>, linux-fsdevel@vger.kernel.org
Subject: Re: Getting PIDs out of inodes?
Date: Thu, 16 Jan 2014 14:02:55 -0500 [thread overview]
Message-ID: <20140116190255.GA19196@fieldses.org> (raw)
In-Reply-To: <CANXECd5OBmSkxamA742+tegGgptazkmGZmLvcdKn6WWVKM9cEg@mail.gmail.com>
On Thu, Jan 16, 2014 at 10:14:42AM -0600, Ismael Farfán wrote:
> 2014/1/15 Al Viro :
> > On Wed, Jan 15, 2014 at 04:08:01PM -0600, Ismael Farf??n wrote:
> >>
> >> I'd like to know who created or inherited (as in fork) them. I mustn't
> >> talk ill of the dead, but they are my prime suspects because of this
> >> (doesn't shows with ps):
> >> [49886.362859] umount.nfs[8425]: segfault at 19... bla bla
> >>
> >> Given what I read[1,2], there doesn't seem to be a direct way to get
> >> the struct file (which contains a PID) out of the inode.
> >
> > That makes no sense. struct file does *not* contain a PID.
> >
>
> This comment in struct file fooled me then :/
> int f_owner; /* pid or -pgrp where SIGIO should be sent */
>
> >> I don't know if it's possible to script an iteration with crash over
> >> all tasks in search of a particular inode.
> >> DENTRY INODE TYPE PATH
> >> ffff880936419900 ffff8808d17c5518 REG foo.txt
> >>
> >> Any ideas on how to know who created the file descriptors?
> >
> > ... and descriptor != struct file. Moreover, if "who?" is "which process?",
> > it might have been dead, buried and its PID reused a long time ago - opened
> > file can easily outlive the process that had opened it. What are you actually
> > trying to do? Details, please...
>
> I have some inodes open such that they don't show with fuser...
>
> crash> fuser /mnt
> No users of /mnt
> crash> mount -f /dev/sdb1
> VFSMOUNT SUPERBLK TYPE DEVNAME DIRNAME
> ffff88094c4cc680 ffff880946018c00 myfs /dev/sdb1 /mnt
> OPEN FILES
> DENTRY INODE TYPE PATH
> ffff880936419900 ffff8808d17c5518 REG foo1.txt
> ffff8809270079c0 ffff880927150618 REG foo2.txt
> << and another 26 of them! >>
>
> Because of those guys I can't umount the FS (hence there's a bug!)
>
> I'm trying to figure out what command, daemon, *kernel thread*, PID,
> unicorn... created or left them there.
>
> Even if the PID was reused (unlikely because the system ran only 18
> hours) I can try to match it in other logs. For instance, my prime
> suspect is NFS, but I *can't* blame it only with this as proof (from
> dmesg) :
> [45249.452255] umount.nfs[30037]: segfault at 19 ip ...
>
>
> I'm trying to solve it and learn crash at the same time :)
Best is probably to report the details (with kernel versions, etc.) to
linux-nfs@vger.kernel.org.
--b.
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
prev parent reply other threads:[~2014-01-16 19:02 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-15 22:08 Getting PIDs out of inodes? Ismael Farfán
2014-01-16 4:44 ` Al Viro
2014-01-16 16:14 ` Ismael Farfán
2014-01-16 19:02 ` J. Bruce Fields [this message]
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=20140116190255.GA19196@fieldses.org \
--to=bfields@fieldses.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=sulfurfff@gmail.com \
--cc=viro@zeniv.linux.org.uk \
/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 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.