[CRIU] [PATCH v4 04/17] protobuf: autofs mount entry introduced
Stanislav Kinsburskiy
skinsbursky at virtuozzo.com
Thu Jan 7 08:09:35 PST 2016
This entry will be used to carry all the autofs parameters, required to
restore mount point.
Signed-off-by: Stanislav Kinsburskiy <skinsbursky at virtuozzo.com>
---
include/mount.h | 3 +++
mount.c | 14 ++++++++++++++
protobuf/mnt.proto | 16 ++++++++++++++++
3 files changed, 33 insertions(+)
diff --git a/include/mount.h b/include/mount.h
index b3bbdce..d2ccd64 100644
--- a/include/mount.h
+++ b/include/mount.h
@@ -5,6 +5,7 @@
#include "asm/types.h"
#include "list.h"
+#include "protobuf/mnt.pb-c.h"
struct proc_mountinfo;
struct pstree_item;
@@ -84,6 +85,8 @@ struct mount_info {
struct list_head postpone;
void *private; /* associated filesystem data */
+
+ AutofsEntry *autofs;
};
extern struct mount_info *mntinfo;
diff --git a/mount.c b/mount.c
index f7df464..645c4b4 100644
--- a/mount.c
+++ b/mount.c
@@ -1873,6 +1873,8 @@ static int dump_one_mountpoint(struct mount_info *pm, struct cr_img *img)
} else
me.root = pm->root;
+ me.autofs = pm->autofs;
+
if (pb_write_one(img, &me, PB_MNT))
return -1;
@@ -2759,6 +2761,15 @@ static int get_mp_mountpoint(MntEntry *me, struct mount_info *mi, char *root, in
return 0;
}
+static int get_mp_autofs(MntEntry *me, struct mount_info *mi)
+{
+ mi->autofs = xmalloc(sizeof(*mi->autofs));
+ if (!mi->autofs)
+ return -1;
+ mi->autofs = me->autofs;
+ return 0;
+}
+
static int collect_mnt_from_image(struct mount_info **pms, struct ns_id *nsid)
{
MntEntry *me = NULL;
@@ -2835,6 +2846,9 @@ static int collect_mnt_from_image(struct mount_info **pms, struct ns_id *nsid)
if (get_mp_mountpoint(me, pm, root, root_len))
goto err;
+ if (get_mp_autofs(me, pm))
+ goto err;
+
pr_debug("\tRead %d mp @ %s\n", pm->mnt_id, pm->mountpoint);
}
diff --git a/protobuf/mnt.proto b/protobuf/mnt.proto
index fe1e4bb..2b697c6 100644
--- a/protobuf/mnt.proto
+++ b/protobuf/mnt.proto
@@ -22,6 +22,20 @@ enum fstype {
AUTOFS = 18;
};
+message autofs_entry {
+ required int32 fd = 1;
+ required int32 pgrp = 2;
+ required int32 timeout = 3;
+ required int32 minproto = 4;
+ required int32 maxproto = 5;
+ required int32 mode = 6;
+
+ optional int32 uid = 7;
+ optional int32 gid = 8;
+
+ optional int32 read_fd = 9;
+}
+
message mnt_entry {
required uint32 fstype = 1;
required uint32 mnt_id = 2;
@@ -45,4 +59,6 @@ message mnt_entry {
optional bool deleted = 16;
optional uint32 sb_flags = 17 [(criu).hex = true];
+
+ optional autofs_entry autofs = 18;
}
More information about the CRIU
mailing list