After crash, / comes up mounted read-only, but in multiuser; mfs /tmp?

Maksim Yevmenkin maksim.yevmenkin at savvis.net
Fri Dec 2 11:48:47 PST 2005


John Baldwin wrote:
> On Friday 02 December 2005 11:09 am, Maksim Yevmenkin wrote:
> 
>>John Baldwin wrote:
>>
>>>On Friday 02 December 2005 08:33 am, David Xu wrote:
>>>
>>>>Robert Watson wrote:
>>>>
>>>>>While testing the new DRM update (went badly :-), I crashed my system
>>>>>and had to power cycle it.  When it came back up, not surprisingly,
>>>>>the file systems weren't clean.  When I reached a login prompt, I
>>>>>logged in to modify /etc/rc.conf, and to my surprise, was told that
>>>>>/etc/rc.conf wasn't writable.  Turns out it was because / was mounted
>>>>>read-only:
>>>>>
>>>>>...
>>>>>
>>>>>/dev/ad0s3a on / (ufs, local, read-only)
>>>>>devfs on /dev (devfs, local)
>>>>>/dev/ad0s3e on /usr (ufs, local, soft-updates)
>>>>>/dev/ad0s3d on /var (ufs, local, soft-updates)
>>>>>/dev/md0 on /tmp (ufs, local)
>>>>>
>>>>>The rc scripts helpfully mounted an MFS /tmp for me, which while
>>>>>friendly, succeeded in masking the problem and allowing the system to
>>>>>come up in a rather undesirable state (from my perspective).  So it
>>>>>sounds like maybe / wasn't remounted properly, and then the scripts
>>>>>were too helpful thinking it was a diskless system.
>>>>
>>>>I have seen this for some days,  one machine I even have to reinstall
>>>>the system because mount -u / does not work. :-(
>>>
>>>I've seen reports that mount -u -w / works whereas mount -u -o rw /
>>>doesn't, so you might be able to mount -u -w / in single user mode after
>>>running fsck as a way to recover.  Either that or boot single user, run
>>>fsck, and then reboot before going into multiuser.
>>
>>this is all very nice as workaround, but does somebody actually working
>>on the _real_ problem?
>>
>>it would be nice to have something in UPDATING saying this is broken
>>now. all i can find in UPDATING is
>>
>>20051129:
>>  The nodev mount option was deprecated in RELENG_6 (where it
>>  was a no-op), and is now unsupported.  If you have nodev or dev listed
>>  in /etc/fstab, remove it, otherwise it will result in a mount error.
>>
>>sure that is not the problem, is it?
> 
> No, it's probably due to all the nmount changes in HEAD recently that have 
> broken various mount options for other FS's such as smbfs and msdosfs as 
> well.  Probably should bug crodig@ or just dig into the code to see how -o rw 
> used to be handled and how it is not handled now.
> 

how about something quick and dirty, like so

beetle# pwd
/usr/src/sbin/mount
beetle# diff -u mount.c.orig mount.c
--- mount.c.orig        Fri Dec  2 11:45:22 2005
+++ mount.c     Fri Dec  2 11:41:53 2005
@@ -644,7 +644,10 @@
                                         *p = '\0';
                                         argv[argc++] = p+1;
                                 }
-                       } else if (strcmp(p, "rw") != 0) {
+                       } else if (strcmp(p, "rw") == 0) {
+                               argv[argc++] = strdup("-o");
+                               argv[argc++] = strdup("noro");
+                       } else {
                                 argv[argc++] = strdup("-o");
                                 argv[argc++] = p;
                         }
%%

thanks,
max


More information about the freebsd-current mailing list