ChangeSet 1.1374, 2003/07/03 17:43:18-07:00, greg@kroah.com [PATCH] sysfs: add sysfs_rename_dir() Based on a patch written by Dan Aloni fs/sysfs/dir.c | 22 ++++++++++++++++++++++ include/linux/sysfs.h | 3 +++ 2 files changed, 25 insertions(+) diff -Nru a/fs/sysfs/dir.c b/fs/sysfs/dir.c --- a/fs/sysfs/dir.c Thu Jul 3 18:15:51 2003 +++ b/fs/sysfs/dir.c Thu Jul 3 18:15:51 2003 @@ -121,7 +121,29 @@ dput(parent); } +void sysfs_rename_dir(struct kobject * kobj, char *new_name) +{ + struct dentry * new_dentry, * parent; + + if (!strcmp(kobj->name, new_name)) + return; + + if (!kobj->parent) + return; + + parent = kobj->parent->dentry; + + down(&parent->d_inode->i_sem); + + new_dentry = sysfs_get_dentry(parent, new_name); + d_move(kobj->dentry, new_dentry); + + strlcpy(kobj->name, new_name, KOBJ_NAME_LEN); + + up(&parent->d_inode->i_sem); +} EXPORT_SYMBOL(sysfs_create_dir); EXPORT_SYMBOL(sysfs_remove_dir); +EXPORT_SYMBOL(sysfs_rename_dir); diff -Nru a/include/linux/sysfs.h b/include/linux/sysfs.h --- a/include/linux/sysfs.h Thu Jul 3 18:15:51 2003 +++ b/include/linux/sysfs.h Thu Jul 3 18:15:51 2003 @@ -39,6 +39,9 @@ extern void sysfs_remove_dir(struct kobject *); +extern void +sysfs_rename_dir(struct kobject *, char *new_name); + extern int sysfs_create_file(struct kobject *, struct attribute *);