All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Américo Wang" <xiyou.wangcong@gmail.com>
To: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: "Greg Kroah-Hartman" <gregkh@suse.de>,
	"Américo Wang" <xiyou.wangcong@gmail.com>,
	"Tejun Heo <tj@kernel.org> Neil Brown" <neilb@suse.de>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/4] sysfs: Only take active references on attributes.
Date: Mon, 15 Feb 2010 15:27:45 +0800	[thread overview]
Message-ID: <20100215072745.GC12076@hack.private> (raw)
In-Reply-To: <m1ljezwean.fsf_-_@fess.ebiederm.org>

On Thu, Feb 11, 2010 at 03:20:00PM -0800, Eric W. Biederman wrote:
>
>If we exclude directories and symlinks from the set of sysfs
>dirents where we need active references we are left with
>sysfs attributes (binary or not).
>
>- Tweak sysfs_deactivate to only do something on attributes
>- Move lockdep initialization into sysfs_file_add_mode to
>  limit it to just attributes.

Why?

If I read your patch correctly, s_active will be useless
for non-attributes sysfs entries? For sysfs dir, maybe,
since it can only be removed by sysfs_remove_dir(),
but not sure about sysfs symlinks...


>
>Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
>---
> fs/sysfs/dir.c   |    5 ++++-
> fs/sysfs/file.c  |    1 +
> fs/sysfs/sysfs.h |    1 +
> 3 files changed, 6 insertions(+), 1 deletions(-)
>
>diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c
>index 1bdc42f..481fdec 100644
>--- a/fs/sysfs/dir.c
>+++ b/fs/sysfs/dir.c
>@@ -156,6 +156,10 @@ static void sysfs_deactivate(struct sysfs_dirent *sd)
> 	int v;
> 
> 	BUG_ON(sd->s_sibling || !(sd->s_flags & SYSFS_FLAG_REMOVED));
>+
>+	if (!(sysfs_type(sd) & SYSFS_ACTIVE_REF))
>+		return;
>+
> 	sd->s_sibling = (void *)&wait;
> 
> 	rwsem_acquire(&sd->dep_map, 0, 0, _RET_IP_);
>@@ -315,7 +319,6 @@ struct sysfs_dirent *sysfs_new_dirent(const char *name, umode_t mode, int type)
> 
> 	atomic_set(&sd->s_count, 1);
> 	atomic_set(&sd->s_active, 0);
>-	sysfs_dirent_init_lockdep(sd);
> 
> 	sd->s_name = name;
> 	sd->s_mode = mode;
>diff --git a/fs/sysfs/file.c b/fs/sysfs/file.c
>index 8d6bd65..8eaae5d 100644
>--- a/fs/sysfs/file.c
>+++ b/fs/sysfs/file.c
>@@ -509,6 +509,7 @@ int sysfs_add_file_mode(struct sysfs_dirent *dir_sd,
> 	if (!sd)
> 		return -ENOMEM;
> 	sd->s_attr.attr = (void *)attr;
>+	sysfs_dirent_init_lockdep(sd);
> 
> 	sysfs_addrm_start(&acxt, dir_sd);
> 	rc = sysfs_add_one(&acxt, sd);
>diff --git a/fs/sysfs/sysfs.h b/fs/sysfs/sysfs.h
>index bb7723c..7db6884 100644
>--- a/fs/sysfs/sysfs.h
>+++ b/fs/sysfs/sysfs.h
>@@ -79,6 +79,7 @@ struct sysfs_dirent {
> #define SYSFS_KOBJ_BIN_ATTR		0x0004
> #define SYSFS_KOBJ_LINK			0x0008
> #define SYSFS_COPY_NAME			(SYSFS_DIR | SYSFS_KOBJ_LINK)
>+#define SYSFS_ACTIVE_REF		(SYSFS_KOBJ_ATTR | SYSFS_KOBJ_BIN_ATTR)
> 
> #define SYSFS_FLAG_MASK			~SYSFS_TYPE_MASK
> #define SYSFS_FLAG_REMOVED		0x0200
>-- 
>1.6.5.2.143.g8cc62
>

-- 
Live like a child, think like the god.
 

  parent reply	other threads:[~2010-02-15  7:25 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-02-10  1:09 [PATCH] sysfs: differentiate between locking links and non-links Neil Brown
2010-02-10  1:21 ` David Rientjes
2010-02-10  1:56   ` Américo Wang
2010-02-10  3:05     ` David Rientjes
2010-02-10  3:14       ` Américo Wang
2010-02-10  3:19         ` David Rientjes
2010-02-10  3:33           ` Américo Wang
2010-02-10  2:08 ` Américo Wang
2010-02-10  2:19   ` Tejun Heo
2010-02-10  3:12     ` Américo Wang
2010-02-10  8:03     ` Eric W. Biederman
2010-02-10 10:39       ` Tejun Heo
2010-02-10 18:25         ` Eric W. Biederman
2010-02-10 23:05           ` Greg KH
2010-02-11  1:31             ` Eric W. Biederman
2010-02-11  2:10               ` Tejun Heo
2010-02-11 18:08                 ` Eric W. Biederman
2010-02-12  0:59                   ` Tejun Heo
2010-02-12  1:20                     ` Eric W. Biederman
2010-02-12  1:20                     ` Eric W. Biederman
2010-02-12  2:16                       ` Tejun Heo
2010-02-11 23:13                 ` [PATCH 0/4] Better sysfs lockdep Eric W. Biederman
2010-02-11 23:14                   ` [PATCH 1/4] sysfs: Remove sysfs_get/put_active_two Eric W. Biederman
2010-02-11 23:20                     ` [PATCH 2/4] sysfs: Only take active references on attributes Eric W. Biederman
2010-02-11 23:21                       ` [PATCH 3/4] sysfs: Use one lockdep class per sysfs attribute Eric W. Biederman
2010-02-11 23:23                         ` [PATCH 4/4] sysfs: Use sysfs_attr_init and sysfs_bin_attr_init on dynamic attributes Eric W. Biederman
2010-02-11 23:42                           ` Greg KH
2010-02-12 12:47                             ` [PATCH] sysfs: Document sysfs_attr_init and sysfs_bin_attr_init Eric W. Biederman
2010-02-12 21:41                               ` [PATCH] sysfs: Use sysfs_attr_init and sysfs_bin_attr_init on module dynamic attributes Eric W. Biederman
2010-02-15 10:38                           ` [PATCH 4/4] sysfs: Use sysfs_attr_init and sysfs_bin_attr_init on " Américo Wang
2010-02-15 12:53                             ` Eric W. Biederman
2010-02-15 10:35                         ` [PATCH 3/4] sysfs: Use one lockdep class per sysfs attribute Américo Wang
2010-02-15  7:27                       ` Américo Wang [this message]
2010-02-15  8:15                         ` [PATCH 2/4] sysfs: Only take active references on attributes Américo Wang
2010-02-15  8:31                           ` Américo Wang
2010-02-15 10:11                           ` Eric W. Biederman
2010-02-15  7:03                     ` [PATCH 1/4] sysfs: Remove sysfs_get/put_active_two Américo Wang
2010-02-11 23:18                   ` Eric W. Biederman
2010-02-11 23:17                 ` [PATCH 0/4] Better sysfs lockdep Eric W. Biederman
2010-02-11 23:43                   ` Greg KH
2010-02-10 23:54           ` [PATCH] sysfs: differentiate between locking links and non-links Tejun Heo
2010-02-11  0:38             ` Eric W. Biederman
2010-02-10 17:36 ` Eric W. Biederman
2010-02-10 17:55   ` Dmitry Torokhov
2010-02-10 23:06 ` Greg KH
2010-02-11 21:42   ` Eric W. Biederman
2010-02-11 22:32     ` Greg KH
2010-02-11 22:47       ` Eric W. Biederman
2010-02-17 22:38         ` Greg KH
2010-02-18  0:39           ` Neil Brown
2010-02-18  1:01             ` Eric W. Biederman
2010-02-18  1:12               ` Greg KH

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=20100215072745.GC12076@hack.private \
    --to=xiyou.wangcong@gmail.com \
    --cc=ebiederm@xmission.com \
    --cc=gregkh@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=neilb@suse.de \
    /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.