mirror of
https://github.com/systemd/systemd.git
synced 2024-12-26 03:22:00 +03:00
test-loop-block: let's explicitly flush buffer cache on whole block device
Let's explicitly flush the kernel's buffer cache on the whole block device once we ran "mkfs". This is necessary, because partition and whole block devices maintain separate buffer caches, and thus writing to one will not be visible on the other if cached there already, until the latter's cache is explicitly flushed. This is preparation for later adding support for probing file sytems also if we have no open partition block devices, and hence want to use the whole block device instead.
This commit is contained in:
parent
9f2d9a4aab
commit
59a4c0d7e3
@ -4,6 +4,8 @@
|
||||
#include <linux/loop.h>
|
||||
#include <pthread.h>
|
||||
#include <sys/file.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/mount.h>
|
||||
|
||||
#include "alloc-util.h"
|
||||
#include "capability-util.h"
|
||||
@ -256,6 +258,13 @@ static int run(int argc, char *argv[]) {
|
||||
|
||||
dissected = dissected_image_unref(dissected);
|
||||
|
||||
/* We created the file systems now via the per-partition block devices. But the dissection code might
|
||||
* probe them via the whole block device. These block devices have separate buffer caches though,
|
||||
* hence what was written via the partition device might not appear on the whole block device
|
||||
* yet. Let's hence explicitly flush the whole block device, so that the read-back definitely
|
||||
* works. */
|
||||
assert_se(ioctl(loop->fd, BLKFLSBUF, 0) >= 0);
|
||||
|
||||
/* Try to read once, without pinning or adding partitions, i.e. by only accessing the whole block
|
||||
* device. */
|
||||
assert_se(dissect_loop_device(loop, NULL, NULL, 0, &dissected) >= 0);
|
||||
|
Loading…
Reference in New Issue
Block a user