[PATCH 1/2] kernfs: update sysfs_init_inode_attrs()

2013-11-23 Thread Tejun Heo
sysfs_init_inode_attrs() is a bit clumsy to use requiring the caller
to check whether @sd->s_iattr is already set or not.  Rename it to
sysfs_inode_attrs(), update it to check whether @sd->s_iattr is
already initialized before trying to initialize it and return
@sd->s_iattr.  This simplifies the callers.

While at it,

* Rename struct sysfs_inode_attrs pointer variables to "attrs".  As
  kernfs no longer deals with "struct attribute", this isn't confusing
  and makes it easier to distinguish from struct iattr pointers.

* A new field will be added to sysfs_inode_attrs.  Reindent in
  preparation.

This patch doesn't introduce any behavior changes.

Signed-off-by: Tejun Heo 
---
 fs/kernfs/inode.c   | 60 -
 fs/kernfs/kernfs-internal.h |  6 ++---
 2 files changed, 29 insertions(+), 37 deletions(-)

diff --git a/fs/kernfs/inode.c b/fs/kernfs/inode.c
index b4cae6f..a1f8382 100644
--- a/fs/kernfs/inode.c
+++ b/fs/kernfs/inode.c
@@ -43,15 +43,17 @@ void __init sysfs_inode_init(void)
panic("failed to init sysfs_backing_dev_info");
 }
 
