[CRIU] [RFC] FSTYPE__UNSUPPORTED/AUTO && non-virtual filesystems

Oleg Nesterov oleg at redhat.com
Sat Mar 28 11:18:08 PDT 2015


On 03/27, Oleg Nesterov wrote:
>
> I tried to dump/restore the dummy (/bin/sleep actually) application
> running in unshared mnt namespace. Dump/Restore fails because a lot
> of filesystems are FSTYPE__UNSUPPORTED: xfs, hugetlbfs, autofs, configfs,
> selinuxfs.
>
> OK, lets forget about xfs for the moment.

Now lets return to xfs.

It is FSTYPE__UNSUPPORTED too, and restore obviously fails even if I
turn it into FSTYPE__AUTO via command line. Because resolve_source()
insists on kdev_major() == 0.

Can't we relax this check? Just try to use mi->source "optimistically" ?
At least for FSTYPE__AUTO ?

I understand that the patch below is not what we really want. And I
have to admit that I do not really understand all implications. But
perhaps something like this simple make sense anyway? Again, if the
user does (say) "--xxx xfs" he should know what it does...

With this hack I can finally dump/restore the application running with
unshared mnt ns on rhel-7 without unmounting /boot.

BUT. This makes me think again that we do want --ignore-this-mountpoint
option. Why not? And afaics trivial to implement. Of course, this will
be "use at your own risk" too.

Oleg.

--- a/mount.c
+++ b/mount.c
@@ -1392,6 +1392,15 @@ static char *resolve_source(struct mount_info *mi)
 		 */
 		return mi->source;
 
+	if (mi->fstype->code == FSTYPE__AUTO) {
+		struct stat st;
+
+		if (!stat(mi->source, &st) && S_ISBLK(st.st_mode) &&
+		    major(st.st_rdev) == kdev_major(mi->s_dev) &&
+		    minor(st.st_rdev) == kdev_minor(mi->s_dev))
+			return mi->source;
+	}
+
 	pr_err("No device for %s mount\n", mi->mountpoint);
 	return NULL;
 }



More information about the CRIU mailing list