From cb4e125bd0c044353ade32a200949ac8c326622c Mon Sep 17 00:00:00 2001 From: Pavel Emelyanov Date: Wed, 25 Dec 2013 16:53:27 +0400 Subject: [PATCH] mount: Split reading images and populating the ns We will need images at hands while we do pivot_root (see further patches), so prepare the images reading routine. Signed-off-by: Pavel Emelyanov --- mount.c | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/mount.c b/mount.c index 9eeb9087c..fce055442 100644 --- a/mount.c +++ b/mount.c @@ -1209,7 +1209,7 @@ static void free_mounts(void) } } -static int populate_mnt_ns(int ns_pid) +static int read_mnt_ns_img(int ns_pid) { MntEntry *me = NULL; int img, ret; @@ -1277,15 +1277,8 @@ static int populate_mnt_ns(int ns_pid) mntinfo_tree = NULL; mntinfo = pms; - pms = mnt_build_tree(pms); - if (!pms) - return -1; + return 0; - if (validate_mounts(pms)) - return -1; - - mntinfo_tree = pms; - return mnt_tree_for_each(pms, do_mount_one); err: while (pms) { struct mount_info *pm = pms; @@ -1296,6 +1289,24 @@ err: return -1; } +static int populate_mnt_ns(int ns_pid) +{ + struct mount_info *pms; + + if (read_mnt_ns_img(ns_pid)) + return -1; + + pms = mnt_build_tree(mntinfo); + if (!pms) + return -1; + + if (validate_mounts(pms)) + return -1; + + mntinfo_tree = pms; + return mnt_tree_for_each(pms, do_mount_one); +} + int prepare_mnt_ns(int ns_pid) { int ret;