sysfs: make sysfs_root a regular directory dirent
Tejun Heo [Thu, 20 Sep 2007 07:05:12 +0000 (16:05 +0900)]
sysfs_root is different from a regular directory dirent in that it's
of type SYSFS_ROOT and doesn't have a name.  These differences aren't
used by anybody and only adds to complexity.  Make sysfs_root a
regular directory dirent.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

fs/sysfs/inode.c
fs/sysfs/mount.c
fs/sysfs/sysfs.h

index b6ac4e6..c40fb9f 100644 (file)
@@ -157,11 +157,6 @@ static void sysfs_init_inode(struct sysfs_dirent *sd, struct inode *inode)
 
        /* initialize inode according to type */
        switch (sysfs_type(sd)) {
-       case SYSFS_ROOT:
-               inode->i_op = &sysfs_dir_inode_operations;
-               inode->i_fop = &sysfs_dir_operations;
-               inc_nlink(inode); /* directory, account for "." */
-               break;
        case SYSFS_DIR:
                inode->i_op = &sysfs_dir_inode_operations;
                inode->i_fop = &sysfs_dir_operations;
index 28bf359..465902c 100644 (file)
@@ -24,8 +24,9 @@ static const struct super_operations sysfs_ops = {
 };
 
 struct sysfs_dirent sysfs_root = {
+       .s_name         = "",
        .s_count        = ATOMIC_INIT(1),
-       .s_flags        = SYSFS_ROOT,
+       .s_flags        = SYSFS_DIR,
        .s_mode         = S_IFDIR | S_IRWXU | S_IRUGO | S_IXUGO,
        .s_ino          = 1,
 };
index 2a68bfa..60405a6 100644 (file)
@@ -48,11 +48,10 @@ struct sysfs_dirent {
 #define SD_DEACTIVATED_BIAS            INT_MIN
 
 #define SYSFS_TYPE_MASK                        0x00ff
-#define SYSFS_ROOT                     0x0001
-#define SYSFS_DIR                      0x0002
-#define SYSFS_KOBJ_ATTR                        0x0004
-#define SYSFS_KOBJ_BIN_ATTR            0x0008
-#define SYSFS_KOBJ_LINK                        0x0020
+#define SYSFS_DIR                      0x0001
+#define SYSFS_KOBJ_ATTR                        0x0002
+#define SYSFS_KOBJ_BIN_ATTR            0x0004
+#define SYSFS_KOBJ_LINK                        0x0008
 #define SYSFS_COPY_NAME                        (SYSFS_DIR | SYSFS_KOBJ_LINK)
 
 #define SYSFS_FLAG_MASK                        ~SYSFS_TYPE_MASK