Hi, This is a patch to fix block shell of tools. The block shell show a wrong message, when we specify a wrong path of vbd file. Before applying my patch: # ls /root/ttylinux-xen ls: cannot access /root/ttylinux-xen: No such file or directory # xm create -c /etc/xen/ttylinux Using config file "/etc/xen/ttylinux". Error: Device 769 (vbd) could not be connected. File /root/ttylinux-xen is read-only, and so I will not mount it read-write in a guest domain. After applying my patch: # xm create ttylinux Using config file "/etc/xen/ttylinux". Error: Device 769 (vbd) could not be connected. /root/ttylinux-xen does not exist. Signed-off-by: Akio Takebe <takebe_akio@jp.fujitsu.com> Best Regards, Akio Takebe _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Keir Fraser
2007-Dec-05 10:20 UTC
Re: [Xen-devel] [Patch] fix canonicalize-existing vbd file
The -e option is not available in all versions of readlink. -- Keir On 3/12/07 09:44, "Akio Takebe" <takebe_akio@jp.fujitsu.com> wrote:> Hi, > > This is a patch to fix block shell of tools. > The block shell show a wrong message, > when we specify a wrong path of vbd file. > > Before applying my patch: > # ls /root/ttylinux-xen > ls: cannot access /root/ttylinux-xen: No such file or directory > # xm create -c /etc/xen/ttylinux > Using config file "/etc/xen/ttylinux". > Error: Device 769 (vbd) could not be connected. > File /root/ttylinux-xen is read-only, and so I will not > mount it read-write in a guest domain. > > After applying my patch: > # xm create ttylinux > Using config file "/etc/xen/ttylinux". > Error: Device 769 (vbd) could not be connected. /root/ttylinux-xen does not > exist. > > Signed-off-by: Akio Takebe <takebe_akio@jp.fujitsu.com> > > Best Regards, > > Akio Takebe > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Akio Takebe
2007-Dec-05 14:05 UTC
Re: [Xen-devel] [Patch] fix canonicalize-existing vbd file
Hi, Keir>The -e option is not available in all versions of readlink.Thank you for your review. How about the blew? Signed-off-by: Akio Takebe <takebe_akio@jp.fujitsu.com> --- diff -r 3057f813da14 tools/examples/block --- a/tools/examples/block Thu Nov 29 19:30:33 2007 +0000 +++ b/tools/examples/block Wed Dec 05 22:57:56 2007 +0900 @@ -219,7 +219,8 @@ case "$command" in file) # Canonicalise the file, for sharing check comparison, and the mode # for ease of use here. - file=$(readlink -f "$p") || fatal "$p does not exist." + test -f "$p" || fatal "$p does not exist." + file=$(readlink -f "$p") mode=$(canonicalise_mode "$mode") claim_lock "block" _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Keir Fraser
2007-Dec-05 14:12 UTC
Re: [Xen-devel] [Patch] fix canonicalize-existing vbd file
Do you mean to ''test -f "$file"''? A symlink will always fail ''test -f'', and $p can be a symlink. -- Keir On 5/12/07 14:05, "Akio Takebe" <takebe_akio@jp.fujitsu.com> wrote:> Hi, Keir > >> The -e option is not available in all versions of readlink. > Thank you for your review. > How about the blew? > > Signed-off-by: Akio Takebe <takebe_akio@jp.fujitsu.com> > > > --- > diff -r 3057f813da14 tools/examples/block > --- a/tools/examples/block Thu Nov 29 19:30:33 2007 +0000 > +++ b/tools/examples/block Wed Dec 05 22:57:56 2007 +0900 > @@ -219,7 +219,8 @@ case "$command" in > file) > # Canonicalise the file, for sharing check comparison, and the mode > # for ease of use here. > - file=$(readlink -f "$p") || fatal "$p does not exist." > + test -f "$p" || fatal "$p does not exist." > + file=$(readlink -f "$p") > mode=$(canonicalise_mode "$mode") > > claim_lock "block"_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Ian Jackson
2007-Dec-05 14:26 UTC
Re: [Xen-devel] [Patch] fix canonicalize-existing vbd file
Keir Fraser writes ("Re: [Xen-devel] [Patch] fix canonicalize-existing vbd file"):> Do you mean to ''test -f "$file"''? A symlink will always fail ''test -f'', and > $p can be a symlink.test -f calls stat(2) rather than lstat(2) and only falls back to the latter if the former fails. So if the argument is a link which can be dereferenced, test -f tells you whether the link target is a file. If you want to know whether $file is a file or a symlink to a file test -f "$file" precisely wrong as it is true in both those cases. See http://www.opengroup.org/onlinepubs/009695399/utilities/test.html which says With the exception of the -h file and -L file primaries, if a file argument is a symbolic link, test shall evaluate the expression by resolving the symbolic link and using the file referenced by the link. It''s actually true, too: mariner:~/junk> touch a mariner:~/junk> ln -s a b mariner:~/junk> test -f a && echo file file mariner:~/junk> test -f b && echo file file mariner:~/junk> test -L b && echo link link mariner:~/junk> ln -s enoent c mariner:~/junk> test -f c && echo file mariner:~/junk> test -L c && echo link link mariner:~/junk> Ian. _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Akio Takebe
2007-Dec-05 14:57 UTC
Re: [Xen-devel] [Patch] fix canonicalize-existing vbd file
Hi, Keir and Ian Thank you, Ian. How about the attached new patch? Signed-off-by: Akio Takebe <takebe_akio@jp.fujitsu.com> Best Regards, Akio Takebe>Keir Fraser writes ("Re: [Xen-devel] [Patch] fix canonicalize-existing vbd >file"): >> Do you mean to ''test -f "$file"''? A symlink will always fail ''test -f'', and >> $p can be a symlink. > >test -f calls stat(2) rather than lstat(2) and only falls back to the >latter if the former fails. So if the argument is a link which can be >dereferenced, test -f tells you whether the link target is a file. > >If you want to know whether $file is a file or a symlink to a file > test -f "$file" >precisely wrong as it is true in both those cases. > >See > http://www.opengroup.org/onlinepubs/009695399/utilities/test.html >which says > With the exception of the -h file and -L file primaries, if a > file argument is a symbolic link, test shall evaluate the > expression by resolving the symbolic link and using the file > referenced by the link. > >It''s actually true, too: > >mariner:~/junk> touch a >mariner:~/junk> ln -s a b >mariner:~/junk> test -f a && echo file >file >mariner:~/junk> test -f b && echo file >file >mariner:~/junk> test -L b && echo link >link >mariner:~/junk> ln -s enoent c >mariner:~/junk> test -f c && echo file >mariner:~/junk> test -L c && echo link >link >mariner:~/junk> > >Ian._______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Ian Jackson
2007-Dec-05 15:02 UTC
Re: [Xen-devel] [Patch] fix canonicalize-existing vbd file
Akio Takebe writes ("Re: [Xen-devel] [Patch] fix canonicalize-existing vbd file"):> How about the attached new patch?...> file=$(readlink -f "$p") || fatal "$p does not exist." > + test -f "$file" || fatal "$file does not exist." > mode=$(canonicalise_mode "$mode")That looks reasonable to me. Ian. PS: it would be slightly better in general to have error distinct and therefore distinguishable error messages. But that doesn''t seem very important here. _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel