when ufs is 99% full, current seems to limit creat to 28672 bytes
Julian H. Stacey
jhs at berklix.com
Thu Dec 29 20:39:41 UTC 2016
Kirk McKusick wrote Mon, 26 Dec 2016 15:13:23 -0800
> > To: freebsd-fs at freebsd.org
> > Subject: Re: when ufs is 99% full, current seems to limit creat to 28672 bytes
> > From: "Julian H. Stacey" <jhs at berklix.com>
> > Date: Mon, 26 Dec 2016 18:20:59 +0100
> >
> > Gary J wrote:
> >
> > > I suspect this ia a result of how UFS is designed.
> >
> > Yes.
> >
> > > Did you use the
> > > standard options for block and fragment size? How about inodes?
> >
> > Yes, I created that partition years ago, I pretty much always just
> > use newfs unless experimenting perhaps for a small partition on USB
> > stick or CDROM (& then I'd normally delete), so it would have been
> > a newfs almost guaranteed with no parameters, default.
> >
> > > Is the file system UFS1 or UFS2?
> >
> > UFS2
> >
> >
> > > UFS is a very compex bit of software and I imagine there are all
> > > kinds of interesting surprises when the file system is 99% full.
> > >
> > > Anyway, the newfs man page may provide some clues. Or look at
> > > Wikipedia, there's a UFS entry there, but it doesn't go into the gorey
> > > details.
> >
> > I'll read https://en.wikipedia.org/wiki/Unix_File_System
> >
> > Konstantin B wrote
> > > dumpfs(8) allows to look at ....
> >
> > Top of dumpfs:
> > magic 19540119 (UFS2) time Sun Dec 25 03:19:13 2016
> > superblock location 65536 id [ 548daf7f b34ae147 ]
> > ncg 1399 size 224197115 blocks 217157317
> > bsize 32768 shift 15 mask 0xffff8000
> > fsize 4096 shift 12 mask 0xfffff000
> > frag 8 shift 3 fsbtodb 3
> > minfree 0% optim space symlinklen 120
> > maxbsize 32768 maxbpg 4096 maxcontig 4 contigsumsize 4
> > nbfree 0 ndir 1555427 nifree 102683126 nffree 1339169
> > bpg 20035 fpg 160280 ipg 80256 unrefs 0
> > nindir 4096 inopb 128 maxfilesize 2252349704110079
> > sbsize 4096 cgsize 32768 csaddr 5056 cssize 24576
> > sblkno 24 cblkno 32 iblkno 40 dblkno 5056
> > cgrotor 622 fmod 0 ronly 0 clean 1
> > metaspace 6408 avgfpdir 64 avgfilesize 16384
> > flags soft-updates
> > fsmnt /data
> > volname swuid 0 providersize 224197115
> >
> > Thanks All,
> >
> > 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
>
> You HAVE made a change to the filesystem parameters. You have set
> minfree to 0%.
Sorry for my delay replying. Thanks for yours.
Yes. Crossed wires :-)
I meant I ran plain newfs years back, but yes I did a few days back run
tunefs -m 0 to try to write all last blocks, per my original post:
jhs> How I noticed:
jhs> I wanted to soak up every last block on FS, (cos Ive been having
jhs> block device errors, so I wanted to force a read write on all
jhs> unused blocks to hopefully get IDE drive to re-allocate anything flakey.)
> This means that you are not allowing UFS to keep any
> blocks in reserve. At this point you have no full sized blocks
> left in the filesystem (nbfree == 0). Thus the only thing left in
> the filesystem is fragments. A file in UFS is made up of zero or
> more full-sized blocks and at most one fragment. When you have used
> up all of the full-sized blocks you cannot create files larger than
> the largest available fragment. So if you continue with your
> experiment you will find that the biggest file you can create will
> eventually fall to 1K.
>
> So long as you keep minfree at 1% or higher, you will not hit this
> condition which is why tunefs warns you not to set minfree to
> absurdly low values. If you want to ensure that your filesystem can
> be filled to the last block, you should set the blocksize and the
> fragment size to the same value. This will ensure that your filesystem
> has only full-sized blocks and never creates fragments. Thus you
> will be able to allocate files until it is compelely full.
>
> Kirk McKusick
Interesting thanks :-)
It was really a temporary cludge of mine to tickle for bad blocks,
working from inside the file system. I'd better do it properly,
unmount & experiment with eg camcontrol on the partition or whole
disk, or search ports/ &/or write a little C prog that reads blocks
from a file (aka dev name of partition or whole disk, stores, to
memory, & writes back blocks)
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