]> www.infradead.org Git - mtd-utils.git/log
mtd-utils.git
14 years agofs-tests: integck: make -v work -e
Artem Bityutskiy [Mon, 16 May 2011 14:04:49 +0000 (17:04 +0300)]
fs-tests: integck: make -v work -e

Make the verify option -v work with power cut emulation option -e. We can
verify all operations except of writing to the file, because of write-back.
Indeed, even if we write successfully, the pages may still be in the page-cache
and if an emulated power cut happens they will be dropped, and our verification
will fail.

I am not 100% sure it is save to verify non-write operation in other FSes, but
only UBIFS has power cut emulation mode now, so we do not really care about
other FSes at this point.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: check direntries in power cut mode
Artem Bityutskiy [Mon, 16 May 2011 13:57:05 +0000 (16:57 +0300)]
fs-tests: integck: check direntries in power cut mode

Enable directory entry checking in power cut mode. This means that with this
patch integck will check that all directory entries in the file-system were
created by integck.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: check errno in pvc macro
Artem Bityutskiy [Tue, 3 May 2011 12:02:58 +0000 (15:02 +0300)]
fs-tests: integck: check errno in pvc macro

All errors but write errors have corresponding CHECK(), so if something
gets wrong we fail. But in case of I/O errors we do not fail if an
unexpected error happens, which makes it difficult to trace issues.
Inject the errno checking to the pvc macro to make sure we fail if
errno is not EROFS.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: fix segfault
Artem Bityutskiy [Mon, 2 May 2011 15:19:47 +0000 (18:19 +0300)]
fs-tests: integck: fix segfault

Commit 1394a46213e8180e1233ca6d4811e7c77d49b1e0 was a good idea, but it
introduced a segfault - files can be unlinked and 'file->links' is NULL, it is
bad idea to unconditionally dereference it with 'file->links->name'. This patch
introduces a helper function which takes care of the situation with unlinked
files, plus it adds few assertions.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: introduce the clean flag
Artem Bityutskiy [Tue, 26 Apr 2011 10:16:25 +0000 (13:16 +0300)]
fs-tests: integck: introduce the clean flag

Introduce per-file "clean" flag which tells whether the file is synchronized or
not. This flag is not really used so far.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: print error number in pcv messages
Artem Bityutskiy [Tue, 26 Apr 2011 11:22:58 +0000 (14:22 +0300)]
fs-tests: integck: print error number in pcv messages

In pcv() messages also print the error number - this is useful when
an error happens and it is not because of EROFS.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: re-structure file_write a little
Artem Bityutskiy [Tue, 26 Apr 2011 10:26:43 +0000 (13:26 +0300)]
fs-tests: integck: re-structure file_write a little

This is just a preparation - re-structure 'file_write()' to make one "success"
return point - we'll add synchronization stuff there. Also, while on it, make
it delete the file errored in truncation, not only in write. Also, move
the fsync() call to this function because it is common to all write paths.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: limit the recursion depth
Artem Bityutskiy [Tue, 26 Apr 2011 09:47:48 +0000 (12:47 +0300)]
fs-tests: integck: limit the recursion depth

I observes segfaults in integck test, and unfortunately I do not have the core
file to investigate the problem. But I see one possibility for the test to
segfault - it has unbounded recursion. Limit the maximum recursion depth.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: fail loudly on unexpected EROFS
Artem Bityutskiy [Tue, 26 Apr 2011 06:59:56 +0000 (09:59 +0300)]
fs-tests: integck: fail loudly on unexpected EROFS

If we are not in power cut testing mode (-p was not used) and we get an
unexpected EROFS, we silently exit. This patch fixes this behavior and make
the test loudly fail instead.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: fix falures with SIGBUS
Artem Bityutskiy [Sun, 24 Apr 2011 11:12:13 +0000 (14:12 +0300)]
fs-tests: integck: fix falures with SIGBUS

The test sometimes dies due to SIGBUS because a power cut event happens when
we are writing to an mmap()'ed area. SIGBUS is very difficult to ignore, so
fix the issue simply by avoiding doing 'mmap()' operations when in power cut
testing mode.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: ignore -e if in power cut mode
Artem Bityutskiy [Sun, 24 Apr 2011 07:08:41 +0000 (10:08 +0300)]
fs-tests: integck: ignore -e if in power cut mode

Similarly to the previous commit, do not verify operations when in
power-cut testing mode. Again, this is because write-back may fail
meanwhile.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: fix line number in CHECK() output
Artem Bityutskiy [Sun, 24 Apr 2011 07:11:03 +0000 (10:11 +0300)]
fs-tests: integck: fix line number in CHECK() output

In 'check_failed()' use the file and line number provided by the CHECK()
macro via the function parameters, rather than using __LINE__ directly.
Otherwise the funtion prints its own line, instead of the line where the
CHECK() failed.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: do not run checking when in power cut mode
Artem Bityutskiy [Sun, 24 Apr 2011 06:58:06 +0000 (09:58 +0300)]
fs-tests: integck: do not run checking when in power cut mode

Do not check the file-system when we are in power cut mode. Currently
we still check the FS if we did not encounter any error, and the test
fails sometimes because meanwhile write-back encounters an error and
drops pages. Disable the checking so far. It should be enabled when
we implement the 'clean' flag for files.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: introduce a helper for checking
Artem Bityutskiy [Sun, 24 Apr 2011 06:52:07 +0000 (09:52 +0300)]
fs-tests: integck: introduce a helper for checking

Introduce a 'check_tested_fs()' helper function.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: print a bit less if in power cut mode
Artem Bityutskiy [Fri, 22 Apr 2011 17:05:51 +0000 (20:05 +0300)]
fs-tests: integck: print a bit less if in power cut mode

Do not print extra messages when unable to re-mount - they are
already printed by the recover function.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: improve remountability logic
Artem Bityutskiy [Fri, 22 Apr 2011 16:52:27 +0000 (19:52 +0300)]
fs-tests: integck: improve remountability logic

The integck test assumes that if the FS is rootfs then it cannot
re-mount it, otherwise it can. However, this is not true because the
tested FS can be not remountable even if it is not rootfs, e.g., if
'integck' lives on this FS and is executed from it.

This patch improves the integck logic and actually checks wheter it
is possible to re-mount the FS before starting the test.

Also, it makes sure that power cut testing is run only on re-mountable
FS, because we have to be able to clean the "corrupted" state of the
file-system.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: re-mount always if not root fs
Artem Bityutskiy [Fri, 22 Apr 2011 16:16:22 +0000 (19:16 +0300)]
fs-tests: integck: re-mount always if not root fs

Commit 08cfd9d7cacc3c0b97530ad7e13fa8db75e99947 introduced a bug:
we do not re-mount the FS before checking at the first iteration.
This patch fixes the issue.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: make -v switch work
Artem Bityutskiy [Fri, 22 Apr 2011 16:00:58 +0000 (19:00 +0300)]
fs-tests: integck: make -v switch work

-v (verbose) switch is supposed to turn power cut testing error
messages on/off. However, it does not work because the messages
are printed even if -v was not specified. This patch fixes it.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: use rand_r everywhere
Artem Bityutskiy [Fri, 22 Apr 2011 15:51:17 +0000 (18:51 +0300)]
fs-tests: integck: use rand_r everywhere

Instead of using rand_r with own seed for operations and rand() with
global state for data it is cleaner to use rand_r with own different
states for these things. This patch eliminates 'srand()' and 'rand()'
usage.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: use independent random generators for ops and data
Artem Bityutskiy [Fri, 22 Apr 2011 15:32:23 +0000 (18:32 +0300)]
fs-tests: use independent random generators for ops and data

Currently integck uses the same global random generator for everything -
for choosing the operation, generating the data, and for checking. This
makes integck to become stuck sometimes. My guess this is because of
we somehow re-set it back with srand() when checking files.

This patch makes integck use different generators for data and for
choosing operations by using rand_r() with own seed for operations.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: add debug compilation target
Artem Bityutskiy [Fri, 22 Apr 2011 14:40:52 +0000 (17:40 +0300)]
fs-tests: integck: add debug compilation target

I often need to use gdb to debug integck, or sometimes even attach
already running integck. But when it is compiled with optimizations, it
is nearly impossible to use gdb. Introduce 'debug' target to compile
integck without optimizations.

Additionally, to make the stack backtraces work, add a dirty hack to
integck.c to remove all the static keywords - this turns static
functions to non-static and makes them appear in stack backtraces.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: implement holes verification
Artem Bityutskiy [Fri, 22 Apr 2011 14:31:50 +0000 (17:31 +0300)]
fs-tests: integck: implement holes verification

When -e option is used verify file holes after the truncate
operation. Re-use the existing 'file_check_hole()' function for
this.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: implement data verification
Artem Bityutskiy [Fri, 22 Apr 2011 14:14:17 +0000 (17:14 +0300)]
fs-tests: integck: implement data verification

When -e options is used - verify written data. Re-use the existing
file_check_data() function to implement this.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: add -e option to verify operations
Artem Bityutskiy [Fri, 22 Apr 2011 13:37:05 +0000 (16:37 +0300)]
fs-tests: integck: add -e option to verify operations

Improve the test and add -e option which forces integck to verify all
operation it performs. This patch does not implement file writes and
holes operations so far - will be done in subsequent patches.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: print backtrace in case of failure
Artem Bityutskiy [Fri, 22 Apr 2011 12:24:04 +0000 (15:24 +0300)]
fs-tests: integck: print backtrace in case of failure

This patch teaches the 'CHECK()' macro to print the back-trace in
case of failure which is sometimes very useful for debugging. This
patch also adds a helper function for the 'CHECK()' macro because
otherwise it becomes too large.

Note, since all functions in the test are static, the stack trace
does not really show symbols.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: do not inlcude lib directory
Artem Bityutskiy [Fri, 22 Apr 2011 12:30:10 +0000 (15:30 +0300)]
fs-tests: integck: do not inlcude lib directory

The integck test does not depend on the "common" directory any more,
so we do not have to have -I ../lib for compilation.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: improve help message
Artem Bityutskiy [Fri, 22 Apr 2011 11:40:40 +0000 (14:40 +0300)]
fs-tests: integck: improve help message

Fix typos, make it a bit more descriptive.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: make power cut mode work
Artem Bityutskiy [Fri, 22 Apr 2011 11:26:11 +0000 (14:26 +0300)]
fs-tests: integck: make power cut mode work

This is a dirty patch - it makes many changes, but I simply had no
time to split it. And because this test is something no one except me
and Adrian cares about, I do not want to spend too much time creating
nice patches. Anyway, this patch make the power cut testing mode work.

Now you can run the test like "./integck /mnt/ubifs -p" and it will
run recover from emulated power cut failures and continue forever,
untill an unexpected issue is met.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: remove unneeded \n
Artem Bityutskiy [Thu, 21 Apr 2011 05:26:42 +0000 (08:26 +0300)]
fs-tests: integck: remove unneeded \n

The 'errmsg()' macro adds "\n" at the end, so do not use it in our
'pcv()' and 'CHECK()' macros.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: do not assume the FS is mounted after failure
Artem Bityutskiy [Thu, 21 Apr 2011 05:13:21 +0000 (08:13 +0300)]
fs-tests: integck: do not assume the FS is mounted after failure

If a power cut emulation error happens and we are trying to re-mount
the file-system, do not assume it is mounted because the failure could
have happened after it had had been unmounted but before it was
successfully mounted.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: add recovery remounting function
Artem Bityutskiy [Wed, 20 Apr 2011 14:25:01 +0000 (17:25 +0300)]
fs-tests: integck: add recovery remounting function

When re-mountig to recover from the emulated power-cut failure then we should
do a bit less fancy things, e.g., we should not try to re-mount to R/O and R/W
modes forth and back, but we should instead just unmount directly.

Additionally, we should not die if mount fails because there may be a power
cut emulation during mounting. Thus, create a separate function for recovering
and try to recover in a loop.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: simplify dirent manipulation
Artem Bityutskiy [Wed, 20 Apr 2011 13:32:16 +0000 (16:32 +0300)]
fs-tests: integck: simplify dirent manipulation

Teach 'add_dir_entry()' to allocate the file/dir/symlink object for
the client. This simplifies client's code. The only place where we
do not want to do this is when we are creating a hardling pointing
to an existing file.

Teach 'remove_dir_entry()' to free the file/dir/symlink object for
the client. Similarly, this simplifies client's code. The only place
where we do not want to do this is the rename function - when we
rename an object we want to only change its direntry, but not the
object itself.

But the main motivation for this change is not just to clean-up, but
to fix another memory leak. In the re-name function we free the
'rename_entry', but we did not free the corresponding object. This
patch fixes the situation.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: do not forget to free mount_opts
Artem Bityutskiy [Wed, 20 Apr 2011 13:14:12 +0000 (16:14 +0300)]
fs-tests: integck: do not forget to free mount_opts

The test forgets to free the args.mount_opts string on exit - fix this.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: iterate for ever in case of power cut testing
Artem Bityutskiy [Wed, 20 Apr 2011 13:08:30 +0000 (16:08 +0300)]
fs-tests: integck: iterate for ever in case of power cut testing

If the test runs in power-cut testing mode, do not exit in case of
EROFS error - but instead re-mount and start again.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: refuse R/O file-system
Artem Bityutskiy [Wed, 20 Apr 2011 13:01:05 +0000 (16:01 +0300)]
fs-tests: integck: refuse R/O file-system

