All of lore.kernel.org
 help / color / mirror / Atom feed
From: Maneesh Soni <maneesh@in.ibm.com>
To: Jerome de Vivie <jerome.devivie@free.fr>
Cc: linux-fsdevel@vger.kernel.org
Subject: Re: changing d_parent
Date: Mon, 19 May 2003 11:25:24 +0530	[thread overview]
Message-ID: <20030519055524.GA1436@in.ibm.com> (raw)
In-Reply-To: <3EC7C605.DB4BA3ED@free.fr>

On Sun, May 18, 2003 at 06:14:29PM +0000, Jerome de Vivie wrote:
> 
> I would like to change the "d_parent" field of a dentry. This is for
> shrinking entry equivalent to a "./" in my filesystem namespace.
> 
> The dentry has just been allocated and has no child. I'm new to the
> dcache and i would like to know if thoses lines are is safe:
> 
>     spin_lock(&dcache_lock);
>     list_del(&dentry->d_child);
>     dput(dentry->d_parent);
      ^^^^^^^^^^^^^^^^^^^^^^^
need to release dcache_lock() before calling dput(), as dput() also
takes dcache_lock(). Probably you can save this ->d_parent in some 
local variable and then dput() it after you have done with dcache_lock().

>     dentry->d_parent = dget(newparent);
>     list_add(&dentry->d_child, &newparent->d_subdirs);
>     spin_unlock(&dcache_lock);

Now, if you are doing this on 2.5 kernel, then you have to take the 
per dentry lock for the dentry also. some thing like this

	struct dentry * old_parent;

	spin_lock(&dcache_lock);
	spin_lock(&dentry->d_lock);
	list_del(&dentry->d_child);
	old_parent = dentry->d_parent;
	dentry->d_parent = dget(newparent);
	list_add(&dentry->d_child, &newparent->d_subdirs);
	spin_unlock(&dentry->d_lock);
	spin_unlock(&dcache_lock);
	dput(old_parent);	

This is just a sample after guessing what you are doing.

Maneesh


-- 
Maneesh Soni
IBM Linux Technology Center, 
IBM India Software Lab, Bangalore.
Phone: +91-80-5044999 email: maneesh@in.ibm.com
http://lse.sourceforge.net/

  reply	other threads:[~2003-05-19  9:37 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-05-18 17:42 changing d_parent Jerome de Vivie
2003-05-19  5:55 ` Maneesh Soni [this message]
2003-05-19  6:07 ` Jan Hudec

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=20030519055524.GA1436@in.ibm.com \
    --to=maneesh@in.ibm.com \
    --cc=jerome.devivie@free.fr \
    --cc=linux-fsdevel@vger.kernel.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 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.