Thread: RE: [SSI-devel] [debian] Readlink problem in mkinitrd
Brought to you by:
brucewalker,
rogertsang
From: Walker, B. J <bru...@hp...> - 2005-06-29 15:39:39
|
I'm sure we can "fix" mkinitrd and if necessary we can fix the readlink = program to understand CDSLs. However, I would like to understand what = problems we have. First, I believe /cluster/node{nodenum} may be unnecessary when running = OpenSSI. Why? Because when the kernel expands "node{nodenum}" it converts it to = node# (this is what CDSL means). So /etc/network --> = /cluster/node{nodenum}/etc/network will go to /cluster/node#/etc/network whether /cluster/node{nodenum} = exists or not.=20 What doesn't work is "cd /cluster/node{nodenum}". I think the builtin = "cd" isn't just giving the pathname to the kernel but is doing some = checking itself to make sure it exists; it then seems to readlink it and = then do the cd to the value it got from the readlink, bypassing the = kernel's ability to expand the CDSL. However, "cd" doesn't have the = same problem when you cd /etc/network (try it and do a /bin/pwd = afterwards and see you are in /cluster/node#/etc/network). /cluster/node{nodenum} is important if you want to run a base kernel on = an installed OpenSSI root, since the base kernel won't have the CDSL = code in it. Probably having it point to /cluster/node1 would work as = well. Anybody remember why we set it to nodetemplate rather than node1? = =20 So what things are breaking? Why? And what can/should be done? Bruce -----Original Message----- From: ssi...@li... = [mailto:ssi...@li...] On Behalf Of = Kilian CAVALOTTI Sent: Wednesday, June 29, 2005 6:50 AM To: Aneesh Kumar; OpenSSI developers Subject: Re: [SSI-devel] [debian] Readlink problem in mkinitrd On Wednesday 29 June 2005 15:40, Aneesh Kumar wrote: > on my system i have the below > > sarge-node1-xen:/cluster# ls -al > total 52 > drwxr-xr-x 11 root root 4096 Jun 10 18:33 . > drwxr-xr-x 23 root root 4096 Jun 29 19:05 .. > drwxr-xr-x 2 root root 4096 Jun 2 14:51 .fslock > drwxr-xr-x 3 root root 4096 Jun 2 11:52 dev > drwxr-xr-x 3 root root 4096 Jun 2 11:52 etc > drwxr-xr-x 2 root root 4096 Jun 29 19:08 init > -rw-r--r-- 1 root root 2 Jun 29 19:05 initnode > drwxr-xr-x 2 root root 4096 Jun 2 11:52 lib > drwxr-xr-x 5 root root 4096 Jun 2 11:52 node1 > drwxr-xr-x 5 root root 4096 Jun 2 11:52 node2 > drwxr-xr-x 5 root root 4096 Jun 2 11:52 nodetemplate > lrwxr-xr-x 1 root root 14 Jun 2 11:52 node{nodenum} -> = /cluster/node1 > -rw-r--r-- 1 root root 1 Jun 2 11:52 rootdisknode > drwxr-xr-x 5 root root 4096 Jun 2 11:52 var > sarge-node1-xen:/cluster# Hi Aneesh ;) Indeed, that's the problem. On cluster creation, the node{nodenum} CDSL = link correctly points to node1, when viewed from node 1. But, after a = reboot and after other nodes addition, it points to nodetemplate. I browsed list archives, and it appears that the problem has already = been discussed for 1.2 (see http://article.gmane.org/gmane.linux.cluster.ssic.devel/4002 and = following) For me, it seems that CDSL links are not resolved has they should be, = and {nodenum} is not translated in nodex, when viewed from node x. It's = quite annoying, since it breaks a lot of programs, based on readlink. = Especially, it breaks mkinitrd, which is used at each node addition. So what? No more CDSL? :) --=20 Kilian CAVALOTTI Administrateur r=E9seaux et = syst=E8mes UPMC / CNRS - LIP6 (C870) 8, rue du Capitaine Scott Tel. : 01 44 27 88 54 ------------------------------------------------------- SF.Net email is sponsored by: Discover Easy Linux Migration Strategies = from IBM. Find simple to follow Roadmaps, straightforward articles, = informative Webcasts and more! Get everything you need to get up to = speed, fast. http://ads.osdn.com/?ad_idt77&alloc_id=16492&op=3Dick _______________________________________________ ssic-linux-devel mailing list ssi...@li... https://lists.sourceforge.net/lists/listinfo/ssic-linux-devel |
From: Walker, B. J <bru...@hp...> - 2005-06-29 16:18:34
|
Pwd is built into the shell (like cd) and the shell remembers how it got = to where you are. /bin/pwd is a program that asks the kernel, which = figures out where you really are. Any symlink will cause the disagreement, I think. Bruce =20 -----Original Message----- From: ssi...@li... = [mailto:ssi...@li...] On Behalf Of = Kilian CAVALOTTI Sent: Wednesday, June 29, 2005 9:12 AM To: ssi...@li... Subject: Re: [SSI-devel] [debian] Readlink problem in mkinitrd On Wednesday 29 June 2005 17:39, Walker, Bruce J wrote: > However, "cd" doesn't have the same problem when you cd /etc/network =20 > (try it and do a /bin/pwd afterwards and see you are in=20 > /cluster/node#/etc/network). True. I was looking for a way to be check CDSL resolution, thanks. But, just for fun, why pwd and /bin/pwd don't return the same output? -------------------------------------------------------------------------= ------ ssi03:/# cd /etc/network ssi03:/etc/network# /bin/pwd /cluster/node3/etc/network ssi03:/etc/network# pwd /etc/network ssi03:/etc/network# which pwd /bin/pwd -------------------------------------------------------------------------= ------ Strange, huh? :) > So what things are breaking? Why? And what can/should be done? So, for now, mkinitrd is broken. Because of the -------------------------------------------------------------------------= ------ device=3D$(readlink -f "$1") -------------------------------------------------------------------------= ------ at line 443. Perhaps we could do something like: -------------------------------------------------------------------------= ------ device=3D$(readlink -f "$1") device=3D${device:$1} -------------------------------------------------------------------------= ------ --=20 Kilian CAVALOTTI Administrateur r=E9seaux et = syst=E8mes UPMC / CNRS - LIP6 (C870) 8, rue du Capitaine Scott Tel. : 01 44 27 88 54 ------------------------------------------------------- SF.Net email is sponsored by: Discover Easy Linux Migration Strategies = from IBM. Find simple to follow Roadmaps, straightforward articles, = informative Webcasts and more! Get everything you need to get up to = speed, fast. http://ads.osdn.com/?ad_idt77&alloc_id=16492&op=3Dick _______________________________________________ ssic-linux-devel mailing list ssi...@li... https://lists.sourceforge.net/lists/listinfo/ssic-linux-devel |
From: Kilian C. <kil...@li...> - 2005-06-30 19:15:03
|
Walker, Bruce J wrote: > Pwd is built into the shell (like cd) and the shell remembers how it go= t to > where you are. /bin/pwd is a program that asks the kernel, which figur= es out > where you really are. Obviously. I should connect my brain before posting... Thanks a lot for this precision. --=20 Kilian CAVALOTTI Ing=E9nieur Syst=E8mes & R=E9seaux LIP6/IA - C870 CNRS/UPMC F75015 Paris Tel : +33 1 44 27 88 54=20 |
From: Kilian C. <kil...@li...> - 2005-06-29 16:11:54
|
On Wednesday 29 June 2005 17:39, Walker, Bruce J wrote: > However, "cd" doesn't have the same problem when you cd /etc/network (try > it and do a /bin/pwd afterwards and see you are in > /cluster/node#/etc/network). True. I was looking for a way to be check CDSL resolution, thanks. But, just for fun, why pwd and /bin/pwd don't return the same output? =2D------------------------------------------------------------------------= =2D----- ssi03:/# cd /etc/network ssi03:/etc/network# /bin/pwd /cluster/node3/etc/network ssi03:/etc/network# pwd /etc/network ssi03:/etc/network# which pwd /bin/pwd =2D------------------------------------------------------------------------= =2D----- Strange, huh? :) > So what things are breaking? Why? And what can/should be done? So, for now, mkinitrd is broken. Because of the=20 =2D------------------------------------------------------------------------= =2D----- device=3D$(readlink -f "$1") =2D------------------------------------------------------------------------= =2D----- at line 443. Perhaps we could do something like: =2D------------------------------------------------------------------------= =2D----- device=3D$(readlink -f "$1") device=3D${device:$1} =2D------------------------------------------------------------------------= =2D----- =2D-=20 Kilian CAVALOTTI Administrateur r=E9seaux et syst=E8mes UPMC / CNRS - LIP6 (C870) 8, rue du Capitaine Scott Tel. : 01 44 27 88 54 |
From: Aneesh K. <ane...@gm...> - 2005-06-30 10:44:46
|
On 6/29/05, Walker, Bruce J <bru...@hp...> wrote: > I'm sure we can "fix" mkinitrd and if necessary we can fix the readlink p= rogram to understand CDSLs. However, I would like to understand what probl= ems we have. >=20 > First, I believe /cluster/node{nodenum} may be unnecessary when running O= penSSI. > Why? Because when the kernel expands "node{nodenum}" it converts it to n= ode# (this is what CDSL means). So /etc/network --> /cluster/node{nodenum= }/etc/network > will go to /cluster/node#/etc/network whether /cluster/node{nodenum} exis= ts or not. > What doesn't work is "cd /cluster/node{nodenum}". I think the builtin "c= d" isn't just giving the pathname to the kernel but is doing some checking = itself to make sure it exists;=20 I am not sure whether my understanding is correct. But i guess this is our OpenSSI kernel implementation issue. We map {nodenum} to the node number only when walking symlinks . Not when converting name to inodes. What that means is cd /cluster/node{nodenum} will cd to the directory which unfortunately in our case point to /cluster/node1 irrespective of what ever node you are. Where as cd /etc/network wil involve resolving a symlink by the kernel which is taken care inside OpenSSI. struct inode_operations cfs_symlink_inode_operations =3D { readlink: cfs_readlink, follow_link: cfs_follow_link, revalidate: cfs_revalidate, setattr: cfs_notify_change, }; i>t then seems to readlink it and then do the cd to the value it got from the readlink, bypassing the kernel's ability to expand the CDSL.=20 However, "cd" doesn't have the same problem when you cd /etc/network=20 (try it and do a /bin/pwd afterwards and see you are in /cluster/node#/etc/network). >=20 > /cluster/node{nodenum} is important if you want to run a base kernel on a= n installed OpenSSI root, since the base kernel won't have the CDSL code in= it. Probably having it point to /cluster/node1 would work as well. Anyb= ody remember why we set it to nodetemplate rather than node1? >=20 it is pointing to /cluster/node1 in my install as shown in the previous mai= n.=20 -aneesh |