Refuse to test the file-system if it is mounted Read-only.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: free all allocated memory on exit
Artem Bityutskiy [Wed, 20 Apr 2011 11:32:53 +0000 (14:32 +0300)]
fs-tests: integck: free all allocated memory on exit

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: assume that the parent is present in new_dir
Artem Bityutskiy [Wed, 20 Apr 2011 09:54:12 +0000 (12:54 +0300)]
fs-tests: integck: assume that the parent is present in new_dir

We always pass non-NULL 'parent' argument to 'new_dir()', so no need to
test it for NULL.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: lessen memory consumption even more
Artem Bityutskiy [Wed, 20 Apr 2011 08:44:49 +0000 (11:44 +0300)]
fs-tests: integck: lessen memory consumption even more

This patch kills the "name" field from 'struct file_info' where we stored
the original file name. We do not really need to keep this name around,
becaus it might have long gone and it is not very interesting. Besides,
we have several memory leaks where we leak 'file->name' strings, so this
is the easiest way to fix those leaks as well.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: lessen memory consumption
Artem Bityutskiy [Wed, 20 Apr 2011 08:37:46 +0000 (11:37 +0300)]
fs-tests: integck: lessen memory consumption

We do not need to store directory name in the 'struct dir_info' objects,
because we already have it in 'struct dir_entry_info'. So we duplicate
the names for directories in 'dir->name' and 'dir->entry->name'.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: clean up add_dir_entry usage
Artem Bityutskiy [Mon, 18 Apr 2011 14:47:29 +0000 (17:47 +0300)]
fs-tests: integck: clean up add_dir_entry usage

Make 'add_dir_entry()' consistent and allocate name for all types,
not only for 'd' and 's'. Also, since 'add_dir_entry()' sets the
parent - do not do this in the calling functions.

This is a clean-up which makes 'add_dir_entry()' more consistent.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: remove symlinks memory leaks
Artem Bityutskiy [Mon, 18 Apr 2011 14:41:22 +0000 (17:41 +0300)]
fs-tests: integck: remove symlinks memory leaks

When we create a symlink we also allocate a symlink_info structure
and the target path name. But when we remove a symlink - we do not
delete that memory. This patch fixes the issue.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: free raw write information
Artem Bityutskiy [Mon, 18 Apr 2011 14:36:12 +0000 (17:36 +0300)]
fs-tests: integck: free raw write information

The test leaks memory like hell because it does not free the raw writes
information. This patch fixes the leaks.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: introduce free_writes_info helper
Artem Bityutskiy [Mon, 18 Apr 2011 14:29:22 +0000 (17:29 +0300)]
fs-tests: integck: introduce free_writes_info helper

We have duplicated code for freeing write informatio - put it into
a helper function.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: fix memory leak in dir_new
Artem Bityutskiy [Mon, 18 Apr 2011 12:53:06 +0000 (15:53 +0300)]
fs-tests: integck: fix memory leak in dir_new

Do not initialize dir->name because add_dir_entry already does
this for us, so we leak the memory.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: fix memory lead in dir_remove
Artem Bityutskiy [Mon, 18 Apr 2011 12:50:22 +0000 (15:50 +0300)]
fs-tests: integck: fix memory lead in dir_remove

When removing a directory and freeing corresponding 'dir_info' object -
do not forget to free directory name as well.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: make file_truncate_file return error
Artem Bityutskiy [Mon, 18 Apr 2011 11:54:23 +0000 (14:54 +0300)]
fs-tests: integck: make file_truncate_file return error

Teach 'file_truncate_file()' return an error to the caller if it fails
to open the file or to truncate it.

Additionally, check the error code from 'open()' in other places.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: make file_open return error on failure
Artem Bityutskiy [Mon, 18 Apr 2011 11:47:45 +0000 (14:47 +0300)]
fs-tests: integck: make file_open return error on failure

Make 'file_open()' return an error to the caller if it fails to open
the file.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: make operate_on_entry handle all errors
Artem Bityutskiy [Mon, 18 Apr 2011 11:40:31 +0000 (14:40 +0300)]
fs-tests: integck: make operate_on_entry handle all errors

Make 'operate_on_entry()' handle handle errors from all functions
it calls and return the error code to the caller.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: teach file_unlink_file return an error
Artem Bityutskiy [Mon, 18 Apr 2011 11:33:07 +0000 (14:33 +0300)]
fs-tests: integck: teach file_unlink_file return an error

