linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jerome de Vivie <jerome.devivie@free.fr>
To: Nir Tzachar <tzachar@cs.bgu.ac.il>
Cc: linux-fsdevel@vger.kernel.org, fist@cs.columbia.edu
Subject: Re: [FiST] a problem with dget
Date: Wed, 26 Mar 2003 21:43:12 +0100	[thread overview]
Message-ID: <3E8210E0.2FFDED78@free.fr> (raw)
In-Reply-To: Pine.LNX.4.44_heb2.09.0303251702370.4846-100000@ruby

Nir Tzachar wrote:
> 
> hello all.
> 
> i encountered a strange problem, involving the reference count of
> dentries.
> 
> first, let me describe my file system (i'll be brief.. ):
> im implementing a file system which is supposed to emulate an object
> storage device. i use a wrapper like file system (much like wrapfs,
> and actually based on it) to store files on an underlying f/s as objects.
> 
> i hope someone can help me, i've been tackling this problem for more than
> a week: when i create a file(say "tmp"), all is fine.
> the problem arises when i umount and then remount the file system.
> after im done with lookup (inode->i_op->lookup), dentry->d_count.counter
> ==1, as should be. but, when i enter the unlink function
> (inode->i_op->unlink ) its dentry->d_count.counter == 0 . why is that?
> nowhere in the vfs code does anyone decreases the counter b4
> inode->i_op->unlink is called . am i right?

This counter should at least be at 1. You should do a dget before each
lower level call and a dput after (in case the dentry is freed by
another process when you are inside unlink). Tracking usage count is not
easy, you can try this macro inside "lookup" and "d_release":

#if 1 /* for debugging dget/dput */
#define dcount(x) printk("(%s):%i  at %s:%i\n",(x)->d_name.name,
atomic_read(&(x)->d_count), __FILE__, __LINE__)
#else
#define dcount(x)
#endif

Try also to unmount the lower level fs. If there are pending dentries,
you will see this message:
"VFS: Busy inodes after unmount. Self-destruct in 5 seconds.  Have a
nice day..."

regards,

j.

-- 
Jérôme de Vivie
-
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

  parent reply	other threads:[~2003-03-26 20:43 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-03-25 16:47 a problem with dget Nir Tzachar
2003-03-26  9:23 ` Jan Hudec
2003-03-26  9:45   ` Nir Tzachar
2003-03-26  9:57     ` Jan Hudec
2003-03-26 20:43 ` Jerome de Vivie [this message]
2003-03-27  8:17   ` [FiST] " Nir Tzachar
2003-03-28  2:01     ` Erez Zadok
2003-03-30  4:29       ` Nir Tzachar

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=3E8210E0.2FFDED78@free.fr \
    --to=jerome.devivie@free.fr \
    --cc=fist@cs.columbia.edu \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=tzachar@cs.bgu.ac.il \
    /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;
as well as URLs for NNTP newsgroup(s).