cvs commit: src/sys/ufs/ffs ffs_alloc.c

Pawel Jakub Dawidek pjd at FreeBSD.org
Thu Oct 27 00:09:11 PDT 2005


On Thu, Oct 27, 2005 at 08:55:46AM +0200, Pawel Jakub Dawidek wrote:
+> On Mon, Oct 03, 2005 at 09:57:43PM +0000, Don Lewis wrote:
+> +> truckman    2005-10-03 21:57:43 UTC
+> +> 
+> +>   FreeBSD src repository
+> +> 
+> +>   Modified files:
+> +>     sys/ufs/ffs          ffs_alloc.c 
+> +>   Log:
+> +>   Initialize the inode i_flag field in ffs_valloc() to clean up any
+> +>   stale flag bits left over from before the inode was recycled.
+> +>   
+> +>   Without this change, a leftover IN_SPACECOUNTED flag could prevent
+> +>   softdep_freefile() and softdep_releasefile() from incrementing
+> +>   fs_pendinginodes.  Because handle_workitem_freefile() unconditionally
+> +>   decrements fs_pendinginodes, a negative value could be reported at
+> +>   file system unmount time with a message like:
+> +>           unmount pending error: blocks 0 files -3
+> +>   The pending block count in fs_pendingblocks could also be negative
+> +>   for similar reasons.  These errors can cause the data returned by
+> +>   statfs() to be slightly incorrect.  Some other cleanup code in
+> +>   softdep_releasefile() could also be incorrectly bypassed.
+> 
+> Not sure how much the problem I'm seeing is related to this, but after
+> clean reboot, when I do:
+> 
+> 	# mount -u -r /usr
+> 
+> I get: /usr: update error: blocks 24 files 1
+> 
+> Any idea what's going on? This file system is using soft-updates.
+> Maybe it remounts itself to read-only before flushing buffers?
+> 
+> Not sure how old is the problem, but could be very old. Before GEOM
+> device was always open RW, now RO means RO and the order could be
+> wrong somewhere.

I fsck'ed this "clean" file system and:

** Phase 4 - Check Reference Counts
UNREF FILE I=2357670  OWNER=pjd MODE=100600
SIZE=258 MTIME=Oct 27 08:40 2005
CLEAR? [yn] y

UNREF FILE I=8101888  OWNER=root MODE=100644
SIZE=10573 MTIME=Oct 27 08:41 2005
CLEAR? [yn] y

UNREF FILE I=8102436  OWNER=root MODE=100644
SIZE=10573 MTIME=Oct 21 12:04 2005
CLEAR? [yn] y

** Phase 5 - Check Cyl groups
FREE BLK COUNT(S) WRONG IN SUPERBLK
SALVAGE? [yn] y

SUMMARY INFORMATION BAD
SALVAGE? [yn] y

BLK(S) MISSING IN BIT MAPS
SALVAGE? [yn] y

887288 files, 28777941 used, 3987616 free (251064 frags, 467069 blocks, 0.8% fra
gmentation)

***** FILE SYSTEM WAS MODIFIED *****

Doing:

	# sync;sync;sync;mount -u -r /usr

worked just fine when I tried.

-- 
Pawel Jakub Dawidek                       http://www.wheel.pl
pjd at FreeBSD.org                           http://www.FreeBSD.org
FreeBSD committer                         Am I Evil? Yes, I Am!
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/cvs-src/attachments/20051027/14f2b3f4/attachment.bin


More information about the cvs-src mailing list