Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3903b38c authored by Al Viro's avatar Al Viro
Browse files

[readdir] convert romfs



Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 5f6039ce
Loading
Loading
Loading
Loading
+9 −12
Original line number Diff line number Diff line
@@ -145,19 +145,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 +169,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 +193,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 +278,7 @@ static struct dentry *romfs_lookup(struct inode *dir, struct dentry *dentry,

static const struct file_operations romfs_dir_operations = {
	.read		= generic_read_dir,
	.readdir	= romfs_readdir,
	.iterate	= romfs_readdir,
	.llseek		= default_llseek,
};