-static struct sysfs_inode_attrs *sysfs_init_inode_attrs(struct sysfs_dirent 
*sd)
+static struct sysfs_inode_attrs *sysfs_inode_attrs(struct sysfs_dirent *sd)
 {
-   struct sysfs_inode_attrs *attrs;
struct iattr *iattrs;
 
-   attrs = kzalloc(sizeof(struct sysfs_inode_attrs), GFP_KERNEL);
-   if (!attrs)
+   if (sd->s_iattr)
+   return sd->s_iattr;
+
+   sd->s_iattr = kzalloc(sizeof(struct sysfs_inode_attrs), GFP_KERNEL);
+   if (!sd->s_iattr)
return NULL;
-   iattrs = >ia_iattr;
+   iattrs = >s_iattr->ia_iattr;
 
/* assign default attributes */
iattrs->ia_mode = sd->s_mode;
@@ -59,26 +61,20 @@ static struct sysfs_inode_attrs 
*sysfs_init_inode_attrs(struct sysfs_dirent *sd)
iattrs->ia_gid = GLOBAL_ROOT_GID;
iattrs->ia_atime = iattrs->ia_mtime = iattrs->ia_ctime = CURRENT_TIME;
 
-   return attrs;
+   return sd->s_iattr;
 }
 
 static int __kernfs_setattr(struct sysfs_dirent *sd, const struct iattr *iattr)
 {
-   struct sysfs_inode_attrs *sd_attrs;
+   struct sysfs_inode_attrs *attrs;
struct iattr *iattrs;
unsigned int ia_valid = iattr->ia_valid;
 
-   sd_attrs = sd->s_iattr;
+   attrs = sysfs_inode_attrs(sd);
+   if (!attrs)
+   return -ENOMEM;
 
-   if (!sd_attrs) {
-   /* setting attributes for the first time, allocate now */
-   sd_attrs = sysfs_init_inode_attrs(sd);
-   if (!sd_attrs)
-   return -ENOMEM;
-   sd->s_iattr = sd_attrs;
-   }
-   /* attributes were changed at least once in past */
-   iattrs = _attrs->ia_iattr;
+   iattrs = >ia_iattr;
 
if (ia_valid & ATTR_UID)
iattrs->ia_uid = iattr->ia_uid;
@@ -143,22 +139,19 @@ out:
 static int sysfs_sd_setsecdata(struct sysfs_dirent *sd, void **secdata,
   u32 *secdata_len)
 {
-   struct sysfs_inode_attrs *iattrs;
+   struct sysfs_inode_attrs *attrs;
void *old_secdata;
size_t old_secdata_len;
 
-   if (!sd->s_iattr) {
-   sd->s_iattr = sysfs_init_inode_attrs(sd);
-   if (!sd->s_iattr)
-   return -ENOMEM;
-   }
+   attrs = sysfs_inode_attrs(sd);
+   if (!attrs)
+   return -ENOMEM;
 
-   iattrs = sd->s_iattr;
-   old_secdata = iattrs->ia_secdata;
-   old_secdata_len = iattrs->ia_secdata_len;
+   old_secdata = attrs->ia_secdata;
+   old_secdata_len = attrs->ia_secdata_len;
 
-   iattrs->ia_secdata = *secdata;
-   iattrs->ia_secdata_len = *secdata_len;
+   attrs->ia_secdata = *secdata;
+   attrs->ia_secdata_len = *secdata_len;
 
*secdata = old_secdata;
*secdata_len = old_secdata_len;
@@ -216,17 +209,16 @@ static inline void set_inode_attr(struct inode *inode, 
struct iattr *iattr)
 
 static void sysfs_refresh_inode(struct sysfs_dirent *sd, struct inode *inode)
 {
-   struct sysfs_inode_attrs *iattrs = sd->s_iattr;
+   struct sysfs_inode_attrs *attrs = sd->s_iattr;
 
inode->i_mode = sd->s_mode;
-   if (iattrs) {
+   if (attrs) {
/* sysfs_dirent has non-default attributes
 * get them from persistent copy in sysfs_dirent
 */
-   set_inode_attr(inode, >ia_iattr);
-   security_inode_notifysecctx(inode,
-   iattrs->ia_secdata,
-   iattrs->ia_secdata_len);
+   set_inode_attr(inode, >ia_iattr);
+   security_inode_notifysecctx(inode, attrs->ia_secdata,
+   attrs->ia_secdata_len);
}
 
if (sysfs_type(sd) == SYSFS_DIR)
diff --git a/fs/kernfs/kernfs-internal.h b/fs/kernfs/kernfs-internal.h

[PATCH 1/2] kernfs: update sysfs_init_inode_attrs()

2013-11-23 Thread Tejun Heo
sysfs_init_inode_attrs() is a bit clumsy to use requiring the caller
to check whether @sd-s_iattr is already set or not.  Rename it to
sysfs_inode_attrs(), update it to check whether @sd-s_iattr is
already initialized before trying to initialize it and return
@sd-s_iattr.  This simplifies the callers.

While at it,

* Rename struct sysfs_inode_attrs pointer variables to attrs.  As
  kernfs no longer deals with struct attribute, this isn't confusing
  and makes it easier to distinguish from struct iattr pointers.

* A new field will be added to sysfs_inode_attrs.  Reindent in
  preparation.

This patch doesn't introduce any behavior changes.

Signed-off-by: Tejun Heo t...@kernel.org
---
 fs/kernfs/inode.c   | 60 -
 fs/kernfs/kernfs-internal.h |  6 ++---
 2 files changed, 29 insertions(+), 37 deletions(-)

diff --git a/fs/kernfs/inode.c b/fs/kernfs/inode.c
index b4cae6f..a1f8382 100644
--- a/fs/kernfs/inode.c
+++ b/fs/kernfs/inode.c
@@ -43,15 +43,17 @@ void __init sysfs_inode_init(void)
panic(failed to init sysfs_backing_dev_info);
 }
 
-static struct sysfs_inode_attrs *sysfs_init_inode_attrs(struct sysfs_dirent 
*sd)
+static struct sysfs_inode_attrs *sysfs_inode_attrs(struct sysfs_dirent *sd)
 {
-   struct sysfs_inode_attrs *attrs;
struct iattr *iattrs;
 
-   attrs = kzalloc(sizeof(struct sysfs_inode_attrs), GFP_KERNEL);
-   if (!attrs)
+   if (sd-s_iattr)
+   return sd-s_iattr;
+
+   sd-s_iattr = kzalloc(sizeof(struct sysfs_inode_attrs), GFP_KERNEL);
+   if (!sd-s_iattr)
return NULL;
-   iattrs = attrs-ia_iattr;
+   iattrs = sd-s_iattr-ia_iattr;
 
/* assign default attributes */
iattrs-ia_mode = sd-s_mode;
@@ -59,26 +61,20 @@ static struct sysfs_inode_attrs 
*sysfs_init_inode_attrs(struct sysfs_dirent *sd)
iattrs-ia_gid = GLOBAL_ROOT_GID;
iattrs-ia_atime = iattrs-ia_mtime = iattrs-ia_ctime = CURRENT_TIME;
 
-   return attrs;
+   return sd-s_iattr;
 }
 
 static int __kernfs_setattr(struct sysfs_dirent *sd, const struct iattr *iattr)
 {
-   struct sysfs_inode_attrs *sd_attrs;
+   struct sysfs_inode_attrs *attrs;
struct iattr *iattrs;
unsigned int ia_valid = iattr-ia_valid;
 
-   sd_attrs = sd-s_iattr;
+   attrs = sysfs_inode_attrs(sd);
+   if (!attrs)
+   return -ENOMEM;
 
-   if (!sd_attrs) {
-   /* setting attributes for the first time, allocate now */
-   sd_attrs = sysfs_init_inode_attrs(sd);
-   if (!sd_attrs)
-   return -ENOMEM;
-   sd-s_iattr = sd_attrs;
-   }
-   /* attributes were changed at least once in past */
-   iattrs = sd_attrs-ia_iattr;
+   iattrs = attrs-ia_iattr;
 
if (ia_valid  ATTR_UID)
iattrs-ia_uid = iattr-ia_uid;
@@ -143,22 +139,19 @@ out:
 static int sysfs_sd_setsecdata(struct sysfs_dirent *sd, void **secdata,
   u32 *secdata_len)
 {
-   struct sysfs_inode_attrs *iattrs;
+   struct sysfs_inode_attrs *attrs;
void *old_secdata;
size_t old_secdata_len;
 
-   if (!sd-s_iattr) {
-   sd-s_iattr = sysfs_init_inode_attrs(sd);
-   if (!sd-s_iattr)
-   return -ENOMEM;
-   }
+   attrs = sysfs_inode_attrs(sd);
+   if (!attrs)
+   return -ENOMEM;
 
-   iattrs = sd-s_iattr;
-   old_secdata = iattrs-ia_secdata;
-   old_secdata_len = iattrs-ia_secdata_len;
+   old_secdata = attrs-ia_secdata;
+   old_secdata_len = attrs-ia_secdata_len;
 
-   iattrs-ia_secdata = *secdata;
-   iattrs-ia_secdata_len = *secdata_len;
+   attrs-ia_secdata = *secdata;
+   attrs-ia_secdata_len = *secdata_len;
 
*secdata = old_secdata;
*secdata_len = old_secdata_len;
@@ -216,17 +209,16 @@ static inline void set_inode_attr(struct inode *inode, 
struct iattr *iattr)
 
 static void sysfs_refresh_inode(struct sysfs_dirent *sd, struct inode *inode)
 {
-   struct sysfs_inode_attrs *iattrs = sd-s_iattr;
+   struct sysfs_inode_attrs *attrs = sd-s_iattr;
 
inode-i_mode = sd-s_mode;
-   if (iattrs) {
+   if (attrs) {
/* sysfs_dirent has non-default attributes
 * get them from persistent copy in sysfs_dirent
 */
-   set_inode_attr(inode, iattrs-ia_iattr);
-   security_inode_notifysecctx(inode,
-   iattrs-ia_secdata,
-   iattrs-ia_secdata_len);
+   set_inode_attr(inode, attrs-ia_iattr);
+   security_inode_notifysecctx(inode, attrs-ia_secdata,
+   attrs-ia_secdata_len);
}
 
if (sysfs_type(sd) == SYSFS_DIR)
diff --git a/fs/kernfs/kernfs-internal.h b/fs/kernfs/kernfs-internal.h
index 

[PATCH 1/2] kernfs: update sysfs_init_inode_attrs()

2013-11-04 Thread Tejun Heo
sysfs_init_inode_attrs() is a bit clumsy to use requiring the caller
to check whether @sd->s_iattr is already set or not.  Rename it to
sysfs_inode_attrs(), update it to check whether @sd->s_iattr is
already initialized before trying to initialize it and return
@sd->s_iattr.  This simplifies the callers.

While at it,

* Rename struct sysfs_inode_attrs pointer variables to "attrs".  As
  kernfs no longer deals with "struct attribute", this isn't confusing
  and makes it easier to distinguish from struct iattr pointers.

* A new field will be added to sysfs_inode_attrs.  Reindent in
  preparation.

This patch doesn't introduce any behavior changes.

Signed-off-by: Tejun Heo 
---
 fs/kernfs/inode.c   | 60 -
 fs/kernfs/kernfs-internal.h |  6 ++---
 2 files changed, 29 insertions(+), 37 deletions(-)

diff --git a/fs/kernfs/inode.c b/fs/kernfs/inode.c
index b4cae6f..a1f8382 100644
--- a/fs/kernfs/inode.c
+++ b/fs/kernfs/inode.c
@@ -43,15 +43,17 @@ void __init sysfs_inode_init(void)
panic("failed to init sysfs_backing_dev_info");
 }
 
-static struct sysfs_inode_attrs *sysfs_init_inode_attrs(struct sysfs_dirent 
*sd)
+static struct sysfs_inode_attrs *sysfs_inode_attrs(struct sysfs_dirent *sd)
 {
-   struct sysfs_inode_attrs *attrs;
struct iattr *iattrs;
 
-   attrs = kzalloc(sizeof(struct sysfs_inode_attrs), GFP_KERNEL);
-   if (!attrs)
+   if (sd->s_iattr)
+   return sd->s_iattr;
+
+   sd->s_iattr = kzalloc(sizeof(struct sysfs_inode_attrs), GFP_KERNEL);
+   if (!sd->s_iattr)
return NULL;
-   iattrs = >ia_iattr;
+   iattrs = >s_iattr->ia_iattr;
 
/* assign default attributes */
iattrs->ia_mode = sd->s_mode;
@@ -59,26 +61,20 @@ static struct sysfs_inode_attrs 
*sysfs_init_inode_attrs(struct sysfs_dirent *sd)
iattrs->ia_gid = GLOBAL_ROOT_GID;
iattrs->ia_atime = iattrs->ia_mtime = iattrs->ia_ctime = CURRENT_TIME;
 
-   return attrs;
+   return sd->s_iattr;
 }
 
 static int __kernfs_setattr(struct sysfs_dirent *sd, const struct iattr *iattr)
 {
-   struct sysfs_inode_attrs *sd_attrs;
+   struct sysfs_inode_attrs *attrs;
struct iattr *iattrs;
unsigned int ia_valid = iattr->ia_valid;
 
-   sd_attrs = sd->s_iattr;
+   attrs = sysfs_inode_attrs(sd);
+   if (!attrs)
+   return -ENOMEM;
 
-   if (!sd_attrs) {
-   /* setting attributes for the first time, allocate now */
-   sd_attrs = sysfs_init_inode_attrs(sd);
-   if (!sd_attrs)
-   return -ENOMEM;
-   sd->s_iattr = sd_attrs;
-   }
-   /* attributes were changed at least once in past */
-   iattrs = _attrs->ia_iattr;
+   iattrs = >ia_iattr;
 
if (ia_valid & ATTR_UID)
iattrs->ia_uid = iattr->ia_uid;
@@ -143,22 +139,19 @@ out:
 static int sysfs_sd_setsecdata(struct sysfs_dirent *sd, void **secdata,
   u32 *secdata_len)
 {
-   struct sysfs_inode_attrs *iattrs;
+   struct sysfs_inode_attrs *attrs;
void *old_secdata;
size_t old_secdata_len;
 
-   if (!sd->s_iattr) {
-   sd->s_iattr = sysfs_init_inode_attrs(sd);
-   if (!sd->s_iattr)
-   return -ENOMEM;
-   }
+   attrs = sysfs_inode_attrs(sd);
+   if (!attrs)
+   return -ENOMEM;
 
-   iattrs = sd->s_iattr;
-   old_secdata = iattrs->ia_secdata;
-   old_secdata_len = iattrs->ia_secdata_len;
+   old_secdata = attrs->ia_secdata;
+   old_secdata_len = attrs->ia_secdata_len;
 
-   iattrs->ia_secdata = *secdata;
-   iattrs->ia_secdata_len = *secdata_len;
+   attrs->ia_secdata = *secdata;
+   attrs->ia_secdata_len = *secdata_len;
 
*secdata = old_secdata;
*secdata_len = old_secdata_len;
@@ -216,17 +209,16 @@ static inline void set_inode_attr(struct inode *inode, 
struct iattr *iattr)
 
 static void sysfs_refresh_inode(struct sysfs_dirent *sd, struct inode *inode)
 {
-   struct sysfs_inode_attrs *iattrs = sd->s_iattr;
+   struct sysfs_inode_attrs *attrs = sd->s_iattr;
 
inode->i_mode = sd->s_mode;
-   if (iattrs) {
+   if (attrs) {
/* sysfs_dirent has non-default attributes
 * get them from persistent copy in sysfs_dirent
 */
-   set_inode_attr(inode, >ia_iattr);
-   security_inode_notifysecctx(inode,
-   iattrs->ia_secdata,
-   iattrs->ia_secdata_len);
+   set_inode_attr(inode, >ia_iattr);
+   security_inode_notifysecctx(inode, attrs->ia_secdata,
+   attrs->ia_secdata_len);
}
 
if (sysfs_type(sd) == SYSFS_DIR)
diff --git a/fs/kernfs/kernfs-internal.h b/fs/kernfs/kernfs-internal.h

[PATCH 1/2] kernfs: update sysfs_init_inode_attrs()

2013-11-04 Thread Tejun Heo
sysfs_init_inode_attrs() is a bit clumsy to use requiring the caller
to check whether @sd-s_iattr is already set or not.  Rename it to
sysfs_inode_attrs(), update it to check whether @sd-s_iattr is
already initialized before trying to initialize it and return
@sd-s_iattr.  This simplifies the callers.

While at it,

* Rename struct sysfs_inode_attrs pointer variables to attrs.  As
  kernfs no longer deals with struct attribute, this isn't confusing
  and makes it easier to distinguish from struct iattr pointers.

* A new field will be added to sysfs_inode_attrs.  Reindent in
  preparation.

This patch doesn't introduce any behavior changes.

Signed-off-by: Tejun Heo t...@kernel.org
---
 fs/kernfs/inode.c   | 60 -
 fs/kernfs/kernfs-internal.h |  6 ++---
 2 files changed, 29 insertions(+), 37 deletions(-)

diff --git a/fs/kernfs/inode.c b/fs/kernfs/inode.c
index b4cae6f..a1f8382 100644
--- a/fs/kernfs/inode.c
+++ b/fs/kernfs/inode.c
@@ -43,15 +43,17 @@ void __init sysfs_inode_init(void)
panic(failed to init sysfs_backing_dev_info);
 }
 
-static struct sysfs_inode_attrs *sysfs_init_inode_attrs(struct sysfs_dirent 
*sd)
+static struct sysfs_inode_attrs *sysfs_inode_attrs(struct sysfs_dirent *sd)
 {
-   struct sysfs_inode_attrs *attrs;
struct iattr *iattrs;
 
-   attrs = kzalloc(sizeof(struct sysfs_inode_attrs), GFP_KERNEL);
-   if (!attrs)
+   if (sd-s_iattr)
+   return sd-s_iattr;
+
+   sd-s_iattr = kzalloc(sizeof(struct sysfs_inode_attrs), GFP_KERNEL);
+   if (!sd-s_iattr)
return NULL;
-   iattrs = attrs-ia_iattr;
+   iattrs = sd-s_iattr-ia_iattr;
 
/* assign default attributes */
iattrs-ia_mode = sd-s_mode;
@@ -59,26 +61,20 @@ static struct sysfs_inode_attrs 
*sysfs_init_inode_attrs(struct sysfs_dirent *sd)
iattrs-ia_gid = GLOBAL_ROOT_GID;
iattrs-ia_atime = iattrs-ia_mtime = iattrs-ia_ctime = CURRENT_TIME;
 
-   return attrs;
+   return sd-s_iattr;
 }
 
 static int __kernfs_setattr(struct sysfs_dirent *sd, const struct iattr *iattr)
 {
-   struct sysfs_inode_attrs *sd_attrs;
+   struct sysfs_inode_attrs *attrs;
struct iattr *iattrs;
unsigned int ia_valid = iattr-ia_valid;
 
-   sd_attrs = sd-s_iattr;
+   attrs = sysfs_inode_attrs(sd);
+   if (!attrs)
+   return -ENOMEM;
 
-   if (!sd_attrs) {
-   /* setting attributes for the first time, allocate now */
-   sd_attrs = sysfs_init_inode_attrs(sd);
-   if (!sd_attrs)
-   return -ENOMEM;
-   sd-s_iattr = sd_attrs;
-   }
-   /* attributes were changed at least once in past */
-   iattrs = sd_attrs-ia_iattr;
+   iattrs = attrs-ia_iattr;
 
if (ia_valid  ATTR_UID)
iattrs-ia_uid = iattr-ia_uid;
@@ -143,22 +139,19 @@ out:
 static int sysfs_sd_setsecdata(struct sysfs_dirent *sd, void **secdata,
   u32 *secdata_len)
 {
-   struct sysfs_inode_attrs *iattrs;
+   struct sysfs_inode_attrs *attrs;
void *old_secdata;
size_t old_secdata_len;
 
-   if (!sd-s_iattr) {
-   sd-s_iattr = sysfs_init_inode_attrs(sd);
-   if (!sd-s_iattr)
-   return -ENOMEM;
-   }
+   attrs = sysfs_inode_attrs(sd);
+   if (!attrs)
+   return -ENOMEM;
 
-   iattrs = sd-s_iattr;
-   old_secdata = iattrs-ia_secdata;
-   old_secdata_len = iattrs-ia_secdata_len;
+   old_secdata = attrs-ia_secdata;
+   old_secdata_len = attrs-ia_secdata_len;
 
-   iattrs-ia_secdata = *secdata;
-   iattrs-ia_secdata_len = *secdata_len;
+   attrs-ia_secdata = *secdata;
+   attrs-ia_secdata_len = *secdata_len;
 
*secdata = old_secdata;
*secdata_len = old_secdata_len;
@@ -216,17 +209,16 @@ static inline void set_inode_attr(struct inode *inode, 
struct iattr *iattr)
 
 static void sysfs_refresh_inode(struct sysfs_dirent *sd, struct inode *inode)
 {
-   struct sysfs_inode_attrs *iattrs = sd-s_iattr;
+   struct sysfs_inode_attrs *attrs = sd-s_iattr;
 
inode-i_mode = sd-s_mode;
-   if (iattrs) {
+   if (attrs) {
/* sysfs_dirent has non-default attributes
 * get them from persistent copy in sysfs_dirent
 */
-   set_inode_attr(inode, iattrs-ia_iattr);
-   security_inode_notifysecctx(inode,
-   iattrs-ia_secdata,
-   iattrs-ia_secdata_len);
+   set_inode_attr(inode, attrs-ia_iattr);
+   security_inode_notifysecctx(inode, attrs-ia_secdata,
+   attrs-ia_secdata_len);
}
 
if (sysfs_type(sd) == SYSFS_DIR)
diff --git a/fs/kernfs/kernfs-internal.h b/fs/kernfs/kernfs-internal.h
index