sysfs-iattr: attach sysfs_dirent before new inode
PATCH 1/3 sysfs-iattr: attach sysfs_dirent before new inode
o The following patch makes sure to attach sysfs_dirent to the dentry before allocation a new inode through sysfs_create(). This change is done as preparatory work for implementing ->i_op->setattr() functionality for sysfs objects.
Signed-off-by Maneesh Soni <[email protected]>
---
linux-2.6.12-rc5-mm1-maneesh/fs/sysfs/dir.c | 25 +++++++++++++++---------- 1 files changed, 15 insertions(+), 10 deletions(-)
fs/sysfs/dir.c renamed from fs/sysfs/dir.c~sysfs-iattr-attach-sysfs_dirent-before-new-inode +15 -10
@@ -102,18 +102,19 @@ static int create_dir(struct kobject * kdown (&p->d_inode->i_sem); *d =lookup_one_len (n, p,strlen (n));if (!IS_ERR (*d)) { - error =sysfs_create (*d, mode, init_dir); + error =sysfs_make_dirent (p->d_fsdata, *d, k, mode,SYSFS_DIR );if (!error) { - error =sysfs_make_dirent (p->d_fsdata, *d, k, mode, -SYSFS_DIR ); + error =sysfs_create (*d, mode, init_dir);if (!error) { p->d_inode->i_nlink++; (*d)->d_op = &sysfs_dentry_ops;d_rehash (*d); } } -if (error && (error != -EEXIST )) +if (error && (error != -EEXIST )) { +sysfs_put ((*d)->d_fsdata);d_drop (*d); + }dput (*d); }else error =PTR_ERR (*d);
@@ -172,17 +173,19 @@ static int sysfs_attach_attr(struct sysf init = init_file; } + dentry->d_fsdata =sysfs_get (sd); + sd->s_dentry = dentry; error =sysfs_create (dentry, (attr->mode &S_IALLUGO ) |S_IFREG , init); -if (error) +if (error) { +sysfs_put (sd);return error; + }if (bin_attr) { dentry->d_inode->i_size = bin_attr->size; dentry->d_inode->i_fop = &bin_fops; } dentry->d_op = &sysfs_dentry_ops; - dentry->d_fsdata =sysfs_get (sd); - sd->s_dentry = dentry;d_rehash (dentry);return 0 ;
@@ -192,13 +195,15 @@ static int sysfs_attach_link(struct sysf {int err =0 ; + dentry->d_fsdata =sysfs_get (sd); + sd->s_dentry = dentry; err =sysfs_create (dentry,S_IFLNK |S_IRWXUGO , init_symlink);if (!err) { dentry->d_op = &sysfs_dentry_ops; - dentry->d_fsdata =sysfs_get (sd); - sd->s_dentry = dentry;d_rehash (dentry); - } + }else +sysfs_put (sd); +return err; }
_
Signature · 17 lines
Maneesh Soni Linux Technology Center, IBM India Software Labs, Bangalore, India email: [email protected] Phone: 91-80-25044990 ------------------------------------------------------- This SF.Net email is sponsored by Yahoo. Introducing Yahoo! Search Developer Network - Create apps using Yahoo! Search APIs Find out how you can build Yahoo! directly into your own Applications - visit http://developer.yahoo.net/?fr=offad-ysdn-ostg-q22005 _______________________________________________ Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net [email protected] https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel