Date: Fri, 24 Aug 2007 01:07:51 +1000 (EST) From: Ian Smith <smithi@nimnet.asn.au> To: Karol Kwiatkowski <karol.kwiat@gmail.com> Cc: Chris <chrcoluk@gmail.com>, freebsd-questions@freebsd.org, Bill Moran <wmoran@potentialtech.com> Subject: Re: fsck strangeness Message-ID: <Pine.BSF.3.96.1070823202242.26941E-100000@gaia.nimnet.asn.au> In-Reply-To: <46CD5295.4050406@gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 23 Aug 2007, Karol Kwiatkowski wrote: > Ian Smith wrote: > > On Thu, 23 Aug 2007, Karol Kwiatkowski wrote: > > > Ian Smith wrote: > > > > On Wed, 22 Aug 2007, Chris wrote: > > > > > If its bad to run fsck on a mounted read,write then why does > > > > > background fsck do it? or you talking about foreground fsck only? > > > > > > > > Well I was referring to foreground fsck, and I still don't know why > > > > running it on a mounted fs is 'bad' when fsck runs in 'NO WRITE' mode > > > > anyway when it finds a fs is mounted, hence my query above. > > > > > > Here's my understanding: > > > > > > Mounted fs (rw) isn't in stable state, there may be some writes to it - > > > daemons, buffers flushes, etc. In this condition fsck can report > > > inconsistency. And fsck running in 'NO WRITE' won't help anyway :) > > > > a) Absolutely. > > > > b) Indeed it usually does, fairly consistently, especially on /var. > > > > c) No it won't help (except where it can help locate problems in a real > > mess like bad blocks), but the assertion in question was, can it hurt? > > Ah sorry, I missed that. With 'NO WRITE' one can suppose it shouldn't > hurt anything except performance ;) > > I made a quick scan through the source and it looks like it won't: > - in src/sbin/fsck_ffs/setup.c > if fs is mounted rw fswritefd is set to -1 Ah, the source, who would have thought .. so it does .. if (bkgrdflag == 0 && (nflag || (fswritefd = open(dev, O_WRONLY)) < 0)) { fswritefd = -1; if (preen) pfatal("NO WRITE ACCESS"); printf(" (NO WRITE)"); } .. which explore answered the flip side of my query, I think: fsck (in fg mode) _will_ update an fs mounted readonly, unless -n is specified. > - in src/sbin/fsck_ffs/fsutil.c > blwrite(), flush() and ckfini() won't write anything if fswritefd<0 > > Unless, of course, I'm missing something. I'll keep using -n to be sure for 'casual' fsck, never failed me, and one day I may figure out how bg fsck works. Thanks for the tute :) Cheers, Ian
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.96.1070823202242.26941E-100000>