[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 3/3] Add the mountee to the list of merged filesystems.
From: |
Sergiu Ivanov |
Subject: |
[PATCH 3/3] Add the mountee to the list of merged filesystems. |
Date: |
Mon, 3 Aug 2009 20:42:27 +0300 |
User-agent: |
Mutt/1.5.18 (2008-05-17) |
>From f09cbc1056ca130ae8144c7f11c75e4b20bb41d9 Mon Sep 17 00:00:00 2001
From: Sergiu Ivanov <unlimitedscolobb@gmail.com>
Date: Sun, 5 Jul 2009 15:26:58 +0300
Subject: [PATCH 3/3] Add the mountee to the list of merged filesystems.
* mount.c (start_mountee): Add the mountee's filesystem to the
list of merged filesystems.
* node.c (node_init_root): Take into consideration the fact that
an empty string refers to the mountee root.
* ulfs.c (ulfs_check): Likewise.
(ulfs_register): Don't check whether "" is a valid directory.
---
mount.c | 9 +++++++++
node.c | 15 ++++++++++++---
ulfs.c | 15 ++++++++++++---
3 files changed, 33 insertions(+), 6 deletions(-)
diff --git a/mount.c b/mount.c
index 45889f8..9d2a1e5 100644
--- a/mount.c
+++ b/mount.c
@@ -27,6 +27,7 @@
#include "mount.h"
#include "lib.h"
+#include "ulfs.h"
/* The command line for starting the mountee. */
char * mountee_argz;
@@ -167,6 +168,14 @@ setup_unionmount (void)
if (err)
return err;
+ /* A path equal to "" will mean that the current ULFS entry is the
+ mountee port. */
+ ulfs_register ("", 0, 0);
+
+ /* Initialize the list of merged filesystems. */
+ ulfs_check ();
+ node_init_root (netfs_root_node);
+
mountee_started = 1;
return 0;
diff --git a/node.c b/node.c
index cf9a8b4..852b5c9 100644
--- a/node.c
+++ b/node.c
@@ -1,7 +1,10 @@
/* Hurd unionfs
- Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2005, 2009 Free Software Foundation, Inc.
+
Written by Moritz Schulte <moritz@duesseldorf.ccc.de>.
+ Adapted for unionmount by Sergiu Ivanov <unlimitedscolobb@gmail.com>.
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
@@ -33,6 +36,7 @@
#include "node.h"
#include "ulfs.h"
#include "lib.h"
+#include "mount.h"
/* Declarations for functions only used in this file. */
@@ -535,8 +539,13 @@ node_init_root (node_t *node)
break;
if (ulfs->path)
- node_ulfs->port = file_name_lookup (ulfs->path,
- O_READ | O_DIRECTORY, 0);
+ {
+ if (!ulfs->path[0])
+ node_ulfs->port = mountee_root;
+ else
+ node_ulfs->port = file_name_lookup (ulfs->path,
+ O_READ | O_DIRECTORY, 0);
+ }
else
node_ulfs->port = underlying_node;
diff --git a/ulfs.c b/ulfs.c
index 3c565a5..126844d 100644
--- a/ulfs.c
+++ b/ulfs.c
@@ -1,7 +1,10 @@
/* Hurd unionfs
- Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2005, 2009 Free Software Foundation, Inc.
+
Written by Moritz Schulte <moritz@duesseldorf.ccc.de>.
+ Adapted for unionmount by Sergiu Ivanov <unlimitedscolobb@gmail.com>.
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
@@ -31,6 +34,7 @@
#include "lib.h"
#include "ulfs.h"
+#include "mount.h"
/* The start of the ulfs chain. */
ulfs_t *ulfs_chain_start;
@@ -219,7 +223,7 @@ ulfs_register (char *path, int flags, int priority)
ulfs_t *ulfs;
error_t err;
- if (path)
+ if (path && path[0])
{
err = check_dir (path);
if (err)
@@ -261,7 +265,12 @@ ulfs_check ()
{
if (u->path)
- p = file_name_lookup (u->path, O_READ | O_DIRECTORY, 0);
+ {
+ if (!u->path[0])
+ p = mountee_root;
+ else
+ p = file_name_lookup (u->path, O_READ | O_DIRECTORY, 0);
+ }
else
p = underlying_node;
--
1.6.3.3
[PATCH 3/3] Add the mountee to the list of merged filesystems.,
Sergiu Ivanov <=