From: Tejun Heo <[email protected]> Children list head is only meaninful for directory nodes. Move it into s_dir. This doesn't save any space currently but it will with further changes. Signed-off-by: Tejun Heo <[email protected]> Acked-by: Cornelia Huck <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]> --- fs/sysfs/dir.c | 17 +++++++++-------- fs/sysfs/inode.c | 2 +- fs/sysfs/sysfs.h | 3 ++- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c index 48a3ed4..4ad9422 100644 --- a/fs/sysfs/dir.c +++ b/fs/sysfs/dir.c @@ -26,7 +26,7 @@ static DEFINE_IDA(sysfs_ino_ida); * @sd: sysfs_dirent of interest * * Link @sd into its sibling list which starts from - * sd->s_parent->s_children. + * sd->s_parent->s_dir.children. * * Locking: * mutex_lock(sysfs_mutex) @@ -40,9 +40,9 @@ static void sysfs_link_sibling(struct sysfs_dirent *sd) /* Store directory entries in order by ino. This allows * readdir to properly restart without having to add a - * cursor into the s_children list. + * cursor into the s_dir.children list. */ - for (pos = &parent_sd->s_children; *pos; pos = &(*pos)->s_sibling) { + for (pos = &parent_sd->s_dir.children; *pos; pos = &(*pos)->s_sibling) { if (sd->s_ino < (*pos)->s_ino) break; } @@ -55,7 +55,7 @@ static void sysfs_link_sibling(struct sysfs_dirent *sd) * @sd: sysfs_dirent of interest * * Unlink @sd from its sibling list which starts from - * sd->s_parent->s_children. + * sd->s_parent->s_dir.children. * * Locking: * mutex_lock(sysfs_mutex) @@ -64,7 +64,8 @@ static void sysfs_unlink_sibling(struct sysfs_dirent *sd) { struct sysfs_dirent **pos; - for (pos = &sd->s_parent->s_children; *pos; pos = &(*pos)->s_sibling) { + for (pos = &sd->s_parent->s_dir.children; *pos; + pos = &(*pos)->s_sibling) { if (*pos == sd) { *pos = sd->s_sibling; sd->s_sibling = NULL; @@ -570,7 +571,7 @@ struct sysfs_dirent *sysfs_find_dirent(struct sysfs_dirent *parent_sd, { struct sysfs_dirent *sd; - for (sd = parent_sd->s_children; sd; sd = sd->s_sibling) + for (sd = parent_sd->s_dir.children; sd; sd = sd->s_sibling) if (!strcmp(sd->s_name, name)) return sd; return NULL; @@ -722,7 +723,7 @@ static void __sysfs_remove_dir(struct sysfs_dirent *dir_sd) pr_debug("sysfs %s: removing dir\n", dir_sd->s_name); sysfs_addrm_start(&acxt, dir_sd); - pos = &dir_sd->s_children; + pos = &dir_sd->s_dir.children; while (*pos) { struct sysfs_dirent *sd = *pos; @@ -922,7 +923,7 @@ static int sysfs_readdir(struct file * filp, void * dirent, filldir_t filldir) mutex_lock(&sysfs_mutex); /* Skip the dentries we have already reported */ - pos = parent_sd->s_children; + pos = parent_sd->s_dir.children; while (pos && (filp->f_pos > pos->s_ino)) pos = pos->s_sibling; diff --git a/fs/sysfs/inode.c b/fs/sysfs/inode.c index c40fb9f..2210cf0 100644 --- a/fs/sysfs/inode.c +++ b/fs/sysfs/inode.c @@ -127,7 +127,7 @@ static int sysfs_count_nlink(struct sysfs_dirent *sd) struct sysfs_dirent *child; int nr = 0; - for (child = sd->s_children; child; child = child->s_sibling) + for (child = sd->s_dir.children; child; child = child->s_sibling) if (sysfs_type(child) == SYSFS_DIR) nr++; diff --git a/fs/sysfs/sysfs.h b/fs/sysfs/sysfs.h index 60405a6..42b0327 100644 --- a/fs/sysfs/sysfs.h +++ b/fs/sysfs/sysfs.h @@ -1,6 +1,8 @@ /* type-specific structures for sysfs_dirent->s_* union members */ struct sysfs_elem_dir { struct kobject *kobj; + /* children list starts here and goes through sd->s_sibling */ + struct sysfs_dirent *children; }; struct sysfs_elem_symlink { @@ -28,7 +30,6 @@ struct sysfs_dirent { atomic_t s_active; struct sysfs_dirent *s_parent; struct sysfs_dirent *s_sibling; - struct sysfs_dirent *s_children; const char *s_name; union { -- 1.5.3.4 - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
- Follow-Ups:
- [PATCH 65/75] sysfs: implement sysfs_open_dirent
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 65/75] sysfs: implement sysfs_open_dirent
- References:
- [PATCH 01/75] platform: prefix MODALIAS with "platform:"
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 02/75] HOWTO: update ja_JP/HOWTO with latest changes
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 03/75] Driver core: make sysfs uevent-attributes static
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 04/75] Driver core: change add_uevent_var to use a struct
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 05/75] Driver core: add CONFIG_UEVENT_HELPER_PATH
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 06/75] Driver core: remove subsys_set_kset
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 07/75] Driver core: remove kset_set_kset_s
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 08/75] Driver core: remove subsys_put()
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 09/75] Driver core: remove subsys_get()
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 10/75] Driver core: remove put_bus()
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 11/75] Driver core: remove get_bus()
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 12/75] kobjects: fix up improper use of the kobject name field
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 13/75] cdev: remove unneeded setting of cdev names
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 14/75] Drivers: clean up direct setting of the name of a kset
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 15/75] kobject: remove the static array for the name
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 16/75] Driver core: clean up removed functions from the documentation
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 17/75] debugfs: helper for decimal challenged
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 18/75] sysfs/file.c - use mutex instead of semaphore
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 19/75] sysfs: cleanup semaphore.h
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 20/75] sysfs: Remove first pass at shadow directory support
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 21/75] sysfs: cosmetic changes in sysfs_lookup()
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 22/75] sysfs: simplify sysfs_rename_dir()
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 23/75] sysfs: make sysfs_add/remove_one() call link/unlink_sibling() implictly
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 24/75] sysfs: make sysfs_add_one() automatically check for duplicate entry
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 25/75] sysfs: make sysfs_addrm_finish() return void
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 26/75] dmi-id: Use dynamic sysfs attributes
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 27/75] dmi-id: Possible cleanup
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 28/75] Convert from class_device to device for drivers/video
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 29/75] Convert from class_device to device in drivers/char
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 30/75] Driver core: exclude kobject_uevent.c for !CONFIG_HOTPLUG
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 31/75] Driver core: add uevent file for bus and driver
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 32/75] Driver core: kerneldoc - kobject_uevent_env is not "usually KOBJ_MOVE"
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 33/75] Fix Firmware class name collision
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 34/75] drivers/base/power/: make 2 functions static
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 35/75] sysfs: Fix typos in fs/sysfs/file.c
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 36/75] sysdev: remove global sysdev drivers list
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 37/75] Driver core: Make platform_device.id an int
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 38/75] sysfs: fix i_mutex locking in sysfs_get_dentry()
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 39/75] sysfs: Move all of inode initialization into sysfs_init_inode
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 40/75] sysfs: Remove sysfs_instantiate
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 41/75] sysfs: Use kill_anon_super
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 42/75] sysfs: Make sysfs_mount static
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 43/75] sysfs: In sysfs_lookup don't open code sysfs_find_dirent
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 44/75] sysfs: Simplify readdir.
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 45/75] sysfs: Rewrite sysfs_drop_dentry.
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 46/75] sysfs: Introduce sysfs_rename_mutex
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 47/75] sysfs: simply sysfs_get_dentry
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 48/75] sysfs: Remove s_dentry
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 49/75] sysfs: Rewrite rename in terms of sysfs dirents
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 50/75] sysfs: Rewrite sysfs_move_dir in terms of sysfs dirents
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 51/75] PTY: add kernel parameter to overwrite legacy pty count
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 52/75] sysfs: spit a warning to users when they try to create a duplicate sysfs file
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 53/75] sysfs: fix comments of sysfs_add/remove_one()
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 54/75] sysfs: fix sysfs_chmod_file() such that it updates sd->s_mode too
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 55/75] sysfs: clean up header files
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 56/75] sysfs: kill sysfs_update_file()
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 57/75] sysfs: reposition sysfs_dirent->s_mode.
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 58/75] sysfs: kill unnecessary sysfs_get() in open paths
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 59/75] sysfs: kill unnecessary NULL pointer check in sysfs_release()
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 60/75] sysfs: make bin attr open get active reference of parent too
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 61/75] sysfs: make s_elem an anonymous union
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 62/75] sysfs: open code sysfs_attach_dentry()
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 63/75] sysfs: make sysfs_root a regular directory dirent
- From: Greg Kroah-Hartman <[email protected]>
- [PATCH 01/75] platform: prefix MODALIAS with "platform:"
- Prev by Date: [PATCH 63/75] sysfs: make sysfs_root a regular directory dirent
- Next by Date: [PATCH 65/75] sysfs: implement sysfs_open_dirent
- Previous by thread: [PATCH 63/75] sysfs: make sysfs_root a regular directory dirent
- Next by thread: [PATCH 65/75] sysfs: implement sysfs_open_dirent
- Index(es):