mirror of
https://github.com/systemd/systemd-stable.git
synced 2024-12-22 13:33:56 +03:00
test-umount: add a simple test for swap_list_get()
The implementation seems buggy: /* test_swap_list("/home/zbyszek/src/systemd/test/test-umount/example.swaps") */ path=0 o= f=0x0 try-ro=no dev=0:0 path=/some/swapfile2 o= f=0x0 try-ro=no dev=0:0 path=/some/swapfile o= f=0x0 try-ro=no dev=0:0 path=/dev/dm-2 o= f=0x0 try-ro=no dev=0:0
This commit is contained in:
parent
a6dcd22976
commit
1fd8edb53a
@ -179,14 +179,14 @@ int mount_points_list_get(const char *mountinfo, MountPoint **head) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int swap_list_get(MountPoint **head) {
|
int swap_list_get(const char *swaps, MountPoint **head) {
|
||||||
_cleanup_fclose_ FILE *proc_swaps = NULL;
|
_cleanup_fclose_ FILE *proc_swaps = NULL;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
assert(head);
|
assert(head);
|
||||||
|
|
||||||
proc_swaps = fopen("/proc/swaps", "re");
|
proc_swaps = fopen(swaps ?: "/proc/swaps", "re");
|
||||||
if (!proc_swaps)
|
if (!proc_swaps)
|
||||||
return (errno == ENOENT) ? 0 : -errno;
|
return (errno == ENOENT) ? 0 : -errno;
|
||||||
|
|
||||||
@ -680,7 +680,7 @@ int swapoff_all(bool *changed) {
|
|||||||
|
|
||||||
LIST_HEAD_INIT(swap_list_head);
|
LIST_HEAD_INIT(swap_list_head);
|
||||||
|
|
||||||
r = swap_list_get(&swap_list_head);
|
r = swap_list_get(NULL, &swap_list_head);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
|
@ -42,3 +42,4 @@ typedef struct MountPoint {
|
|||||||
|
|
||||||
int mount_points_list_get(const char *mountinfo, MountPoint **head);
|
int mount_points_list_get(const char *mountinfo, MountPoint **head);
|
||||||
void mount_points_list_free(MountPoint **head);
|
void mount_points_list_free(MountPoint **head);
|
||||||
|
int swap_list_get(const char *swaps, MountPoint **head);
|
||||||
|
@ -24,6 +24,24 @@ static void test_mount_points_list(const char *fname) {
|
|||||||
major(m->devnum), minor(m->devnum));
|
major(m->devnum), minor(m->devnum));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_swap_list(const char *fname) {
|
||||||
|
_cleanup_(mount_points_list_free) LIST_HEAD(MountPoint, mp_list_head);
|
||||||
|
MountPoint *m;
|
||||||
|
|
||||||
|
log_info("/* %s(\"%s\") */", __func__, fname ?: "/proc/self/mountinfo");
|
||||||
|
|
||||||
|
LIST_HEAD_INIT(mp_list_head);
|
||||||
|
assert_se(swap_list_get(fname, &mp_list_head) >= 0);
|
||||||
|
|
||||||
|
LIST_FOREACH(mount_point, m, mp_list_head)
|
||||||
|
log_debug("path=%s o=%s f=0x%lx try-ro=%s dev=%u:%u",
|
||||||
|
m->path,
|
||||||
|
strempty(m->remount_options),
|
||||||
|
m->remount_flags,
|
||||||
|
yes_no(m->try_remount_ro),
|
||||||
|
major(m->devnum), minor(m->devnum));
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
log_set_max_level(LOG_DEBUG);
|
log_set_max_level(LOG_DEBUG);
|
||||||
log_parse_environment();
|
log_parse_environment();
|
||||||
@ -33,4 +51,7 @@ int main(int argc, char **argv) {
|
|||||||
test_mount_points_list(get_testdata_dir("/test-umount/empty.mountinfo"));
|
test_mount_points_list(get_testdata_dir("/test-umount/empty.mountinfo"));
|
||||||
test_mount_points_list(get_testdata_dir("/test-umount/garbled.mountinfo"));
|
test_mount_points_list(get_testdata_dir("/test-umount/garbled.mountinfo"));
|
||||||
test_mount_points_list(get_testdata_dir("/test-umount/rhbug-1554943.mountinfo"));
|
test_mount_points_list(get_testdata_dir("/test-umount/rhbug-1554943.mountinfo"));
|
||||||
|
|
||||||
|
test_swap_list(NULL);
|
||||||
|
test_swap_list(get_testdata_dir("/test-umount/example.swaps"));
|
||||||
}
|
}
|
||||||
|
@ -177,6 +177,7 @@ test_data_files = '''
|
|||||||
test-umount/empty.mountinfo
|
test-umount/empty.mountinfo
|
||||||
test-umount/garbled.mountinfo
|
test-umount/garbled.mountinfo
|
||||||
test-umount/rhbug-1554943.mountinfo
|
test-umount/rhbug-1554943.mountinfo
|
||||||
|
test-umount/example.swaps
|
||||||
'''.split()
|
'''.split()
|
||||||
|
|
||||||
if conf.get('ENABLE_RESOLVE') == 1
|
if conf.get('ENABLE_RESOLVE') == 1
|
||||||
|
4
test/test-umount/example.swaps
Normal file
4
test/test-umount/example.swaps
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
Filename Type Size Used Priority
|
||||||
|
/dev/dm-2 partition 8151036 2283436 -2
|
||||||
|
/some/swapfile file 111 111 0
|
||||||
|
/some/swapfile2 (deleted) file 111 111 0
|
Loading…
Reference in New Issue
Block a user