On 02/19/14 14:00, Sebastian Huber wrote:
On 2014-02-19 11:27, Andre Marques wrote:
Sorry for the delay.

I'm almost ready to send the patch with the test, but there are some questions.

This is nice.


On 02/10/14 08:14, Sebastian Huber wrote:
Hello Andre,

thanks for the test case.

On 2014-02-08 13:26, Andre Marques wrote:
Hi,

As discussed in [1], I created a new fstest to check the rename()
implementation against the POSIX specification [2].

What the attached patch does not test:

- Testing the existance of a link visible to other processes during the rename process (ensuring that there is always a reference to the file). Not sure about
the best way to test this.

The file system instance is locked during the rename operation, so other
threads cannot interfere here.


Should I test the lock then?

I think a test would be quite difficult.  I would postpone this.


What happens if you rename a file with an open file descriptor should be tested.

That is already covered on the test.



- Testing that after all processes close their references to a file after it was removed by rename() the file contents are removed (or marked as free space, I guess). I only found platform dependent ways of dealing with disk block's.

Maybe you can use the statvfs() function for this.

The statvfs() function gives "not implemented" on the IMFS filesystem, so I
changed the used filesystem to MOUNTED RFS.

Ok, maybe we should implement this function for the IMFS or skip the test case if statvfs() is not available.

Skipping for now.





- 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?

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.


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?


For ENOSPC I'm thinking in mounting a small disk and testing that way, but for EIO I don't know how to simulate a physical error. How can I generate an I/O
error?

Generating an IO error will be difficult or impossible (e.g. for IMFS). For the disk device based file systems you need a special driver. I would ignore this for now.





This test uses the MOUNTED IMFS filesystem, for no particular reason, so if
that's an issue please let me know.

[1] - http://www.rtems.org/pipermail/rtems-users/2014-January/012378.html

[2] - http://pubs.opengroup.org/onlinepubs/9699919799/functions/rename.html

--André Marques
[...]



_______________________________________________
rtems-devel mailing list
rtems-devel@rtems.org
http://www.rtems.org/mailman/listinfo/rtems-devel

Reply via email to