Teach 'file_unlink_file()' return an error to the caller if the
file cannot be unlinked.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: teach dir_remove return error and fix a memory leak
Artem Bityutskiy [Mon, 18 Apr 2011 11:28:44 +0000 (14:28 +0300)]
fs-tests: integck: teach dir_remove return error and fix a memory leak

Teach 'dir_remove()' to return an error to the caller if it fails to
remove the directory. Also, there was a memory leak - the 'path'
string was not freed - fix it as well.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: teach symlink_remove return error on removal failure
Artem Bityutskiy [Mon, 18 Apr 2011 11:06:40 +0000 (14:06 +0300)]
fs-tests: integck: teach symlink_remove return error on removal failure

When 'symlink_remove()' fails to unling a symlink - return an error to
the calling function.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: make rename_entry return error on failure
Artem Bityutskiy [Mon, 18 Apr 2011 11:01:00 +0000 (14:01 +0300)]
fs-tests: integck: make rename_entry return error on failure

Make 'rename_entry()' return an error to the caller when it fails
to rename a directory entry.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: make operate_on_dir propagate errors up
Artem Bityutskiy [Mon, 18 Apr 2011 10:53:14 +0000 (13:53 +0300)]
fs-tests: integck: make operate_on_dir propagate errors up

Make 'operate_on_dir()' functions propogate errors up if any of
the functions it calls failed. This patch also makes 'operate_on_entry()'
return an error code, but without actual implementation.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: teach link_new to return error on creation failure
Artem Bityutskiy [Mon, 18 Apr 2011 10:41:38 +0000 (13:41 +0300)]
fs-tests: integck: teach link_new to return error on creation failure

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: teach symlink_new to return error on creation failure
Artem Bityutskiy [Mon, 18 Apr 2011 10:38:17 +0000 (13:38 +0300)]
fs-tests: integck: teach symlink_new to return error on creation failure

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: teach dir_new return error on creation failure
Artem Bityutskiy [Mon, 18 Apr 2011 10:07:57 +0000 (13:07 +0300)]
fs-tests: integck: teach dir_new return error on creation failure

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: make file_new return error on create failure
Artem Bityutskiy [Mon, 18 Apr 2011 09:48:50 +0000 (12:48 +0300)]
fs-tests: integck: make file_new return error on create failure

Teach 'file_new()' to return -1 if it fails to create a file.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: fix placeholders when printing
Artem Bityutskiy [Mon, 18 Apr 2011 09:04:59 +0000 (12:04 +0300)]
fs-tests: integck: fix placeholders when printing

There is a lot of code where %u is used for printing off_t variables,
which may be actually 64-bit wide. Fix this by using %llu.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: use unsigned int everywhere
Artem Bityutskiy [Mon, 18 Apr 2011 08:59:56 +0000 (11:59 +0300)]
fs-tests: integck: use unsigned int everywhere

The test sometimes uses "unsigned" and sometimes "unsigned int". This
patch makes the code more consistent by making it use "unsigned int"
everywhere.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: rename BUFFER_SIZE
Artem Bityutskiy [Mon, 18 Apr 2011 08:54:04 +0000 (11:54 +0300)]
fs-tests: integck: rename BUFFER_SIZE

Rename 'BUFFER_SIZE' constant into 'IO_BUFFER_SIZE' to reflect what
is the buffer this constant is about.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: teach file_write_data return an error
Artem Bityutskiy [Mon, 18 Apr 2011 08:49:39 +0000 (11:49 +0300)]
fs-tests: integck: teach file_write_data return an error

Make 'file_write_data()' return an error in case of failure.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: handle errors in file_mmap_write
Artem Bityutskiy [Mon, 18 Apr 2011 07:05:19 +0000 (10:05 +0300)]
fs-tests: integck: handle errors in file_mmap_write

Teach 'file_mmap_write()' to propagate failures up to the caller.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: handle all failures in operate_on_open_file
Artem Bityutskiy [Mon, 18 Apr 2011 06:50:30 +0000 (09:50 +0300)]
fs-tests: integck: handle all failures in operate_on_open_file

Make 'operate_on_open_file()' to handle possible 'fsync()' and 'fdatasync()'
errors by returning -1 up to the caller.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: handle errors in file_delete
Artem Bityutskiy [Fri, 15 Apr 2011 13:49:15 +0000 (16:49 +0300)]
fs-tests: integck: handle errors in file_delete

