Arrigo Marchiori
2021-Feb-27 13:00 UTC
Trying do mount a slice containing a mounted partition makes the filesystem unreadable
Hello Helge, Kevin, and thank you for replying. On Sat, Feb 27, 2021 at 09:21:39AM +0100, Helge Oldach wrote:> Kevin P. Neal wrote on Sat, 27 Feb 2021 03:04:35 +0100 (CET): > > On Fri, Feb 26, 2021 at 06:25:05PM +0100, Helge Oldach wrote: > > > Arrigo Marchiori via freebsd-stable wrote on Fri, 26 Feb 2021 17:02:35 +0100 (CET): > > > > Description: when a BSD partition is mounted to / (suppose > > > > /dev/da0s2a), if I try to mount its containing slice (/dev/da0s2) I > > > > receive a ``strange'' error message, and from that moment the mounted > > > > filesystem becomes unreadable. > > > > > > Actually you are mounting the same location on disk twice under > > > different file systems which is a bad idea. > > > > > > For example: > > > > > > # gpart show -p ada0s2 > > > => 0 250064341 ada0s2 BSD (119G) > > > 0 241172480 ada0s2a freebsd-ufs (115G) > > > 241172480 8891861 ada0s2b freebsd-swap (4.2G) > > > > > > Note the "0" offset for both ada0s2 and ada0s2a. When you mount, both > > > "look" like a proper, distinct UFS but actually it's the same location > > > on disk so UFS will get confused if you have both mounted rw. It should > > > go well however if only one is mounted rw and the other(s) ro.I believe that the memstick images may not organized as you pointed out. The standard behavior of mkimg(1) is to leave a small gap between the beginning of the slice and the beginning of the first partition. But I will be able to confirm on Monday, when I will be back to the office.> > Wait, really? It seems like the ro mount wouldn't see any blocks (or other > > unit of data) cached by the rw mount. So the ro mount would see an > > inconsistent filesystem and I personally would expect a crash or other > > misbehavior. > > Of course the ro "view" will show inconistencies. That's actually what > one asks for if doing such bad things as mounting volumes twice. However > it shouldn't crash as the rw mount of / maintains consistency.On the memstick, the root filesystem is mounted read-only. I apologize, I should have told it explicitly. The ``invalid'' attempt is to mount it read-write (no mode is indicated on the command line). I did not try the mount command in read-only mode. I can try this on Monday as well. IMHO it is important to note that everything works as expected when the partition is mounted from /dev/ufs/label: the mount attempt is not permitted and nothing else happens. Even if mounting an already-mounted partition is an invalid action, I do not think that it should render a system unstable. I understand that ``the root user should be allowed to do anything'', even shoot themselves in the foot. But on the other hand, there are features such as kern.geom.debugflags that explicitly avoid it. I hope I could explain myself clearly. Best regards, -- Arrigo http://rigo.altervista.org