Труды Института системного программирования РАН (Oct 2018)
Testing of Linux File System Drivers
Abstract
The paper investigates issues of Linux file system driver testing. Linux file system drivers are implemented as kernel modules, which works in the same address space as kernel core. For that reason, the driver should be very reliable. It should react adequately to incorrect file system images, to faults in operating system, etc. Also drivers should free all resources it requests as far as kernel have to work for long time without restart. Another important feature of file system drivers is that they are programs with multiple entry points, which may be executed simultaneously in respect with each other and with other kernel code.Most of existing test systems verify only driver's behavior in normal situations by calling system calls, which are eventually dispatched by the kernel into the driver's functions. Some of them also check driver in concurrent scenarios but only at very basic level. Some test systems also verify driver's behavior under faulty environment, when request for memory allocation or disk read/write may fail. But fault scenarios used in those systems are probabilistic, which leads to problems with tests' reproducibility and requires to repeat tests many times to achieve better coverage. There is one test system, which checks for memory leaks in the driver under test.The paper concludes by statement of requirements for more throughout file system driver testing. According to the requirements a test system have to cover the following aspects:Normal scenarios on system calls level.Parallel scenarios with additional checks for data races.Fault scenarios with insufficient memory and faulty block devices using such techniques as fault injection.Handling of incorrect file system images.Driver testing on system calls with invalid arguments.Check leaks of memory and other resources requested by driver under test.
Keywords