[LTP] [PATCH V4 1/10] tst_device: Add tst_is_mounted() helper

Viresh Kumar
2020-02-26T06:28:37Z

On 26-02-20, 13:14, Zorro Lang wrote:
> For example, if path is "/mnt/test", and we get a line as "/mnt/test/mnt1 ..."
> or "/mnt/mnt/test", Then this function thinks "/mnt/test" is a mountpoint.
>
> We can refer to util-linux/sys-utils/mountpoint.c a little, but it's complicated,
> or we can call mountpoint command directly?

This is working fine for me, does this looks okay now ?

diff --git a/lib/tst_device.c b/lib/tst_device.c
index d99fb8bc554a..8bf6dacf5973 100644
--- a/lib/tst_device.c
+++ b/lib/tst_device.c
@@ -388,25 +388,16 @@ int tst_umount(const char *path)

int tst_is_mounted(const char *path)
{
- char line[256];
- FILE *file;
- int ret = 0;
-
- file = SAFE_FOPEN(NULL, "/proc/mounts", "r");
-
- while (fgets(line, sizeof(line), file)) {
- if (strstr(line, path) != NULL) {
- ret = 1;
- break;
- }
- }
+ char cmd[PATH_MAX];
+ int ret;

- SAFE_FCLOSE(NULL, file);
+ snprintf(cmd, sizeof(cmd), "mountpoint -q %s", path);
+ ret = tst_system(cmd);

- if (!ret)
+ if (ret)
tst_resm(TINFO, "No device is mounted at %s", path);

- return ret;
+ return !ret;
}

--
viresh