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

Commit b0afd8e5 authored by Al Viro's avatar Al Viro
Browse files

isofs: don't bother with ->d_op for normal case



we only need it for joliet and case-insensitive mounts

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent f643ff55
Loading
Loading
Loading
Loading
+2 −22
Original line number Diff line number Diff line
@@ -29,13 +29,9 @@
#define BEQUIET

static int isofs_hashi(const struct dentry *parent, struct qstr *qstr);
static int isofs_hash(const struct dentry *parent, struct qstr *qstr);
static int isofs_dentry_cmpi(const struct dentry *parent,
		const struct dentry *dentry,
		unsigned int len, const char *str, const struct qstr *name);
static int isofs_dentry_cmp(const struct dentry *parent,
		const struct dentry *dentry,
		unsigned int len, const char *str, const struct qstr *name);

#ifdef CONFIG_JOLIET
static int isofs_hashi_ms(const struct dentry *parent, struct qstr *qstr);
@@ -134,10 +130,6 @@ static const struct super_operations isofs_sops = {


static const struct dentry_operations isofs_dentry_ops[] = {
	{
		.d_hash		= isofs_hash,
		.d_compare	= isofs_dentry_cmp,
	},
	{
		.d_hash		= isofs_hashi,
		.d_compare	= isofs_dentry_cmpi,
@@ -257,25 +249,12 @@ static int isofs_dentry_cmp_common(
	return 1;
}

static int
isofs_hash(const struct dentry *dentry, struct qstr *qstr)
{
	return isofs_hash_common(qstr, 0);
}

static int
isofs_hashi(const struct dentry *dentry, struct qstr *qstr)
{
	return isofs_hashi_common(qstr, 0);
}

static int
isofs_dentry_cmp(const struct dentry *parent, const struct dentry *dentry,
		unsigned int len, const char *str, const struct qstr *name)
{
	return isofs_dentry_cmp_common(len, str, name, 0, 0);
}

static int
isofs_dentry_cmpi(const struct dentry *parent, const struct dentry *dentry,
		unsigned int len, const char *str, const struct qstr *name)
@@ -930,7 +909,8 @@ static int isofs_fill_super(struct super_block *s, void *data, int silent)
	if (opt.check == 'r')
		table++;

	s->s_d_op = &isofs_dentry_ops[table];
	if (table)
		s->s_d_op = &isofs_dentry_ops[table - 1];

	/* get the root dentry */
	s->s_root = d_make_root(inode);
+2 −0
Original line number Diff line number Diff line
@@ -20,6 +20,8 @@ isofs_cmp(struct dentry *dentry, const char *compare, int dlen)
	struct qstr qstr;
	qstr.name = compare;
	qstr.len = dlen;
	if (likely(!dentry->d_op))
		return dentry->d_name.len != dlen || memcmp(dentry->d_name.name, compare, dlen);
	return dentry->d_op->d_compare(NULL, NULL, dentry->d_name.len, dentry->d_name.name, &qstr);
}