]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - fs/sysfs/inode.c
mm: bdi: add separate writeback accounting capability
[linux-2.6-omap-h63xx.git] / fs / sysfs / inode.c
index b6ac4e6d6e7913c822e32f16f7a74dafeed831b6..f8b82e73b3bf0ee8a7d9403d6ffdf06ad15f5411 100644 (file)
@@ -1,7 +1,11 @@
 /*
- * inode.c - basic inode and dentry operations.
+ * fs/sysfs/inode.c - basic sysfs inode and dentry operations
  *
- * sysfs is Copyright (c) 2001-3 Patrick Mochel
+ * Copyright (c) 2001-3 Patrick Mochel
+ * Copyright (c) 2007 SUSE Linux Products GmbH
+ * Copyright (c) 2007 Tejun Heo <teheo@suse.de>
+ *
+ * This file is released under the GPLv2.
  *
  * Please see Documentation/filesystems/sysfs.txt for more information.
  */
@@ -20,19 +24,24 @@ extern struct super_block * sysfs_sb;
 
 static const struct address_space_operations sysfs_aops = {
        .readpage       = simple_readpage,
-       .prepare_write  = simple_prepare_write,
-       .commit_write   = simple_commit_write
+       .write_begin    = simple_write_begin,
+       .write_end      = simple_write_end,
 };
 
 static struct backing_dev_info sysfs_backing_dev_info = {
        .ra_pages       = 0,    /* No readahead */
-       .capabilities   = BDI_CAP_NO_ACCT_DIRTY | BDI_CAP_NO_WRITEBACK,
+       .capabilities   = BDI_CAP_NO_ACCT_AND_WRITEBACK,
 };
 
 static const struct inode_operations sysfs_inode_operations ={
        .setattr        = sysfs_setattr,
 };
 
+int __init sysfs_inode_init(void)
+{
+       return bdi_init(&sysfs_backing_dev_info);
+}
+
 int sysfs_setattr(struct dentry * dentry, struct iattr * iattr)
 {
        struct inode * inode = dentry->d_inode;
@@ -127,7 +136,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++;
 
@@ -157,11 +166,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;