On lun. 19 mai 2014 à 15:30:23, Pierre-Elliott Bécue wrote: > On Mon, 19 May 2014 14:34:40 +0200, David Guyot wrote: > > Pierre-Elliott, > > > > Thanks for your reply. Your offer seems correct to me; nevertheless, > > regarding your second proposition, why would the warning be only > > displayed with the verbose flag? I mean, doesn't it worth the trouble to > > always display this warning, even without -v, given the relatively small > > amount of situation the current behaviour of mount will be desirable and > > the comparatively great number of situations this same current behaviour > > will be a problem? > > > > Regarding the code, I'm afraid I can't help to this patch; my C level is > > almost at absolute zero. > > > > Regards. > > -- > > Pierre-Eliott, > > > > Merci pour ta réponse. Ta proposition me semble correcte, si ce n'est > > que je ne comprends pas pourquoi ta seconde proposition suggère de > > n'afficher l'avertissement que si le mode verbeux est actif. Je veux > > dire par là que ça vaudrait peut-être le coup de toujours afficher cet > > avertissement, même sans mode verbeux, au vu du faible nombre de > > situations où le comportement actuel serait souhaitable, comparé au > > grand nombre de cas où ce comportement serait un problème, non ? > > > > Concernant le code, j'ai peur de ne pas pouvoir aider à ton patch, car > > mon niveau en C avoisine le zéro absolu. > > > > Cordialement. > > Cheers, > > My opinion on the subject is that my patch shouldn't modify the general > behavior of mount. This is the upstream role to decide wether mount should > alert in any case or not. I agree that this warning would be useful, but I'm > not sure to be enough good to decide the modalities of this warning. > > As for the patch, I tested it with mount -v. With mount -av, it doesn't > work, probably because of the way mtab is updated. I thought I would have > the time to think about it this weekend, but I did'nt. > > Btw, the patchfile I submitted is not the good one, it has a typo at strstr > call. Here is the good one.
Ok, I investigated further. The thing is, mount doesn't update /etc/mtab if it is a symlink. The fact is, on recent debian system, /etc/mtab points to /proc/mounts which points to /proc/self/mounts. This file is updated by kernel, and, it seems that the kernel updates it "intelligently". So my patch won't make it way with mount -a, and won't fix your problem. I'll look for a solution. -- PEB And I re-re-submit my patch, because it seems although the second patchfile is good, it's corrupted (and though unappliable). This time, I promise, it's all good :D
--- util-linux-2.20.1/mount/mount.c 2014-05-19 15:27:57.000000000 +0200 +++ util-linux-2.20.1bak/mount/mount.c 2014-05-19 15:40:13.264089646 +0200 @@ -310,6 +310,21 @@ printf ("\n"); } +/* Check if node overlaps another entry in mtab */ +static int +overlap_fs(const char *spec, const char *node){ + struct mntentchn *mc, *mc0; + + mc0 = mtab_head(); + for (mc = mc0->nxt; mc && mc != mc0; mc = mc->nxt) { + if(strstr(mc->m.mnt_dir, node) != NULL){ + return 1; + } + } + + return 0; +} + /* Report on everything in mtab (of the specified types if any). */ static int print_all (char *types) { @@ -2021,6 +2036,14 @@ } } + if(verbose && overlap_fs(spec, node)){ + printf(_("mount: mounting %s on %s overlaps " + "another already mounted fs, type " + "mount and search for %s for more " + "information.\n"), + spec, node, node); + } + /* Handle possible LABEL= and UUID= forms of spec */ if (types == NULL || (strncmp(types, "9p", 2) && strncmp(types, "nfs", 3) &&