[LTP] [PATCH] lib/tst_device.c: Add exception handling of function tst_find_free_loopdev
zhaogongyi
zhaogongyi@huawei.com
Fri Mar 12 10:54:34 CET 2021
Hi!
> In addition, when "loopdevno = ioctl(fd, LOOP_CTL_GET_FREE)" get free
> loop device i, and the loop device file /dev/loop%i has been removed,
> set_dev_path will return 1 and set " /dev/block/loop%i "
> in path. It might happened in many Embedded Systems because the test
> process's id is root always. So we could also Add exception handling?
Or maybe we can try to create it when node doesn't exist?
mknod("/dev/loop%i", S_IFBLK|0644, makedev(7, i))
-----------------------------------------------------------
>
> Hi Petr, Li,
>
> At first, it seems ok that using ST_RETRY_FUNC macro to try more times for
> race condition.
>
> In addition, when "loopdevno = ioctl(fd, LOOP_CTL_GET_FREE)" get free
> loop device i, and the loop device file /dev/loop%i has been removed,
> set_dev_path will return 1 and set " /dev/block/loop%i "
> in path. It might happened in many Embedded Systems because the test
> process's id is root always. So we could also Add exception handling?
>
> Thanks!
>
> Best Regards,
> Gongyi
>
> >
> > Hi,
> >
> > > > Because of race condition or abnormal env, set_dev_path may be
> > > > return 1. And when set_dev_path return 1 in tst_find_free_loopdev,
> > > > we should return Immediately.
> >
> >
> > > If there exists a race condition, I firstly think of the
> > > TST_RETRY_FUNC macro to try more times for the set_dev_path. That
> > > might help to get the function success in the follow-up tries.
> >
> > +1
> >
> > Kind regards,
> > Petr
More information about the ltp
mailing list