#include "sysfs.h"
#include "optutils.h"
#include "statfs_magic.h"
+#include "mountutils.h"
#include <libmount.h>
continue; /* overlaying mount */
}
+ /* resolve non-device source (e.g. bind mount directory
+ * path) to real block device via statmount();
+ * requires mountfd support (mountutils.h) */
+#ifdef STATMOUNT_SB_SOURCE
+ if (is_directory(src, 1)) {
+ char *orig = xstrdup(src);
+
+ mnt_fs_set_source(fs, NULL);
+ src = NULL;
+ if (mnt_fs_fetch_statmount(fs,
+ STATMOUNT_SB_SOURCE) == 0)
+ src = mnt_fs_get_srcpath(fs);
+ if (!src || *src != '/') {
+ mnt_fs_set_source(fs, orig);
+ src = mnt_fs_get_srcpath(fs);
+ }
+ free(orig);
+ }
+#endif
+
if (!is_directory(tgt, 1) ||
!has_discard(src, &wholedisk)) {
mnt_table_remove_fs(tab, fs);