[PATCH] New fstest to check rename POSIX conformance

Sebastian Huber sebastian.huber at embedded-brains.de
Fri Feb 21 08:12:58 UTC 2014

On 2014-02-20 00:36, Andre Marques wrote:
>>>>> - Testing errno values in error situations. There is already a fstest named
>>>>> fserror which purpose seems to be checking errno values for a bunch of
>>>>> functions (rename included, but with some errno values missing). Not sure
>>>>> if I
>>>>> should put them in this test or add to fserror.
>>>> I would move all rename related tests to this new test program.
>>> About the errno value testing, I'm currently missing EIO, ENOSPC, EROFS and
>>> EXDEV.
>>> EROFS and EXDEV require mounting a second filesystem. How can I do this in
>>> RTEMS? Can it be done at runtime? I've been looking at the fileio sample, which
>>> uses the fsmount() function, but I need a disk to mount with it.
>> For EROFS there is already a test in fstests/fsrofs01.
> So I leave EROFS out of this test?

Yes, I would leave the EROFS test out.

>> You can mount as many file system instances as you want.  You can do this
>> with mount().  The mount() parameters are file system dependent. The generic
>> file system tests (and your rename test should be one of them) use a support
>> file for this:
>> ./testsuites/fstests/mrfs_support/fs_support.c
>> ./testsuites/fstests/mimfs_support/fs_support.c
>> ./testsuites/fstests/mdosfs_support/fs_support.c
>> ./testsuites/fstests/imfs_support/fs_support.c
>> ./testsuites/fstests/jffs2_support/fs_support.c
> Yes I'm using support files on Makefile.am.
> For mount() should I use a ramdisk for the device file?
> I tried to create a ramdisk as in
> http://www.rtems.org/onlinedocs/doxygen/cpukit/html/group__rtems__ramdisk.html#gac6c99eed9f3b92bb4cf5184b25972e65
> but the program exits during the rtems_blkdev_create() call, if I use
> "/dev/rda" as the device path.

How does the code look like?

>> You can use the system file system as the second file system for the EXDEV test.
> I'm reading this as mounting an instance of the system filesystem. Am I right?

You need two file system instances.  If you configure the system with 
CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM, then it starts with the IMFS as the root 
file system.  For the file system tests you need a file system instance to 
test.  This is set up with the test_initialize_filesystem() function, e.g.

void test_initialize_filesystem(void)
   int rv;


   rv = mkdir(BASE_FOR_TEST, S_IRWXU | S_IRWXG | S_IRWXO);
   rtems_test_assert(rv == 0);


   rv = mount(
   rtems_test_assert(rv == 0);

void test_shutdown_filesystem(void)
   int rv = unmount(BASE_FOR_TEST);
   rtems_test_assert(rv == 0);

So for the EXDEV test you can use for example:

rename("/abc.txt", BASE_FOR_TEST "/abc.txt");

Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.huber at embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.

More information about the devel mailing list