Teach 'file_delete()' and several other functions it calls
(like 'file_unlink()) to handle write errors and propagate the
up to the caller.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: teach file_truncate return error code
Artem Bityutskiy [Thu, 14 Apr 2011 11:50:22 +0000 (14:50 +0300)]
fs-tests: integck: teach file_truncate return error code

Teach 'file_truncate()' return an error code in case of failure.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: make more functions propogate error up
Artem Bityutskiy [Thu, 14 Apr 2011 11:38:23 +0000 (14:38 +0300)]
fs-tests: integck: make more functions propogate error up

Teach 'operate_on_open_file()', 'operate_on_an_open_file()', and
'do_an_operation()' propogate errors up.

Also move whole 'operate_on_file()' to a more logical place.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: handle errors when creating test data
Artem Bityutskiy [Thu, 14 Apr 2011 11:27:18 +0000 (14:27 +0300)]
fs-tests: integck: handle errors when creating test data

Make 'update_test_data()' and 'update_test_data()' check for errors
and return error in case of failure.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: handle errors in remount_tested_fs
Artem Bityutskiy [Thu, 14 Apr 2011 10:32:06 +0000 (13:32 +0300)]
fs-tests: integck: handle errors in remount_tested_fs

Teach 'remount_tested_fs()' return error code when it fails
to mount the file-system.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: handle write failures in dir_new
Artem Bityutskiy [Thu, 14 Apr 2011 10:12:48 +0000 (13:12 +0300)]
fs-tests: integck: handle write failures in dir_new

Do not die in 'dir_new()' if it cannot create a new directory and
this is not because of ENOSPC. Return NULL for all errors.

Note, not all callers are ready to properly handle all errors so far.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: check deletion errors in rm_minus_rf_dir
Artem Bityutskiy [Thu, 14 Apr 2011 09:42:39 +0000 (12:42 +0300)]
fs-tests: integck: check deletion errors in rm_minus_rf_dir

Modify the 'rm_minus_rf_dir()' function to return -1 in case of any
errors during deletions. Make 'integck()' handle the errors. Also
introduce a 'pcv()' function to print error message if -v command
line option was specified.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: introduce power cut testing arguments
Artem Bityutskiy [Thu, 14 Apr 2011 09:20:31 +0000 (12:20 +0300)]
fs-tests: integck: introduce power cut testing arguments

Introduce new command line arguments for power cut testing:
-p to enable the power cut testing mode and -v to be verbose
about the errors. The real functionality is not implemented
so far.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agoserve_image: missing comma
Brian Norris [Thu, 21 Apr 2011 17:09:12 +0000 (10:09 -0700)]
serve_image: missing comma

Somebody didn't compile-test commit 9f4e6840.

Artem: my fault, apologies.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agoserve_image: adjust classifier and type for printf
Andy Shevchenko [Wed, 20 Apr 2011 09:35:10 +0000 (12:35 +0300)]
serve_image: adjust classifier and type for printf

The argument type of printf is __off64_t, meanwhile the classifier is "%ld".
We agreed to use PRIu64 in such case.

Signed-off-by: Andy Shevchenko <ext-andriy.shevchenko@nokia.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agolibmtd: use PRIu64 classifier for uint64_t printf arguments
Andy Shevchenko [Wed, 20 Apr 2011 09:35:09 +0000 (12:35 +0300)]
libmtd: use PRIu64 classifier for uint64_t printf arguments

Signed-off-by: Andy Shevchenko <ext-andriy.shevchenko@nokia.com>
Acked-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agomkfs.jffs2: fix casting of __off64_t
Andy Shevchenko [Wed, 20 Apr 2011 09:35:08 +0000 (12:35 +0300)]
mkfs.jffs2: fix casting of __off64_t

The casting of __off64_t to unsigned long potentially wrong for values higher
than ULONG_MAX.  Let's fix that by using PRIu64 classifier.

Signed-off-by: Andy Shevchenko <ext-andriy.shevchenko@nokia.com>
Acked-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: do not expect max name length to be 256
Artem Bityutskiy [Wed, 13 Apr 2011 14:21:05 +0000 (17:21 +0300)]
fs-tests: integck: do not expect max name length to be 256

The 'make_name()' function assumes that the maxumum file name length
is 256 bytes, which is wrong. This patch fixes this.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: implement own version of CHECK
Artem Bityutskiy [Wed, 13 Apr 2011 14:09:36 +0000 (17:09 +0300)]
fs-tests: integck: implement own version of CHECK

Remove the final dependency on the common code - the CHECK() macro.
Now we are finally independent. The reason we needed this is that
we are going to improve integck to handle errors more gracefully,
in order to support failure testing better. And this requires changes
in the common code, but it is ancient and shared by many tests, and
we do not want to touch it. So we better make integck independent
and concentrate on integck only.

This patch also removes Makefile dependencies. And while on it, remove
the broken 'tests' target.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: do not use tests_random_no
Artem Bityutskiy [Wed, 13 Apr 2011 13:49:20 +0000 (16:49 +0300)]
fs-tests: integck: do not use tests_random_no

Do not use the shared 'tests_random_no()' function but use our own
simple implementation instead. We do not need those rather complex
and difficult to understand computations.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: do not use global common variables
Artem Bityutskiy [Wed, 13 Apr 2011 13:28:06 +0000 (16:28 +0300)]
fs-tests: integck: do not use global common variables

Do not use the 'tests_file_system_mount_dir' and 'tests_file_system_type'
variables because we do not depend on them any longer.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: do not use tests_get_total_space
Artem Bityutskiy [Wed, 13 Apr 2011 13:25:28 +0000 (16:25 +0300)]
fs-tests: integck: do not use tests_get_total_space

Do not use the common tests_get_total_space but extend our own
get_free_space function and make it return both free and total
amount of space.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: do not use tests_remount
Artem Bityutskiy [Wed, 13 Apr 2011 13:15:06 +0000 (16:15 +0300)]
fs-tests: integck: do not use tests_remount

Implement our own version of 'tests_remount()' instead of depending
on the common implementation.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: do not use tests_fs_is_rootfs
Artem Bityutskiy [Wed, 13 Apr 2011 12:06:18 +0000 (15:06 +0300)]
fs-tests: integck: do not use tests_fs_is_rootfs

Do not use the shared 'tests_fs_is_rootfs()' function - introduce
'fsinfo.is_rootfs' flag and utilize it instead. This is another step
forward the goal to make integck independent of the common code.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: prefer to check for success
Artem Bityutskiy [Wed, 13 Apr 2011 11:27:34 +0000 (14:27 +0300)]
fs-tests: integck: prefer to check for success

Many of standard C libraries return 0 on success and -1 on failure.
Currently integck mostly checks for failure by comparing with -1, like:

CHECK(fsync(fd) != -1) /* Don't die if not failure */

but in some places the check is like

CHECK(fsync(fd) == 0) /* Don't die if success */

This patch harmonizes this an makes integck to use the second style
which seems to be more logical. Besides, the binary is smaller in
this case:

[dedekind@eru fs-tests (master)]$ size integrity/integck-old
   text    data     bss     dec     hex filename
  44677    1200   37408   83285   14555 integrity/integck
[dedekind@eru fs-tests (master)]$ size integrity/integck-new
   text    data     bss     dec     hex filename
  44661    1200   37408   83269   14545 integrity/integck

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: do not use space after cast
Artem Bityutskiy [Wed, 13 Apr 2011 11:09:47 +0000 (14:09 +0300)]
fs-tests: integck: do not use space after cast

Since we are kernel people lets use the style we are accustomed
to - no space between the cast and the variable: (type)a, not (type) a.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: do not use tests_clear_dir
Artem Bityutskiy [Tue, 12 Apr 2011 13:22:35 +0000 (16:22 +0300)]
fs-tests: integck: do not use tests_clear_dir

Do not use shared 'tests_clear_dir()' function which removes a directory
tree recursively, but instead use own implementation. This is because
I'm trying to make integck independend on the shared code because I
need this to do further improvements.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: clean up test directory creation
Artem Bityutskiy [Tue, 12 Apr 2011 12:15:53 +0000 (15:15 +0300)]
fs-tests: integck: clean up test directory creation

Move the test directory name to the fsinfo structure and do few
other cleanups while on it.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: do not use tests_cat_pid
Artem Bityutskiy [Tue, 12 Apr 2011 11:36:57 +0000 (14:36 +0300)]
fs-tests: integck: do not use tests_cat_pid

Do not use the shared 'tests_cat_pid' function but use a simple
sprintf instead. This is another step to make integck independent
of the common code.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: remove trailing backslashes from mount point
Artem Bityutskiy [Tue, 12 Apr 2011 11:29:08 +0000 (14:29 +0300)]
fs-tests: integck: remove trailing backslashes from mount point

The test is not working if the user specified mount point with a trailing
back-slash at the end. Note, this had not worked before my changes as well.
Fix this.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: move log10_initial_free to fsinfo
Artem Bityutskiy [Tue, 12 Apr 2011 11:03:09 +0000 (14:03 +0300)]
fs-tests: integck: move log10_initial_free to fsinfo

Similarly to the previous patches, move the log10_initial_free variable
to the fsinfo data structure.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: add own get_free_space function
Artem Bityutskiy [Tue, 12 Apr 2011 09:25:32 +0000 (12:25 +0300)]
fs-tests: integck: add own get_free_space function

Do not use the shared 'tests_get_free_space' function but use own
implementation instead. This is another step to make integck independent
on the common infrastructure.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: move more variables to fsinfo
Artem Bityutskiy [Tue, 12 Apr 2011 09:10:58 +0000 (12:10 +0300)]
fs-tests: integck: move more variables to fsinfo

Aggregate all the information about the tested file-system in
the fsinf object for better readability and cleanness. Move
'can_mmap' and 'check_nospc_files' there as well.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: move mem_page_size to fsinfo
Artem Bityutskiy [Tue, 12 Apr 2011 09:00:22 +0000 (12:00 +0300)]
fs-tests: integck: move mem_page_size to fsinfo

The fsinfo structure will aggregate all the information about the
tested file-system. Move 'mem_page_size' which we use for 'mmap()'
there as well.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: make integck function return error
Artem Bityutskiy [Tue, 12 Apr 2011 08:46:20 +0000 (11:46 +0300)]
fs-tests: integck: make integck function return error

Turn the 'void integck(void)' function into 'static int integck(void)'.
We need to teach the test to gracefully handle some error cases like
'EROFS' instead of failing and exiting straight away. And the ground
work for this is making all functions return errors. This is the first
tiny step in this direction.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: get rid of tests_check_test_file_system
Artem Bityutskiy [Mon, 11 Apr 2011 16:14:06 +0000 (19:14 +0300)]
fs-tests: integck: get rid of tests_check_test_file_system

Stop using the shared 'tests_check_test_file_system()' function but
instead, use own independed version of this function. This is another
step forward the goal to make integck independent of the common
shared code.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: clean-up copy_string
Artem Bityutskiy [Mon, 11 Apr 2011 15:30:57 +0000 (18:30 +0300)]
fs-tests: integck: clean-up copy_string

This is a clean-up patch which:
1. Simplifies copy_string by useng strdup instead of malloc
2. Adds an assertion which checks the input parameter agains NULL,
   instead of checking it.
3. Re-names it to dup_string which looks more readable to me.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: implement own parameters parsing
Artem Bityutskiy [Fri, 8 Apr 2011 16:02:04 +0000 (19:02 +0300)]
fs-tests: integck: implement own parameters parsing

Instead of using shared command line arguments parsing routine
implement own. The reason is that I want to add more parameters,
which are integck-specific. Also, longer-term plan is to make
integck independent of the common tests.c file.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: change tests defaults
Artem Bityutskiy [Mon, 11 Apr 2011 13:57:53 +0000 (16:57 +0300)]
fs-tests: integck: change tests defaults

Currently integck assumes that by default the file-system cannot
do shared writable mmap-ing and does not preserve accurate file
size after ENOSPC errors. And then it overrides these default
settings if this is UBIFS.

But it seems that only JFFS2 has those limitations. So make the
defaults to be the opposite and override them for JFFS2 only.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: shrink write_info even more
Artem Bityutskiy [Mon, 11 Apr 2011 11:55:49 +0000 (14:55 +0300)]
fs-tests: integck: shrink write_info even more

The 'struct write_info' data strucutre records information about
truncation, and has a separate integer field to specify if this is
a truncation or not. But it is too wasteful because we have huge
amount of these objects.

But it is easy to notice that the 'random_seed' field is not used
for truncation records, so we can use that as the truncation flag.

This patch introduces MAX_RANDOM_SEED macro and when the 'random_seed'
field is greater than that, we treat it as the truncation flag.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: abuse random_offset field nicer
Artem Bityutskiy [Mon, 11 Apr 2011 11:27:46 +0000 (14:27 +0300)]
fs-tests: integck: abuse random_offset field nicer

Currently integck uses the 'random_offset' filed to store the new file
length sometimes, thus abusing this field. But we can do this nicer -
introduce an anonymous union and add 'new_length' filed which will be
used instead of 'random_offset' to make the code look nicer.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
14 years agofs-tests: integck: srink file_info structure even more
Artem Bityutskiy [Mon, 11 Apr 2011 10:48:38 +0000 (13:48 +0300)]
fs-tests: integck: srink file_info structure even more

The 'check_run_no' field does not have to be 64-bit, it can be
32-bit instead and we can save 4 bytes per object. Actually, it
could also be 16-bit, and we could make link_count 16-bit as well,
but that would need a bit more work.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>