when ufs is 99% full, current seems to limit creat to 28672 bytes

Julian H. Stacey jhs at berklix.com
Sun Dec 25 04:41:09 UTC 2016


A puzzle below, that I think I've solved, but comments welcome:
When ufs is 99% full, current limits creat to 28672 bytes.

On current,
mount
/dev/ada0s4f on /data (ufs, NFS exported, local, soft-updates)

/bin/df /data
Filesystem   1K-blocks      Used   Avail Capacity  Mounted on
/dev/ada0s4f 868629268 863272592 5356676    99%    /data

csh
foreach i ( `cd /host/fire/0s4/ftp/pub/FreeBSD/mail/ports ; /bin/ls -1 [0-9]*`)
	# Above just a trick to generate 3000 numeric names.
	# ( testblock -v -b 512 tb.$i ) 	# My little C program
	#   http://berklix.com/~jhs/src/bsd/jhs/bin/public/testblock/
	# OR a simpler standard dd ...
	( dd if=/dev/zero of=dd.$i )
	end

Produces loads of little files of size 28672 bytes = 0x7000

A foreground fsck of FS shows no errors.  No ZFS in use.  Where
does all the extra space come from ?  Why does it keep allowing
more little files ?  But not files bigger than 7K ?

The last 5 Gig seems unusable space not in the meta space of normal
free blocks for big files. Presumably instead in the payload of
initial data space pre allocated along with each unused inode ? So
1K for inode & 7K data ?

ffsinfo | more
	bsize             int32_t          0x00008000
	fsize             int32_t          0x00001000


df -i /dev/ada0s4f
Filesystem   1K-blocks Used      Avail   Capacity iused   ifree     %iused
/dev/ada0s4f 868629268 863272592 5356676    99%   9595016 102683126 9%   

dc 102683126 28672 * p	# 2 944 130 588 672	
3G not 5.3G as above from df, but seems not too dissimilar.

If this 0x7K phenomena is not documented in manuals somewhere ?  it
perhaps should be ? 

How I noticed:
  I wanted to soak up every last block on FS, (cos Ive been having
  block device errors, so I wanted to force a read write on all
  unused blocks to hopefully get IDE drive to re-allocate anything flakey.)
  ada0: 953869MB (1953525168 512 byte sectors)

Tips very welcome on [usb scsi] Commands/Manuals/ ports/ to either:
  rescan partition
	(I could achive a crude reallocation of discovered bad blocks,
	 using drivers inside disk or FreeBSD, by writing new test data 
	 on my partition with dd or my testblock -b 60k /dev/ada0s4f 
  reformat disk.
	Maybe man fsck See Also should ref camcontrol ?

Cheers,
Julian
-- 
Julian Stacey, BSD Linux Unix Sys Eng Consultant Munich
 Reply below, Prefix '> '. Plain text, No .doc, base64, HTML, quoted-printable.
 http://berklix.eu/brexit/#stolen_votes


More information about the freebsd-fs mailing list