lkml.org 
[lkml]   [2003]   [Feb]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: 2.5.61-mm1
On Sun, Feb 16, 2003 at 12:31:31AM +0000, Andrew Morton wrote:
> "James H. Cloos Jr." <cloos@jhcloos.com> wrote:
> >
> > I just tried 2.5.61 and 2.5.61-mm1 on a dell inspiron 8100.
> >
> > 2.5.61 is working OK, but -mm1 hung as soon as it tried to exec init.
> > init=/bin/bash showed the same failure.
> >
> > init(8) was able to print out it's first line, announcing its version
> > but then stopped. with init=/bin/bash bash did not output anything.
> >
>
> If you are using devfs then yes, there is a locking problem.
>
> If you are not using devfs then please send me your .config.
>
> Thanks.

Hello Andrew,

The following patch should enable smalldevfs to work with dcache_rcu. The
locking problem is because smalldevfs is written keeping fastwalk
in mind where as dcache_rcu backs out fastwalk code to 2.5.10 level.

Patch is based on 2.5.61-mm1.

Regards,
Maneesh

dcache_rcu-smalldevfs.patch

diff -urN linux-2.5.61-mm1/fs/devfs/base.c linux-2.5.61-mm1-smalldevfs-dcache_rcu/fs/devfs/base.c
--- linux-2.5.61-mm1/fs/devfs/base.c 2003-02-17 12:04:54.000000000 +0530
+++ linux-2.5.61-mm1-smalldevfs-dcache_rcu/fs/devfs/base.c 2003-02-17 12:29:46.000000000 +0530
@@ -60,8 +60,7 @@
memcpy(buf, *path, len);
buf[len] = '\0';

- spin_lock(&dcache_lock);
- err = link_path_walk(buf, nd); /* releases dcache_lock */
+ err = link_path_walk(buf, nd);

if (err)
return err;
@@ -101,14 +100,13 @@

memset(&nd, 0, sizeof(nd));
nd.flags = LOOKUP_PARENT;
- nd.mnt = devfs_vfsmount;
- nd.dentry = dir;
+ nd.mnt = mntget(devfs_vfsmount);
+ nd.dentry = dget(dir);

err = walk_parents_mkdir(&name, &nd, is_dir);
if (err)
return err;

- spin_lock(&dcache_lock);
err = link_path_walk(name, &nd);
if (err)
return err;
@@ -247,10 +245,9 @@
buf[sizeof(buf)-1] = '\0';

memset(&nd, 0, sizeof(nd));
- nd.mnt = devfs_vfsmount;
- nd.dentry = devfs_vfsmount->mnt_sb->s_root;
+ nd.mnt = mntget(devfs_vfsmount);
+ nd.dentry = dget(devfs_vfsmount->mnt_sb->s_root);

- spin_lock(&dcache_lock);
err = link_path_walk(buf, &nd);
if (!err) {
devfs_unregister(nd.dentry);

--
Maneesh Soni
IBM Linux Technology Center,
IBM India Software Lab, Bangalore.
Phone: +91-80-5044999 email: maneesh@in.ibm.com
http://lse.sourceforge.net/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:33    [W:0.048 / U:4.696 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site