On Wednesday, 9 August 2017 19:23:40 CEST Richard W.M. Jones wrote:
Unlike previous ‘daemon: Reimplement ...’ patches, this does not
reimplement the umount_all API completely (yet, but this
implementation could be completed in future and then replace the C
one). However it is necessary to have a version of umount_all which
we can call from the OCaml inspection code.
---
Even if this is already committed, better leave some comments than
never ...
daemon/mount.ml | 61
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
daemon/mount.mli | 2 ++
2 files changed, 63 insertions(+)
diff --git a/daemon/mount.ml b/daemon/mount.ml
index 3391ffc11..fbf4ddc39 100644
--- a/daemon/mount.ml
+++ b/daemon/mount.ml
+ List.iter (
+ fun line ->
+ let line = String.nsplit " " line in
+ (* The field of interest is the 5th field. Whitespace is escaped
+ * with octal sequences like \040 (for space).
+ * See fs/seq_file.c:mangle_path.
+ *)
Would it be possible to output to debug the mount entry, like done in
the C version?
+ if List.length line >= 5 then (
+ let mp = List.nth line 4 in
+ let mp = proc_unmangle_path mp in
+
+ (* Allow a mount directory like "/sysroot" or "/sysroot/..."
*)
+ if (sysroot_len > 0 && String.is_prefix mp sysroot) ||
+ (String.is_prefix mp sysroot &&
+ String.length mp > sysroot_len &&
+ mp.[sysroot_len] = '/') then
This condition is puzzling, although so are the 2 if's in the C
version; also it is not an exact 1:1 conversion, since the first half
of the "or" ought to be "sysroot_len > 0 && mp = sysroot".
--
Pino Toscano