Erik Miller
2012-04-25 23:42:38 UTC
This project has been stagnant for a while. I wanted to see how hard
it would be to get it running with a 3.0 or 3.2 linux kernel. I'm not
a strong programmer, but I started converting it over today. With any
luck maybe we can get it working again.
it compiles okay, but it doesn't appear to do anything. I think the
problem might be in the dazukofs_d_compare function in the dentry.c
file, ~= line 159, which was not converted over correctly.
Anyone have any ideas?
[CODE]
diff -r -u a/dazukofs-3.1.4/dentry.c b/dazukofs-3.1.4/dentry.c
--- a/dazukofs-3.1.4/dentry.c 2010-05-30 06:58:04.000000000 -0400
+++ b/dazukofs-3.1.4/dentry.c 2012-04-25 16:32:41.777027772 -0400
@@ -116,10 +116,11 @@
{
struct dentry *lower_dentry = get_lower_dentry(dentry);
+ struct inode *lower_inode = get_lower_inode(dentry);
if (!lower_dentry->d_op || !lower_dentry->d_op->d_hash)
return 0;
- return lower_dentry->d_op->d_hash(lower_dentry, name);
+ return lower_dentry->d_op->d_hash(lower_dentry, lower_inode, name);
}
/**
@@ -160,8 +161,9 @@
{
struct dentry *lower_dentry = get_lower_dentry(dentry);
+ struct inode *lower_inode = get_lower_inode(dentry->d_inode);
if (lower_dentry->d_op && lower_dentry->d_op->d_compare)
- return lower_dentry->d_op->d_compare(lower_dentry, a, b);
+ return lower_dentry->d_op->d_compare(lower_dentry, lower_inode,
NULL, NULL, 0, a, b);
if (a->len != b->len)
return 1;
diff -r -u a/dazukofs-3.1.4/super.c b/dazukofs-3.1.4/super.c
--- a/dazukofs-3.1.4/super.c 2010-10-16 12:03:57.000000000 -0400
+++ b/dazukofs-3.1.4/super.c 2012-04-25 16:43:21.621011272 -0400
@@ -160,7 +160,8 @@
int err;
memset(&nd, 0, sizeof(struct nameidata));
- err = path_lookup(dev_name, LOOKUP_FOLLOW | LOOKUP_DIRECTORY, &nd);
+
+ err = kern_path(dev_name, LOOKUP_FOLLOW | LOOKUP_DIRECTORY, &nd.path);
if (err)
return err;
@@ -206,7 +207,7 @@
struct super_block *sb;
int err;
- err = get_sb_nodev(fs_type, flags, data, dazukofs_fill_super, mnt);
+ err = mount_nodev(fs_type, flags, data, dazukofs_fill_super);
if (err)
goto out;
@@ -306,7 +307,7 @@
static struct file_system_type dazukofs_fs_type = {
.owner = THIS_MODULE,
.name = "dazukofs",
- .get_sb = dazukofs_get_sb,
+ .mount = dazukofs_get_sb,
/*
* XXX: We are using kill_anon_super() instead of my own function.
* Is this OK?
[/CODE]
it would be to get it running with a 3.0 or 3.2 linux kernel. I'm not
a strong programmer, but I started converting it over today. With any
luck maybe we can get it working again.
it compiles okay, but it doesn't appear to do anything. I think the
problem might be in the dazukofs_d_compare function in the dentry.c
file, ~= line 159, which was not converted over correctly.
Anyone have any ideas?
[CODE]
diff -r -u a/dazukofs-3.1.4/dentry.c b/dazukofs-3.1.4/dentry.c
--- a/dazukofs-3.1.4/dentry.c 2010-05-30 06:58:04.000000000 -0400
+++ b/dazukofs-3.1.4/dentry.c 2012-04-25 16:32:41.777027772 -0400
@@ -116,10 +116,11 @@
{
struct dentry *lower_dentry = get_lower_dentry(dentry);
+ struct inode *lower_inode = get_lower_inode(dentry);
if (!lower_dentry->d_op || !lower_dentry->d_op->d_hash)
return 0;
- return lower_dentry->d_op->d_hash(lower_dentry, name);
+ return lower_dentry->d_op->d_hash(lower_dentry, lower_inode, name);
}
/**
@@ -160,8 +161,9 @@
{
struct dentry *lower_dentry = get_lower_dentry(dentry);
+ struct inode *lower_inode = get_lower_inode(dentry->d_inode);
if (lower_dentry->d_op && lower_dentry->d_op->d_compare)
- return lower_dentry->d_op->d_compare(lower_dentry, a, b);
+ return lower_dentry->d_op->d_compare(lower_dentry, lower_inode,
NULL, NULL, 0, a, b);
if (a->len != b->len)
return 1;
diff -r -u a/dazukofs-3.1.4/super.c b/dazukofs-3.1.4/super.c
--- a/dazukofs-3.1.4/super.c 2010-10-16 12:03:57.000000000 -0400
+++ b/dazukofs-3.1.4/super.c 2012-04-25 16:43:21.621011272 -0400
@@ -160,7 +160,8 @@
int err;
memset(&nd, 0, sizeof(struct nameidata));
- err = path_lookup(dev_name, LOOKUP_FOLLOW | LOOKUP_DIRECTORY, &nd);
+
+ err = kern_path(dev_name, LOOKUP_FOLLOW | LOOKUP_DIRECTORY, &nd.path);
if (err)
return err;
@@ -206,7 +207,7 @@
struct super_block *sb;
int err;
- err = get_sb_nodev(fs_type, flags, data, dazukofs_fill_super, mnt);
+ err = mount_nodev(fs_type, flags, data, dazukofs_fill_super);
if (err)
goto out;
@@ -306,7 +307,7 @@
static struct file_system_type dazukofs_fs_type = {
.owner = THIS_MODULE,
.name = "dazukofs",
- .get_sb = dazukofs_get_sb,
+ .mount = dazukofs_get_sb,
/*
* XXX: We are using kill_anon_super() instead of my own function.
* Is this OK?
[/CODE]