mmc: sdhci-of-arasan: keep consistent with upstream
[firefly-linux-kernel-4.4.55.git] / fs / romfs / super.c
index ae839482c34159d4bd6ad2cd18536760c9a55dd2..268733cda397eb7780f45d966cdca822daad16e8 100644 (file)
@@ -56,6 +56,8 @@
  * 2 of the Licence, or (at your option) any later version.
  */
 
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
 #include <linux/module.h>
 #include <linux/string.h>
 #include <linux/fs.h>
@@ -145,19 +147,18 @@ static const struct address_space_operations romfs_aops = {
 /*
  * read the entries from a directory
  */
-static int romfs_readdir(struct file *filp, void *dirent, filldir_t filldir)
+static int romfs_readdir(struct file *file, struct dir_context *ctx)
 {
-       struct inode *i = file_inode(filp);
+       struct inode *i = file_inode(file);
        struct romfs_inode ri;
        unsigned long offset, maxoff;
        int j, ino, nextfh;
-       int stored = 0;
        char fsname[ROMFS_MAXFN];       /* XXX dynamic? */
        int ret;
 
        maxoff = romfs_maxsize(i->i_sb);
 
-       offset = filp->f_pos;
+       offset = ctx->pos;
        if (!offset) {
                offset = i->i_ino & ROMFH_MASK;
                ret = romfs_dev_read(i->i_sb, offset, &ri, ROMFH_SIZE);
@@ -170,10 +171,10 @@ static int romfs_readdir(struct file *filp, void *dirent, filldir_t filldir)
        for (;;) {
                if (!offset || offset >= maxoff) {
                        offset = maxoff;
-                       filp->f_pos = offset;
+                       ctx->pos = offset;
                        goto out;
                }
-               filp->f_pos = offset;
+               ctx->pos = offset;
 
                /* Fetch inode info */
                ret = romfs_dev_read(i->i_sb, offset, &ri, ROMFH_SIZE);
@@ -194,16 +195,14 @@ static int romfs_readdir(struct file *filp, void *dirent, filldir_t filldir)
                nextfh = be32_to_cpu(ri.next);
                if ((nextfh & ROMFH_TYPE) == ROMFH_HRD)
                        ino = be32_to_cpu(ri.spec);
-               if (filldir(dirent, fsname, j, offset, ino,
-                           romfs_dtype_table[nextfh & ROMFH_TYPE]) < 0)
+               if (!dir_emit(ctx, fsname, j, ino,
+                           romfs_dtype_table[nextfh & ROMFH_TYPE]))
                        goto out;
 
-               stored++;
                offset = nextfh & ROMFH_MASK;
        }
-
 out:
-       return stored;
+       return 0;
 }
 
 /*
@@ -281,7 +280,7 @@ error:
 
 static const struct file_operations romfs_dir_operations = {
        .read           = generic_read_dir,
-       .readdir        = romfs_readdir,
+       .iterate        = romfs_readdir,
        .llseek         = default_llseek,
 };
 
@@ -356,9 +355,6 @@ static struct inode *romfs_iget(struct super_block *sb, unsigned long pos)
        case ROMFH_REG:
                i->i_fop = &romfs_ro_fops;
                i->i_data.a_ops = &romfs_aops;
-               if (i->i_sb->s_mtd)
-                       i->i_data.backing_dev_info =
-                               i->i_sb->s_mtd->backing_dev_info;
                if (nextfh & ROMFH_EXEC)
                        mode |= S_IXUGO;
                break;
@@ -383,7 +379,7 @@ static struct inode *romfs_iget(struct super_block *sb, unsigned long pos)
 eio:
        ret = -EIO;
 error:
-       printk(KERN_ERR "ROMFS: read error for inode 0x%lx\n", pos);
+       pr_err("read error for inode 0x%lx\n", pos);
        return ERR_PTR(ret);
 }
 
@@ -393,6 +389,7 @@ error:
 static struct inode *romfs_alloc_inode(struct super_block *sb)
 {
        struct romfs_inode_info *inode;
+
        inode = kmem_cache_alloc(romfs_inode_cachep, GFP_KERNEL);
        return inode ? &inode->vfs_inode : NULL;
 }
@@ -403,6 +400,7 @@ static struct inode *romfs_alloc_inode(struct super_block *sb)
 static void romfs_i_callback(struct rcu_head *head)
 {
        struct inode *inode = container_of(head, struct inode, i_rcu);
+
        kmem_cache_free(romfs_inode_cachep, ROMFS_I(inode));
 }
 
@@ -510,15 +508,13 @@ static int romfs_fill_super(struct super_block *sb, void *data, int silent)
        if (rsb->word0 != ROMSB_WORD0 || rsb->word1 != ROMSB_WORD1 ||
            img_size < ROMFH_SIZE) {
                if (!silent)
-                       printk(KERN_WARNING "VFS:"
-                              " Can't find a romfs filesystem on dev %s.\n",
+                       pr_warn("VFS: Can't find a romfs filesystem on dev %s.\n",
                               sb->s_id);
                goto error_rsb_inval;
        }
 
        if (romfs_checksum(rsb, min_t(size_t, img_size, 512))) {
-               printk(KERN_ERR "ROMFS: bad initial checksum on dev %s.\n",
-                      sb->s_id);
+               pr_err("bad initial checksum on dev %s.\n", sb->s_id);
                goto error_rsb_inval;
        }
 
@@ -526,8 +522,8 @@ static int romfs_fill_super(struct super_block *sb, void *data, int silent)
 
        len = strnlen(rsb->name, ROMFS_MAXFN);
        if (!silent)
-               printk(KERN_NOTICE "ROMFS: Mounting image '%*.*s' through %s\n",
-                      (unsigned) len, (unsigned) len, rsb->name, storage);
+               pr_notice("Mounting image '%*.*s' through %s\n",
+                         (unsigned) len, (unsigned) len, rsb->name, storage);
 
        kfree(rsb);
        rsb = NULL;
@@ -537,16 +533,14 @@ static int romfs_fill_super(struct super_block *sb, void *data, int silent)
 
        root = romfs_iget(sb, pos);
        if (IS_ERR(root))
-               goto error;
+               return PTR_ERR(root);
 
        sb->s_root = d_make_root(root);
        if (!sb->s_root)
-               goto error;
+               return -ENOMEM;
 
        return 0;
 
-error:
-       return -EINVAL;
 error_rsb_inval:
        ret = -EINVAL;
 error_rsb:
@@ -619,7 +613,7 @@ static int __init init_romfs_fs(void)
 {
        int ret;
 
-       printk(KERN_INFO "ROMFS MTD (C) 2007 Red Hat, Inc.\n");
+       pr_info("ROMFS MTD (C) 2007 Red Hat, Inc.\n");
 
        romfs_inode_cachep =
                kmem_cache_create("romfs_i",
@@ -628,13 +622,12 @@ static int __init init_romfs_fs(void)
                                  romfs_i_init_once);
 
        if (!romfs_inode_cachep) {
-               printk(KERN_ERR
-                      "ROMFS error: Failed to initialise inode cache\n");
+               pr_err("Failed to initialise inode cache\n");
                return -ENOMEM;
        }
        ret = register_filesystem(&romfs_fs_type);
        if (ret) {
-               printk(KERN_ERR "ROMFS error: Failed to register filesystem\n");
+               pr_err("Failed to register filesystem\n");
                goto error_register;
        }
        return 0;