From: "Eric W. Biederman" <ebiederm@xmission.com>
To: Andrew Morton <akpm@linux-foundation.org>,
Greg Kroah-Hartman <gregkh@suse.de>
Cc: <linux-kernel@vger.kernel.org>, Tejun Heo <tj@kernel.org>,
Cornelia Huck <cornelia.huck@de.ibm.com>,
<linux-fsdevel@vger.kernel.org>,
"Eric W. Biederman" <ebiederm@xmission.com>,
"Eric W. Biederman" <ebiederm@aristanetworks.com>
Subject: [PATCH 15/20] sysfs: Kill sysfs_addrm_start and sysfs_addrm_finish
Date: Wed, 20 May 2009 17:28:09 -0700 [thread overview]
Message-ID: <1242865694-2100-15-git-send-email-ebiederm@xmission.com> (raw)
In-Reply-To: <1242865694-2100-14-git-send-email-ebiederm@xmission.com>
From: Eric W. Biederman <ebiederm@xmission.com>
With lazy inode updates and dentry operations bringing everything
into sync on demand there is no longer any need to immediately
update the vfs or grab i_mutex to protect those updates as we
make changes to sysfs.
So stop updating the vfs inodes and move what remains of
sysfs_addrm_start and sysfs_addrm_finsih (just barely more than taking
the sysfs_mutex) into sysfs_add_one and sysfs_remove_one.
Signed-off-by: Eric W. Biederman <ebiederm@aristanetworks.com>
---
fs/sysfs/dir.c | 192 +++++++---------------------------------------------
fs/sysfs/file.c | 6 +--
fs/sysfs/inode.c | 16 ++---
fs/sysfs/symlink.c | 6 +--
fs/sysfs/sysfs.h | 17 +----
5 files changed, 34 insertions(+), 203 deletions(-)
diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c
index d1b52b2..e4973c3 100644
--- a/fs/sysfs/dir.c
+++ b/fs/sysfs/dir.c
@@ -382,62 +382,6 @@ struct sysfs_dirent *sysfs_new_dirent(const char *name, umode_t mode, int type)
return NULL;
}
-static int sysfs_ilookup_test(struct inode *inode, void *arg)
-{
- struct sysfs_dirent *sd = arg;
- return inode->i_ino == sd->s_ino;
-}
-
-/**
- * sysfs_addrm_start - prepare for sysfs_dirent add/remove
- * @acxt: pointer to sysfs_addrm_cxt to be used
- * @parent_sd: parent sysfs_dirent
- *
- * This function is called when the caller is about to add or
- * remove sysfs_dirent under @parent_sd. This function acquires
- * sysfs_mutex, grabs inode for @parent_sd if available and lock
- * i_mutex of it. @acxt is used to keep and pass context to
- * other addrm functions.
- *
- * LOCKING:
- * Kernel thread context (may sleep). sysfs_mutex is locked on
- * return. i_mutex of parent inode is locked on return if
- * available.
- */
-void sysfs_addrm_start(struct sysfs_addrm_cxt *acxt,
- struct sysfs_dirent *parent_sd)
-{
- struct inode *inode;
-
- memset(acxt, 0, sizeof(*acxt));
- acxt->parent_sd = parent_sd;
-
- /* Lookup parent inode. inode initialization is protected by
- * sysfs_mutex, so inode existence can be determined by
- * looking up inode while holding sysfs_mutex.
- */
- mutex_lock(&sysfs_mutex);
-
- inode = ilookup5(sysfs_sb, parent_sd->s_ino, sysfs_ilookup_test,
- parent_sd);
- if (inode) {
- WARN_ON(inode->i_state & I_NEW);
-
- /* parent inode available */
- acxt->parent_inode = inode;
-
- /* sysfs_mutex is below i_mutex in lock hierarchy.
- * First, trylock i_mutex. If fails, unlock
- * sysfs_mutex and lock them in order.
- */
- if (!mutex_trylock(&inode->i_mutex)) {
- mutex_unlock(&sysfs_mutex);
- mutex_lock(&inode->i_mutex);
- mutex_lock(&sysfs_mutex);
- }
- }
-}
-
/**
* sysfs_pathname - return full path to sysfs dirent
* @sd: sysfs_dirent whose path we want
@@ -460,161 +404,83 @@ static char *sysfs_pathname(struct sysfs_dirent *sd, char *path)
/**
* sysfs_add_one - add sysfs_dirent to parent
- * @acxt: addrm context to use
+ * @parent_sd: directory to add @sd into
* @sd: sysfs_dirent to be added
*
- * Get @acxt->parent_sd and set sd->s_parent to it and increment
+ * Get @parent_sd and set sd->s_parent to it and increment
* nlink of parent inode if @sd is a directory and link into the
* children list of the parent.
*
- * This function should be called between calls to
- * sysfs_addrm_start() and sysfs_addrm_finish() and should be
- * passed the same @acxt as passed to sysfs_addrm_start().
- *
* LOCKING:
- * Determined by sysfs_addrm_start().
+ * Kernel thread context (may sleep). Grabs sysfs_mutex.
*
* RETURNS:
* 0 on success, -EEXIST if entry with the given name already
* exists.
*/
-int sysfs_add_one(struct sysfs_addrm_cxt *acxt, struct sysfs_dirent *sd)
+int sysfs_add_one(struct sysfs_dirent *parent_sd, struct sysfs_dirent *sd)
{
struct iattr *ps_iattr;
- if (sysfs_find_dirent(acxt->parent_sd, sd->s_name)) {
- char *path = kzalloc(PATH_MAX, GFP_KERNEL);
+ mutex_lock(&sysfs_mutex);
+ if (sysfs_find_dirent(parent_sd, sd->s_name)) {
+ char *path;
+ mutex_unlock(&sysfs_mutex);
+
+ path = kzalloc(PATH_MAX, GFP_KERNEL);
WARN(1, KERN_WARNING
"sysfs: cannot create duplicate filename '%s'\n",
(path == NULL) ? sd->s_name :
- strcat(strcat(sysfs_pathname(acxt->parent_sd, path), "/"),
+ strcat(strcat(sysfs_pathname(parent_sd, path), "/"),
sd->s_name));
kfree(path);
return -EEXIST;
}
- sd->s_parent = sysfs_get(acxt->parent_sd);
-
- if (sysfs_type(sd) == SYSFS_DIR && acxt->parent_inode)
- inc_nlink(acxt->parent_inode);
-
- acxt->cnt++;
-
+ sd->s_parent = sysfs_get(parent_sd);
sysfs_link_sibling(sd);
/* Update timestamps on the parent */
- ps_iattr = acxt->parent_sd->s_iattr;
+ ps_iattr = parent_sd->s_iattr;
if (ps_iattr)
ps_iattr->ia_ctime = ps_iattr->ia_mtime = CURRENT_TIME;
+ mutex_unlock(&sysfs_mutex);
return 0;
}
/**
* sysfs_remove_one - remove sysfs_dirent from parent
- * @acxt: addrm context to use
* @sd: sysfs_dirent to be removed
*
* Mark @sd removed and drop nlink of parent inode if @sd is a
* directory. @sd is unlinked from the children list.
*
- * This function should be called between calls to
- * sysfs_addrm_start() and sysfs_addrm_finish() and should be
- * passed the same @acxt as passed to sysfs_addrm_start().
- *
* LOCKING:
- * Determined by sysfs_addrm_start().
+ * Kernel thread context (may sleep). Grabs sysfs_mutex.
*/
-void sysfs_remove_one(struct sysfs_addrm_cxt *acxt, struct sysfs_dirent *sd)
+void sysfs_remove_one(struct sysfs_dirent *sd)
{
struct iattr *ps_iattr;
BUG_ON(sd->s_flags & SYSFS_FLAG_REMOVED);
+ mutex_lock(&sysfs_mutex);
+
sysfs_unlink_sibling(sd);
/* Update timestamps on the parent */
- ps_iattr = acxt->parent_sd->s_iattr;
+ ps_iattr = sd->s_parent->s_iattr;
if (ps_iattr)
ps_iattr->ia_ctime = ps_iattr->ia_mtime = CURRENT_TIME;
sd->s_flags |= SYSFS_FLAG_REMOVED;
- sd->s_sibling = acxt->removed;
- acxt->removed = sd;
-
- if (sysfs_type(sd) == SYSFS_DIR && acxt->parent_inode)
- drop_nlink(acxt->parent_inode);
-
- acxt->cnt++;
-}
-/**
- * sysfs_dec_nlink - Decrement link count for the specified sysfs_dirent
- * @sd: target sysfs_dirent
- *
- * Decrement nlink for @sd. @sd must have been unlinked from its
- * parent on entry to this function such that it can't be looked
- * up anymore.
- */
-static void sysfs_dec_nlink(struct sysfs_dirent *sd)
-{
- struct inode *inode;
-
- inode = ilookup(sysfs_sb, sd->s_ino);
- if (!inode)
- return;
-
- /* adjust nlink and update timestamp */
- mutex_lock(&inode->i_mutex);
-
- inode->i_ctime = CURRENT_TIME;
- drop_nlink(inode);
- if (sysfs_type(sd) == SYSFS_DIR)
- drop_nlink(inode);
-
- mutex_unlock(&inode->i_mutex);
-
- iput(inode);
-}
-
-/**
- * sysfs_addrm_finish - finish up sysfs_dirent add/remove
- * @acxt: addrm context to finish up
- *
- * Finish up sysfs_dirent add/remove. Resources acquired by
- * sysfs_addrm_start() are released and removed sysfs_dirents are
- * cleaned up. Timestamps on the parent inode are updated.
- *
- * LOCKING:
- * All mutexes acquired by sysfs_addrm_start() are released.
- */
-void sysfs_addrm_finish(struct sysfs_addrm_cxt *acxt)
-{
- /* release resources acquired by sysfs_addrm_start() */
mutex_unlock(&sysfs_mutex);
- if (acxt->parent_inode) {
- struct inode *inode = acxt->parent_inode;
- /* if added/removed, update timestamps on the parent */
- if (acxt->cnt)
- inode->i_ctime = inode->i_mtime = CURRENT_TIME;
-
- mutex_unlock(&inode->i_mutex);
- iput(inode);
- }
-
- /* kill removed sysfs_dirents */
- while (acxt->removed) {
- struct sysfs_dirent *sd = acxt->removed;
-
- acxt->removed = sd->s_sibling;
- sd->s_sibling = NULL;
-
- sysfs_dec_nlink(sd);
- sysfs_deactivate(sd);
- unmap_bin_file(sd);
- sysfs_put(sd);
- }
+ sysfs_deactivate(sd);
+ unmap_bin_file(sd);
+ sysfs_put(sd);
}
/**
@@ -673,7 +539,6 @@ static int create_dir(struct kobject *kobj, struct sysfs_dirent *parent_sd,
const char *name, struct sysfs_dirent **p_sd)
{
umode_t mode = S_IFDIR| S_IRWXU | S_IRUGO | S_IXUGO;
- struct sysfs_addrm_cxt acxt;
struct sysfs_dirent *sd;
int rc;
@@ -684,10 +549,8 @@ static int create_dir(struct kobject *kobj, struct sysfs_dirent *parent_sd,
sd->s_dir.kobj = kobj;
/* link in */
- sysfs_addrm_start(&acxt, parent_sd);
- rc = sysfs_add_one(&acxt, sd);
- sysfs_addrm_finish(&acxt);
+ rc = sysfs_add_one(parent_sd, sd);
if (rc == 0)
*p_sd = sd;
else
@@ -783,20 +646,15 @@ static struct sysfs_dirent *sysfs_get_one(struct sysfs_dirent *dir_sd)
static void remove_dir(struct sysfs_dirent *dir_sd)
{
- struct sysfs_addrm_cxt acxt;
struct sysfs_dirent *sd;
pr_debug("sysfs %s: removing dir\n", dir_sd->s_name);
while ((sd = sysfs_get_one(dir_sd))) {
- sysfs_addrm_start(&acxt, sd->s_parent);
- sysfs_remove_one(&acxt, sd);
- sysfs_addrm_finish(&acxt);
+ sysfs_remove_one(sd);
sysfs_put(sd);
}
- sysfs_addrm_start(&acxt, dir_sd->s_parent);
- sysfs_remove_one(&acxt, dir_sd);
- sysfs_addrm_finish(&acxt);
+ sysfs_remove_one(dir_sd);
}
void sysfs_remove_subdir(struct sysfs_dirent *sd)
diff --git a/fs/sysfs/file.c b/fs/sysfs/file.c
index 31cfe1d..b512ce6 100644
--- a/fs/sysfs/file.c
+++ b/fs/sysfs/file.c
@@ -499,7 +499,6 @@ int sysfs_add_file_mode(struct sysfs_dirent *dir_sd,
const struct attribute *attr, int type, mode_t amode)
{
umode_t mode = (amode & S_IALLUGO) | S_IFREG;
- struct sysfs_addrm_cxt acxt;
struct sysfs_dirent *sd;
int rc;
@@ -508,10 +507,7 @@ int sysfs_add_file_mode(struct sysfs_dirent *dir_sd,
return -ENOMEM;
sd->s_attr.attr = (void *)attr;
- sysfs_addrm_start(&acxt, dir_sd);
- rc = sysfs_add_one(&acxt, sd);
- sysfs_addrm_finish(&acxt);
-
+ rc = sysfs_add_one(dir_sd, sd);
if (rc)
sysfs_put(sd);
diff --git a/fs/sysfs/inode.c b/fs/sysfs/inode.c
index 1b7ed3c..ad9a30d 100644
--- a/fs/sysfs/inode.c
+++ b/fs/sysfs/inode.c
@@ -263,23 +263,17 @@ void sysfs_delete_inode(struct inode *inode)
int sysfs_hash_and_remove(struct sysfs_dirent *dir_sd, const char *name)
{
- struct sysfs_addrm_cxt acxt;
struct sysfs_dirent *sd;
if (!dir_sd)
return -ENOENT;
- sysfs_addrm_start(&acxt, dir_sd);
-
- sd = sysfs_find_dirent(dir_sd, name);
- if (sd)
- sysfs_remove_one(&acxt, sd);
-
- sysfs_addrm_finish(&acxt);
-
- if (sd)
+ sd = sysfs_get_dirent(dir_sd, name);
+ if (sd) {
+ sysfs_remove_one(sd);
+ sysfs_put(sd);
return 0;
- else
+ } else
return -ENOENT;
}
diff --git a/fs/sysfs/symlink.c b/fs/sysfs/symlink.c
index 05e4984..fc5fc86 100644
--- a/fs/sysfs/symlink.c
+++ b/fs/sysfs/symlink.c
@@ -31,7 +31,6 @@ int sysfs_create_link(struct kobject *kobj, struct kobject *target,
struct sysfs_dirent *parent_sd = NULL;
struct sysfs_dirent *target_sd = NULL;
struct sysfs_dirent *sd = NULL;
- struct sysfs_addrm_cxt acxt;
int error;
BUG_ON(!name);
@@ -65,10 +64,7 @@ int sysfs_create_link(struct kobject *kobj, struct kobject *target,
sd->s_symlink.target_sd = target_sd;
target_sd = NULL; /* reference is now owned by the symlink */
- sysfs_addrm_start(&acxt, parent_sd);
- error = sysfs_add_one(&acxt, sd);
- sysfs_addrm_finish(&acxt);
-
+ error = sysfs_add_one(parent_sd, sd);
if (error)
goto out_put;
diff --git a/fs/sysfs/sysfs.h b/fs/sysfs/sysfs.h
index f5b53cf..f17ebb8 100644
--- a/fs/sysfs/sysfs.h
+++ b/fs/sysfs/sysfs.h
@@ -77,16 +77,6 @@ static inline unsigned int sysfs_type(struct sysfs_dirent *sd)
}
/*
- * Context structure to be used while adding/removing nodes.
- */
-struct sysfs_addrm_cxt {
- struct sysfs_dirent *parent_sd;
- struct inode *parent_inode;
- struct sysfs_dirent *removed;
- int cnt;
-};
-
-/*
* mount.c
*/
extern struct sysfs_dirent sysfs_root;
@@ -106,11 +96,8 @@ extern const struct inode_operations sysfs_dir_inode_operations;
struct dentry *sysfs_get_dentry(struct sysfs_dirent *sd);
struct sysfs_dirent *sysfs_get_active_two(struct sysfs_dirent *sd);
void sysfs_put_active_two(struct sysfs_dirent *sd);
-void sysfs_addrm_start(struct sysfs_addrm_cxt *acxt,
- struct sysfs_dirent *parent_sd);
-int sysfs_add_one(struct sysfs_addrm_cxt *acxt, struct sysfs_dirent *sd);
-void sysfs_remove_one(struct sysfs_addrm_cxt *acxt, struct sysfs_dirent *sd);
-void sysfs_addrm_finish(struct sysfs_addrm_cxt *acxt);
+int sysfs_add_one(struct sysfs_dirent *parent_sd, struct sysfs_dirent *sd);
+void sysfs_remove_one(struct sysfs_dirent *sd);
struct sysfs_dirent *sysfs_find_dirent(struct sysfs_dirent *parent_sd,
const unsigned char *name);
--
1.6.1.2.350.g88cc
next prev parent reply other threads:[~2009-05-21 0:28 UTC|newest]
Thread overview: 200+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-20 4:09 [PATCH 0/20] Sysfs cleanups Eric W. Biederman
2009-05-20 15:37 ` Greg KH
2009-05-20 23:04 ` Eric W. Biederman
2009-05-21 0:27 ` [PATCH 01/20] sysfs: Implement sysfs_rename_link Eric W. Biederman
2009-05-21 0:27 ` [PATCH 02/20] driver core: Use sysfs_rename_link in device_rename Eric W. Biederman
2009-05-21 0:27 ` [PATCH 03/20] sysfs: Remove now unnecessary error reporting suppression Eric W. Biederman
2009-05-21 0:27 ` [PATCH 04/20] sysfs: Handle the general case of removing of directories with subdirectories Eric W. Biederman
2009-05-21 0:27 ` [PATCH 05/20] sysfs: Rename sysfs_d_iput to sysfs_dentry_iput Eric W. Biederman
2009-05-21 0:28 ` [PATCH 06/20] sysfs: Use dentry_ops instead of directly playing with the dcache Eric W. Biederman
2009-05-21 0:28 ` [PATCH 07/20] sysfs: Simplify sysfs_chmod_file semantics Eric W. Biederman
2009-05-21 0:28 ` [PATCH 08/20] sysfs: Optimize just changing the sysfs file mode Eric W. Biederman
2009-05-21 0:28 ` [PATCH 09/20] sysfs: Simplify iattr assignments Eric W. Biederman
2009-05-21 0:28 ` [PATCH 10/20] sysfs: Fix locking and factor out sysfs_sd_setattr Eric W. Biederman
2009-05-21 0:28 ` [PATCH 11/20] sysfs: Update s_iattr on link and unlink Eric W. Biederman
2009-05-21 0:28 ` [PATCH 12/20] sysfs: Nicely indent sysfs_symlink_inode_operations Eric W. Biederman
2009-05-21 0:28 ` [PATCH 13/20] sysfs: Implement sysfs_getattr & sysfs_permission Eric W. Biederman
2009-05-21 0:28 ` [PATCH 14/20] sysfs: In sysfs_chmod_file lazily propagate the mode change Eric W. Biederman
2009-05-21 0:28 ` Eric W. Biederman [this message]
2009-05-21 0:28 ` [PATCH 16/20] sysfs: Propagate renames to the vfs on demand Eric W. Biederman
2009-05-21 0:28 ` [PATCH 17/20] sysfs: Merge sysfs_rename_dir and sysfs_move_dir Eric W. Biederman
2009-05-21 0:28 ` [PATCH 18/20] sysfs: Pass super_block to sysfs_get_inode Eric W. Biederman
2009-05-21 0:28 ` [PATCH 19/20] sysfs: Kill unused sysfs_sb variable Eric W. Biederman
2009-05-21 0:28 ` [PATCH 20/20] sysfs: Normalize error handling in sysfs_fill_inode Eric W. Biederman
2009-05-21 9:43 ` Tejun Heo
2009-05-21 10:29 ` Eric W. Biederman
2009-05-21 9:42 ` [PATCH 17/20] sysfs: Merge sysfs_rename_dir and sysfs_move_dir Tejun Heo
2009-05-21 9:41 ` [PATCH 16/20] sysfs: Propagate renames to the vfs on demand Tejun Heo
2009-05-21 9:31 ` [PATCH 15/20] sysfs: Kill sysfs_addrm_start and sysfs_addrm_finish Tejun Heo
2009-05-21 9:16 ` [PATCH 14/20] sysfs: In sysfs_chmod_file lazily propagate the mode change Tejun Heo
2009-05-21 9:14 ` [PATCH 13/20] sysfs: Implement sysfs_getattr & sysfs_permission Tejun Heo
2009-05-21 7:42 ` [PATCH 12/20] sysfs: Nicely indent sysfs_symlink_inode_operations Tejun Heo
2009-05-21 8:42 ` [PATCH 11/20] sysfs: Update s_iattr on link and unlink Tejun Heo
2009-05-21 7:42 ` [PATCH 10/20] sysfs: Fix locking and factor out sysfs_sd_setattr Tejun Heo
2009-05-21 7:31 ` [PATCH 09/20] sysfs: Simplify iattr assignments Tejun Heo
2009-05-21 7:29 ` [PATCH 08/20] sysfs: Optimize just changing the sysfs file mode Tejun Heo
2009-05-21 7:54 ` Eric W. Biederman
2009-05-21 8:41 ` Tejun Heo
2009-05-21 6:42 ` [PATCH 07/20] sysfs: Simplify sysfs_chmod_file semantics Tejun Heo
2009-05-21 6:41 ` [PATCH 06/20] sysfs: Use dentry_ops instead of directly playing with the dcache Tejun Heo
2009-05-21 7:37 ` Eric W. Biederman
2009-05-21 7:40 ` Tejun Heo
2009-05-21 6:24 ` [PATCH 05/20] sysfs: Rename sysfs_d_iput to sysfs_dentry_iput Tejun Heo
2009-05-21 6:23 ` [PATCH 04/20] sysfs: Handle the general case of removing of directories with subdirectories Tejun Heo
2009-05-21 7:29 ` Eric W. Biederman
2009-05-21 7:36 ` Tejun Heo
2009-05-21 8:04 ` Eric W. Biederman
2009-05-21 8:37 ` Tejun Heo
2009-05-21 9:18 ` Eric W. Biederman
2009-05-21 9:28 ` Tejun Heo
2009-05-23 6:33 ` Eric W. Biederman
2009-05-23 11:35 ` Kay Sievers
2009-05-23 20:09 ` Eric W. Biederman
2009-05-23 20:46 ` Kay Sievers
2009-05-21 5:37 ` [PATCH 03/20] sysfs: Remove now unnecessary error reporting suppression Tejun Heo
2009-05-21 6:12 ` Eric W. Biederman
2009-05-21 6:20 ` Tejun Heo
2009-05-21 1:49 ` [PATCH 01/20] sysfs: Implement sysfs_rename_link Tejun Heo
2009-05-21 5:35 ` Tejun Heo
2009-05-21 10:06 ` Kay Sievers
2009-05-21 10:29 ` Eric W. Biederman
2009-05-21 11:40 ` Kay Sievers
2009-05-28 0:14 ` Greg KH
2009-05-28 0:30 ` Kay Sievers
2009-05-28 0:37 ` Greg KH
2009-05-28 22:58 ` [PATCH 0/24] sysfs cleanups Eric W. Biederman
2009-05-28 23:00 ` [PATCH 01/24] sysfs: Implement sysfs_rename_link Eric W. Biederman
2009-05-28 23:00 ` [PATCH 02/24] driver core: Use sysfs_rename_link in device_rename Eric W. Biederman
2009-05-28 23:00 ` [PATCH 03/24] sysfs: Remove now unnecessary error reporting suppression Eric W. Biederman
2009-05-28 23:00 ` [PATCH 04/24] sysfs: Normalize removing sysfs directories Eric W. Biederman
2009-05-29 9:14 ` Tejun Heo
2009-05-29 16:52 ` Eric W. Biederman
2009-05-30 10:43 ` Tejun Heo
2009-05-30 13:07 ` Eric W. Biederman
2009-05-30 13:20 ` Tejun Heo
2009-05-30 14:29 ` Eric W. Biederman
2009-05-30 13:59 ` Kay Sievers
2009-05-30 14:19 ` James Bottomley
2009-05-30 15:15 ` Eric W. Biederman
2009-05-30 15:51 ` James Bottomley
2009-05-30 21:20 ` Eric W. Biederman
2009-05-28 23:00 ` [PATCH 05/24] sysfs: Rename sysfs_d_iput to sysfs_dentry_iput Eric W. Biederman
2009-05-28 23:00 ` [PATCH 06/24] sysfs: Use dentry_ops instead of directly playing with the dcache Eric W. Biederman
2009-05-28 23:00 ` [PATCH 07/24] sysfs: Simplify sysfs_chmod_file semantics Eric W. Biederman
2009-05-28 23:00 ` [PATCH 08/24] sysfs: Optimize just changing the sysfs file mode Eric W. Biederman
2009-05-28 23:00 ` [PATCH 09/24] sysfs: Simplify iattr assignments Eric W. Biederman
2009-05-28 23:00 ` [PATCH 10/24] sysfs: Fix locking and factor out sysfs_sd_setattr Eric W. Biederman
2009-05-28 23:00 ` [PATCH 11/24] sysfs: Update s_iattr on link and unlink Eric W. Biederman
2009-05-28 23:00 ` [PATCH 12/24] sysfs: Nicely indent sysfs_symlink_inode_operations Eric W. Biederman
2009-05-28 23:00 ` [PATCH 13/24] sysfs: Implement sysfs_getattr & sysfs_permission Eric W. Biederman
2009-05-28 23:00 ` [PATCH 14/24] sysfs: In sysfs_chmod_file lazily propagate the mode change Eric W. Biederman
2009-05-28 23:00 ` [PATCH 15/24] sysfs: Kill sysfs_addrm_start and sysfs_addrm_finish Eric W. Biederman
2009-05-28 23:00 ` [PATCH 16/24] sysfs: Propagate renames to the vfs on demand Eric W. Biederman
2009-05-28 23:00 ` [PATCH 17/24] sysfs: Merge sysfs_rename_dir and sysfs_move_dir Eric W. Biederman
2009-05-28 23:00 ` [PATCH 18/24] sysfs: Pass super_block to sysfs_get_inode Eric W. Biederman
2009-05-28 23:01 ` [PATCH 19/24] sysfs: Kill unused sysfs_sb variable Eric W. Biederman
2009-05-28 23:01 ` [PATCH 20/24] sysfs: Normalize error handling in sysfs_fill_inode Eric W. Biederman
2009-05-28 23:01 ` [PATCH 21/24] sysfs: Rename sysfs_mv_dir sysfs_rename Eric W. Biederman
2009-05-28 23:01 ` [PATCH 22/24] sysfs: Make sysfs_rename_link atomic Eric W. Biederman
2009-05-29 9:16 ` Tejun Heo
2009-05-29 17:17 ` Eric W. Biederman
2009-05-30 10:48 ` Tejun Heo
2009-05-28 23:01 ` [PATCH 23/24] driver core: Don't remove kobjects in device_shutdown Eric W. Biederman
2009-05-28 23:01 ` [PATCH 24/24] sysfs: In sysfs_add_one fail if the targe directory has been removed Eric W. Biederman
2009-05-29 9:18 ` Tejun Heo
2009-05-29 20:18 ` [PATCH 0/26] sysfs cleanups v3 Eric W. Biederman
2009-05-29 20:19 ` [PATCH 01/26] sysfs: Implement sysfs_rename_link Eric W. Biederman
2009-06-02 22:57 ` patch sysfs-implement-sysfs_rename_link.patch added to gregkh-2.6 tree gregkh
2009-05-29 20:19 ` [PATCH 02/26] driver core: Use sysfs_rename_link in device_rename Eric W. Biederman
2009-06-02 22:57 ` patch driver-core-use-sysfs_rename_link-in-device_rename.patch added to gregkh-2.6 tree gregkh
2009-05-29 20:19 ` [PATCH 03/26] sysfs: Remove now unnecessary error reporting suppression Eric W. Biederman
2009-06-02 22:57 ` patch sysfs-remove-now-unnecessary-error-reporting-suppression.patch added to gregkh-2.6 tree gregkh
2009-05-29 20:19 ` [PATCH 04/26] sysfs: sysfs_remove_dir stop checking for bogus cases Eric W. Biederman
2009-06-03 23:53 ` Greg KH
2009-06-04 0:41 ` Eric W. Biederman
2009-05-29 20:19 ` [PATCH 05/26] sysfs: Improve sysfs directory deletion debugging Eric W. Biederman
2009-05-29 20:19 ` [PATCH 06/26] sysfs: Don't hold addrm_start/addrm_finish over multiple removals Eric W. Biederman
2009-05-29 20:19 ` [PATCH 07/26] sysfs: Rename sysfs_d_iput to sysfs_dentry_iput Eric W. Biederman
2009-05-29 20:19 ` [PATCH 08/26] sysfs: Use dentry_ops instead of directly playing with the dcache Eric W. Biederman
2009-05-29 20:19 ` [PATCH 09/26] sysfs: Simplify sysfs_chmod_file semantics Eric W. Biederman
2009-05-29 20:19 ` [PATCH 10/26] sysfs: Optimize just changing the sysfs file mode Eric W. Biederman
2009-05-29 20:19 ` [PATCH 11/26] sysfs: Simplify iattr assignments Eric W. Biederman
2009-05-29 20:19 ` [PATCH 12/26] sysfs: Fix locking and factor out sysfs_sd_setattr Eric W. Biederman
2009-05-29 20:19 ` [PATCH 13/26] sysfs: Update s_iattr on link and unlink Eric W. Biederman
2009-05-29 20:19 ` [PATCH 14/26] sysfs: Nicely indent sysfs_symlink_inode_operations Eric W. Biederman
2009-05-29 20:19 ` [PATCH 15/26] sysfs: Implement sysfs_getattr & sysfs_permission Eric W. Biederman
2009-05-29 20:19 ` [PATCH 16/26] sysfs: In sysfs_chmod_file lazily propagate the mode change Eric W. Biederman
2009-05-29 20:19 ` [PATCH 17/26] sysfs: Kill sysfs_addrm_start and sysfs_addrm_finish Eric W. Biederman
2009-05-29 20:19 ` [PATCH 18/26] sysfs: Propagate renames to the vfs on demand Eric W. Biederman
2009-05-29 20:19 ` [PATCH 19/26] sysfs: Merge sysfs_rename_dir and sysfs_move_dir Eric W. Biederman
2009-05-29 20:19 ` [PATCH 20/26] sysfs: Pass super_block to sysfs_get_inode Eric W. Biederman
2009-05-29 20:19 ` [PATCH 21/26] sysfs: Kill unused sysfs_sb variable Eric W. Biederman
2009-05-29 20:19 ` [PATCH 22/26] sysfs: Normalize error handling in sysfs_fill_inode Eric W. Biederman
2009-05-29 20:19 ` [PATCH 23/26] sysfs: Rename sysfs_mv_dir sysfs_rename Eric W. Biederman
2009-05-29 20:19 ` [PATCH 24/26] sysfs: Make sysfs_rename_link atomic Eric W. Biederman
2009-05-29 20:19 ` [PATCH 25/26] driver core: Don't remove kobjects in device_shutdown Eric W. Biederman
2009-05-29 20:19 ` [PATCH 26/26] sysfs: In sysfs_add_one fail if the targe directory has been removed Eric W. Biederman
2009-05-28 1:51 ` [PATCH 01/20] sysfs: Implement sysfs_rename_link Eric W. Biederman
2009-05-23 20:13 ` [PATCH 21/20] sysfs: Rename sysfs_mv_dir sysfs_rename Eric W. Biederman
2009-05-23 20:13 ` [PATCH 22/20] sysfs: Make sysfs_rename_link atomic Eric W. Biederman
2009-05-23 21:32 ` Kay Sievers
2009-05-23 23:21 ` Kay Sievers
2009-05-24 13:03 ` Kay Sievers
2009-05-23 20:13 ` [PATCH 23/20] driver core: Don't remove kobjects in device_shutdown Eric W. Biederman
2009-05-23 22:15 ` Kay Sievers
2009-05-23 20:13 ` [PATCH 24/20] sysfs: In sysfs_add_one fail if the targe directory has been removed Eric W. Biederman
2009-05-23 21:29 ` Kay Sievers
2009-05-23 20:13 ` [PATCH 25/20] sysfs: Only support removing emtpy sysfs directories Eric W. Biederman
2009-05-23 21:27 ` Kay Sievers
2009-05-24 12:59 ` Kay Sievers
2009-05-24 14:17 ` Eric W. Biederman
2009-05-24 15:20 ` Kay Sievers
2009-05-25 2:06 ` Alan Stern
2009-05-25 11:45 ` Kay Sievers
2009-05-25 12:01 ` Kay Sievers
2009-05-25 15:49 ` Alan Stern
2009-05-25 18:19 ` Kay Sievers
2009-05-25 20:14 ` Alan Stern
2009-05-26 16:27 ` Kay Sievers
2009-05-26 19:29 ` Alan Stern
2009-05-26 21:09 ` James Bottomley
2009-05-26 21:13 ` Kay Sievers
2009-05-26 21:56 ` Alan Stern
2009-05-26 22:03 ` Kay Sievers
2009-05-26 23:49 ` James Bottomley
2009-05-27 0:02 ` Kay Sievers
2009-05-27 2:17 ` Alan Stern
2009-05-27 11:35 ` Hannes Reinecke
2009-05-27 16:01 ` James Bottomley
2009-05-27 16:16 ` Alan Stern
2009-05-27 16:24 ` James Bottomley
2009-05-27 17:01 ` Alan Stern
2009-05-27 17:08 ` James Bottomley
2009-05-27 18:07 ` Alan Stern
2009-05-27 19:44 ` James Bottomley
2009-05-27 20:40 ` Alan Stern
2009-05-27 20:49 ` James Bottomley
2009-05-27 21:31 ` Alan Stern
2009-05-27 21:42 ` James Bottomley
2009-05-27 22:15 ` Alan Stern
2009-05-27 22:22 ` James Bottomley
2009-05-28 15:24 ` Alan Stern
2009-05-28 15:45 ` Eric W. Biederman
2009-05-28 17:51 ` Alan Stern
2009-05-28 18:21 ` James Bottomley
2009-05-28 20:02 ` Alan Stern
2009-05-28 20:10 ` James Bottomley
2009-05-28 21:04 ` Alan Stern
2009-05-29 12:32 ` Hannes Reinecke
2009-05-29 20:08 ` Alan Stern
2009-05-27 18:00 ` Eric W. Biederman
2009-05-27 18:15 ` Alan Stern
2009-05-27 18:24 ` Eric W. Biederman
2009-05-27 21:38 ` Alan Stern
2009-05-27 22:06 ` Eric W. Biederman
2009-05-27 22:18 ` Alan Stern
2009-05-26 21:39 ` Alan Stern
2009-05-25 7:44 ` Eric W. Biederman
2009-05-25 7:53 ` Eric W. Biederman
2009-05-25 10:51 ` Kay Sievers
2009-05-24 3:24 ` Tejun Heo
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=1242865694-2100-15-git-send-email-ebiederm@xmission.com \
--to=ebiederm@xmission.com \
--cc=akpm@linux-foundation.org \
--cc=cornelia.huck@de.ibm.com \
--cc=ebiederm@aristanetworks.com \
--cc=gregkh@suse.de \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tj@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 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).