<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-size:small">Hi Petr,</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Mar 23, 2020 at 11:49 PM Petr Vorel <<a href="mailto:pvorel@suse.cz" target="_blank">pvorel@suse.cz</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Li,<br>
<br>
...<br>
> > > > kernel/syscalls/copy_file_range/copy_file_range02.c<br>
> > > only affect test6 and test7<br>
> > >  6) Try to copy contents to a file chattred with +i<br>
> > >  *    flag -> EPERM<br>
> > >  * 7) Try to copy contents to a swapfile ->ETXTBSY<br>
> > Yes, it'd be bad to break all tests due it.<br>
<br>
> > Here is also problem with swapoff (or maybe chattr, mkswap, swapon; I don't<br>
> > remember), which returns exit code 255 on error, so it's not possible to<br>
> > distinguish this from the case whether command is not available (any idea,<br>
> > how<br>
> > to fix it?).<br>
<br>
> Maybe we could achieve a tst_cmd_available(char *cmd) in the C version?<br>
> which uses popen() to open a process like: "whereis/which command" and do<br>
> string parse in the result to see the path(/usr/bin/cmd, /usr/sbin/cmd) of<br>
> the bin if it has been found.<br>
Or how about loop whole path like whereis/which command? I want to cover also<br>
these "strange systems" (Android and embedded).<br></blockquote><div><br></div><div><div class="gmail_default" style="font-size:small">Yes, looping the whole PATH is necessary. I'd like to go the access() way which you improved in the last email.</div></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
I wonder if to use this all the time (e.g. in safe_run_cmd(), because solution<br>
in tst_run_cmd_fds_() (errno == ENOENT) works most of the time. Maybe changing<br>
exit code 255 to something less common (e.g. INT_MAX - 5).<br></blockquote><div><div class="gmail_default" style="font-size:small"></div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">That might be feasible. I hope to hear more voices from others here.</div></div><div class="gmail_default" style="font-size:small">@Cyril @Xu what do you think?<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Do you want to use tst_cmd_available() also  not only as API<br></blockquote><div><br></div><div class="gmail_default" style="font-size:small">Hmm. I guess we can add a new filed in tst_test struct as '.cmd_check' to make the command support checking automatically in the setup() phase. That's not very needed but better to testcase manage if we do.</div><div> </div></div>-- <br><div dir="ltr"><div dir="ltr"><div>Regards,<br></div><div>Li Wang<br></div></div></div></div>