| History log of /src/sbin/newfs_lfs |
| Revision | Date | Author | Comments |
| 1.16 | 20-Apr-2024 |
rillig | {usr.,}{s,}bin: replace LINT_SUPPORTED with the standard NOLINT
While here, re-enable lint in those cases where lint was skipped due to a bug in interpreting abstract types, which was fixed in cgram.y 1.469 from 2023-08-02.
|
| 1.15 | 14-Sep-2021 |
rillig | sbin: enable lint for almost all programs
The programs fsck_lfs and newfs_lfs both trigger a longstanding bug in lint that is difficult to fix, so ignore them for now.
For resize_ffs, lint thinks that 'struct fs' is incomplete, but GCC and Clang accept it. Needs further investigation.
|
| 1.14 | 07-Sep-2020 |
mrg | remove GCC_NO_ADDR_OF_PACKED_MEMBER for several subdir builds that are now handled by lfs_accessors.h internally.
|
| 1.13 | 06-Sep-2020 |
mrg | add support for new GCC 9 warnings that may be too much to fix right now. new address-of-packed-member and format-overflow warnings have new GCC_NO_ADDR_OF_PACKED_MEMBER amd GCC_NO_FORMAT_OVERFLOW variables to remove these warnings.
apply to a bunch of the tree. mostly, these are real bugs that should be fixed, but in many cases, only by removing the 'packed' attribute from some structure that doesn't really need it. (i looked at many different ones, and while perhaps 60-80% were already properly aligned, it wasn't clear to me that the uses were always coming from sane data vs network alignment, so it doesn't seem safe to remove packed without careful research for each affect struct.) clang already warned (and was not erroring) for many of these cases, but gcc picked up dozens more.
|
| 1.12 | 08-Jun-2013 |
dholland | Redo these changes properly: -r1.12 libexec/lfs_cleanerd/Makefile -r1.15 sbin/fsck_lfs/Makefile -r1.6 sbin/newfs_lfs/Makefile
hi ad@
|
| 1.11 | 08-Jun-2013 |
dholland | Tidy up the LFS userland build hacks. Don't use -I${NETBSDSRCDIR}/sys; don't include files other than the exported LFS headers, which are lfs.h, lfs_inode.h, and (for now) lfs_extern.h.
|
| 1.10 | 06-Jun-2013 |
dholland | Cleanups and hacks to make lfs userland stuff build: - lfs_cksum.c doesn't actually need ulfs_inode.h any more. - neither does lfs_itimes.c. - add hacks to fsck_lfs to make it compile. - add hacks to newfs_lfs to make it compile. - fix warning in ulfs_quota.c when quotas are fully disabled (as I guess is happening with the rumpity version)
XXX: This commit adds -I${NETBSDSRCDIR}/sys to the Makefiles for XXX: fsck_lfs, newfs_lfs, and lfs_cleanerd. This needs to be cleaned XXX: up ASAP; but I consider this less problematic in the short term XXX: than spewing ulfs_*.h into /usr/include.
|
| 1.9 | 06-Aug-2009 |
pooka | branches: 1.9.6; 1.9.12; Define syscalls of lfs userspace tools (cleaner, mainly) through a struct called kernelops, which contains standard system calls for the normal case and rump system calls for the rump case.
Make it possible to run the lfs cleaner in a library fashion (taking the quick route with the implementation).
|
| 1.8 | 05-Jun-2009 |
haad | Add support for DIOCGDISKINFO to disk like device drivers. Change partutil.c::getdiskinfo to use it to get disk geometry info. Use DIOCGWEDGEINFO ioctl to get information about partition size, if disk driver doesn't support it use old DIOCGDINFO. This patch adds support for wedge like devices(lvm logical volumes, ZFS zvol partitions) to newfs and other tools.
No objections on tech-userlevel@.
|
| 1.7 | 11-Apr-2009 |
lukem | Enable WARNS=4 by default except for: dump dump_lfs fsck_ffs fsck_lfs fsdb mount_smbfs newfs_ext2fs newfs_lfs resize_lfs setkey
|
| 1.6 | 28-Dec-2007 |
ad | branches: 1.6.12; Make it build with src/sys from the vmlocking2 branch.
|
| 1.5 | 05-Sep-2006 |
riz | branches: 1.5.8; 1.5.10; Deal with wedges and the new disk geometry structures, instead of using struct disklabel. From Christos Zoulas.
|
| 1.4 | 13-Sep-2005 |
christos | make this compile again.
|
| 1.3 | 26-Feb-2005 |
perseant | Various minor LFS improvements:
* Extend the lfs library from fsck_lfs(8) so that it can be used with a not-yet-existent LFS. Make newfs_lfs(8) use this library, so it can create LFSs whose Ifile is larger than one segment. * Make newfs_lfs(8) use strsuftoi64() for its arguments, a la newfs(8). * Make fsck_lfs(8) respect the "file system is clean" flag. * Don't let fsck_lfs(8) think it has dirty blocks when invoked with the -n flag.
|
| 1.2 | 19-Aug-2002 |
lukem | branches: 1.2.4; Use ${NETBSDSRCDIR}/some/path instead of ${.CURDIR}/../../some/path
|
| 1.1 | 18-Mar-1999 |
perseant | Change name of newlfs to newfs_lfs.
|
| 1.2.4.1 | 10-May-2005 |
riz | Pull up the following revisions (requested by perseant in ticket #1281):
1.8 sys/ufs/lfs/TODO 1.75 sys/ufs/lfs/lfs.h (via patch) 1.74 sys/ufs/lfs/lfs_alloc.c (via patch) 1.49, 1.51 sys/ufs/lfs/lfs_balloc.c (1.51 via patch) 1.78 sys/ufs/lfs/lfs_bio.c 1.62 sys/ufs/lfs/lfs_extern.h (via patch) 1.156 sys/ufs/lfs/lfs_segment.c (via patch) 1.48 sys/ufs/lfs/lfs_subr.c 1.101 sys/ufs/lfs/lfs_syscalls.c 1.163 sys/ufs/lfs/lfs_vfsops.c (via patch) 1.134 sys/ufs/lfs/lfs_vnops.c (via patch) 1.61 sys/ufs/ufs/ufs_readwrite.c (via patch)
1.20 libexec/lfs_cleanerd/clean.h (via patch) 1.52 libexec/lfs_cleanerd/cleanerd.c (via patch) 1.41 libexec/lfs_cleanerd/library.c (via patch)
1.4 regress/sys/fs/lfs/newfs_fsck/Makefile 1.2 regress/sys/fs/lfs/newfs_fsck/mkfs_mount 1.2 regress/sys/fs/lfs/newfs_fsck/smallfiles 1.3 sbin/fsck_lfs/bufcache.c 1.3 sbin/fsck_lfs/bufcache.h 1.3 sbin/fsck_lfs/lfs.h 1.8 sbin/fsck_lfs/lfs.c (via patch) 1.8 sbin/fsck_lfs/pass3.c (via patch) 1.18 sbin/fsck_lfs/pass0.c (via patch) 1.18 sbin/fsck_lfs/utilities.c (via patch) 1.7 sbin/fsck_lfs/segwrite.c 1.19 sbin/fsck_lfs/setup.c (via patch) 1.3 sbin/newfs_lfs/Makefile 0 sbin/newfs_lfs/lfs.c (yes, remove it) 1.1 sbin/newfs_lfs/make_lfs.c 1.15 sbin/newfs_lfs/newfs.c (via patch)
Various minor LFS improvements.
Kernel:
* Note when lfs_putpages(9) thinks it is not going to be writing any pages before calling genfs_putpages(9). This prevents a situation in which blocks can be queued for writing without a segment header. * Correct computation of NRESERVE(), though it is still a gross overestimate in most cases. Note that if NRESERVE() is too high, it may be impossible to create files on the filesystem. We catch this case on filesystem mount and refuse to mount r/w. * Allow filesystems to be mounted whose block size is == MAXBSIZE. * Somewhere along the line, ufs_bmaparray(9) started mangling UNWRITTEN entries in indirect blocks again, triggering a failed assertion "daddr <= LFS_MAX_DADDR". Explicitly convert to and from int32_t to correct this. Should fix PR #29045. * Add a high-water mark for the number of dirty pages any given LFS can hold before triggering a flush. This is settable by sysctl, but off (zero) by default. * Be more careful about the MAX_BYTES and MAX_BUFS computations so we shouldn't see "please increase to at least zero" messages. * Note that VBLK and VCHR vnodes can have nonzero values in di_db[0] even though their v_size == 0. Don't panic when we see this. Fixes PR #26680. * Change lfs_bfree to a signed quantity. The manner in which it is processed before being passed to the cleaner means that sometimes it may drop below zero, and the cleaner must be aware of this. * Never report bfree < 0 (or higher than lfs_dsize) through lfs_statfs(9). This prevents df(1) from ever telling us that our full filesystems have 16TB free. * Account space allocated through lfs_balloc(9) that does not have associated buffer headers, so that the pagedaemon doesn't run us out of segments. * Return ENOSPC from lfs_balloc(9) when bfree drops to zero. * Address a deadlock in lfs_bmapv/lfs_markv when the filesystem is being unmounted. Because vfs_busy() is a shared lock, and lfs_bmapv/lfs_markv mark the filesystem vfs_busy(), the cleaner can be holding the lock that umount() is blocking on, then try to vfs_busy() again in getnewvnode().
cleaner:
* Adapt lfs_cleanerd to use the fcntl call to get the Ifile filehandle, so it need not be in the namespace. * Make lfs_cleanerd be more careful when there are very few available segments. * Make lfs_cleanerd less verbose when the filesystem is unmounted.
newfs_lfs, fsck_lfs, and regression:
* Extend the lfs library from fsck_lfs(8) so that it can be used with a not-yet-existent LFS. Make newfs_lfs(8) use this library, so it can create LFSs whose Ifile is larger than one segment. Addresses PR #11110. * Make newfs_lfs(8) use strsuftoi64() for its arguments, a la newfs(8). * Make fsck_lfs(8) respect the "file system is clean" flag. * Don't let fsck_lfs(8) think it has dirty blocks when invoked with the -n flag. * Remove the Ifile from the filesystem namespace. The cleaner now uses a fcntl call on the root inode to find the Ifile filehandle. (As a side-effect, addresses PR #29144.)
|
| 1.5.10.1 | 18-Feb-2008 |
mjf | Sync with HEAD.
|
| 1.5.8.1 | 09-Jan-2008 |
matt | sync with HEAD
|
| 1.6.12.1 | 13-May-2009 |
jym | Sync with HEAD.
Third (and last) commit. See http://mail-index.netbsd.org/source-changes/2009/05/13/msg221222.html
|
| 1.9.12.1 | 23-Jun-2013 |
tls | resync from head
|
| 1.9.6.1 | 22-May-2014 |
yamt | sync with head.
for a reference, the tree before this commit was tagged as yamt-pagecache-tag8.
this commit was splitted into small chunks to avoid a limitation of cvs. ("Protocol error: too many arguments")
|
| 1.10 | 18-Oct-2025 |
perseant | Reduce the minimum allowed segment size to match up with the size produced by the auto-sizer for ATF tests. Will need to revisit the auto-sizer logic later as well.
|
| 1.9 | 02-Feb-2012 |
perseant | When creating a very small filesystem, use well-known small segment, block and fragment sizes by default instead of the ordinary 1M/8k/1k default for larger filesystems.
|
| 1.8 | 17-Dec-2003 |
yamt | branches: 1.8.56; remove definitions for ffs, which don't belong here.
|
| 1.7 | 07-Aug-2003 |
agc | Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22308, verified by myself.
|
| 1.6 | 13-Jul-2001 |
perseant | Merge the short-lived perseant-lfsv2 branch into the trunk.
Kernels and tools understand both v1 and v2 filesystems; newfs_lfs generates v2 by default. Changes for the v2 layout include:
- Segments of non-PO2 size and arbitrary block offset, so these can be matched to convenient physical characteristics of the partition (e.g., stripe or track size and offset).
- Address by fragment instead of by disk sector, paving the way for non-512-byte-sector devices. In theory fragments can be as large as you like, though in reality they must be smaller than MAXBSIZE in size.
- Use serial number and filesystem identifier to ensure that roll-forward doesn't get old data and think it's new. Roll-forward is enabled for v2 filesystems, though not for v1 filesystems by default.
- The inode free list is now a tailq, paving the way for undelete (undelete is not yet implemented, but can be without further non-backwards-compatible changes to disk structures).
- Inode atime information is kept in the Ifile, instead of on the inode; that is, the inode is never written *just* because atime was changed. Because of this the inodes remain near the file data on the disk, rather than wandering all over as the disk is read repeatedly. This speeds up repeated reads by a small but noticeable amount.
Other changes of note include:
- The ifile written by newfs_lfs can now be of arbitrary length, it is no longer restricted to a single indirect block.
- Fixed an old bug where ctime was changed every time a vnode was created. I need to look more closely to make sure that the times are only updated during write(2) and friends, not after-the-fact during a segment write, and certainly not by the cleaner.
|
| 1.5 | 09-Sep-2000 |
perseant | branches: 1.5.2; Various bug-fixes to LFS, to wit:
Kernel:
* Add runtime quantity lfs_ravail, the number of disk-blocks reserved for writing. Writes to the filesystem first reserve a maximum amount of blocks before their write is allowed to proceed; after the blocks are allocated the reserved total is reduced by a corresponding amount.
If the lfs_reserve function cannot immediately reserve the requested number of blocks, the inode is unlocked, and the thread sleeps until the cleaner has made enough space available for the blocks to be reserved. In this way large files can be written to the filesystem (or, smaller files can be written to a nearly-full but thoroughly clean filesystem) and the cleaner can still function properly.
* Remove explicit switching on dlfs_minfreeseg from the kernel code; it is now merely a fs-creation parameter used to compute dlfs_avail and dlfs_bfree (and used by fsck_lfs(8) to check their accuracy). Its former role is better assumed by a properly computed dlfs_avail.
* Bounds-check inode numbers submitted through lfs_bmapv and lfs_markv. This prevents a panic, but, if the cleaner is feeding the filesystem the wrong data, you are still in a world of hurt.
* Cleanup: remove explicit references of DEV_BSIZE in favor of btodb()/dbtob().
lfs_cleanerd:
* Make -n mean "send N segments' blocks through a single call to lfs_markv". Previously it had meant "clean N segments though N calls to lfs_markv, before looking again to see if more need to be cleaned". The new behavior gives better packing of direct data on disk with as little metadata as possible, largely alleviating the problem that the cleaner can consume more disk through inefficient use of metadata than it frees by moving dirty data away from clean "holes" to produce entirely clean segments.
* Make -b mean "read as many segments as necessary to write N segments of dirty data back to disk", rather than its former meaning of "read as many segments as necessary to free N segments worth of space". The new meaning, combined with the new -n behavior described above, further aids in cleaning storage efficiency as entire segments can be written at once, using as few blocks as possible for segment summaries and inode blocks.
* Make the cleaner take note of segments which could not be cleaned due to error, and not attempt to clean them until they are entirely free of dirty blocks. This prevents the case in which a cleanerd running with -n 1 and without -b (formerly the default) would spin trying repeatedly to clean a corrupt segment, while the remaining space filled and deadlocked the filesystem.
* Update the lfs_cleanerd manual page to describe all the options, including the changes mentioned here (in particular, the -b and -n flags were previously undocumented).
fsck_lfs:
* Check, and optionally fix, lfs_avail (to an exact figure) and lfs_bfree (within a margin of error) in pass 5.
newfs_lfs:
* Reduce the default dlfs_minfreeseg to 1/20 of the total segments.
* Add a warning if the sgs disklabel field is 16 (the default for FFS' cpg, but not usually desirable for LFS' sgs: 5--8 is a better range).
* Change the calculation of lfs_avail and lfs_bfree, corresponding to the kernel changes mentioned above.
mount_lfs:
* Add -N and -b options to pass corresponding -n and -b options to lfs_cleanerd.
* Default to calling lfs_cleanerd with "-b -n 4".
[All of these changes were largely tested in the 1.5 branch, with the idea that they (along with previous un-pulled-up work) could be applied to the branch while it was still in ALPHA2; however my test system has experienced corruption on another filesystem (/dev/console has gone missing :^), and, while I believe this unrelated to the LFS changes, I cannot with good conscience request that the changes be pulled up.]
|
| 1.4 | 04-Jul-2000 |
perseant | Tweak how lfs_avail is initialized, corresponding to changes in the kernel.
Don't make more superblock segments than we have a record of in the superblock; and print these out as we go, like newfs.
Add am "-M" flag to specify the number of reserved segments, with a note in the man page not to use it.
|
| 1.3 | 03-Jul-2000 |
perseant | User-level changes corrseponding to my latest kernel changes. newfs_lfs gives lfs_minfreeseg a value of 1/8 of the total segments on the disk, based on rough empirical data, but this should be refined in the future.
|
| 1.2 | 27-Jun-2000 |
perseant | User-level changes for filling the disk.
Set MINFREE to 80, since that's a more reasonable value according to the literature than FFS' 90. Remove a bunch of other unused FFS cruft from config.h.
Initialize lfs_bfree correctly vis-a-vis MIN_FREE_SEGS, so the filesystem doesn't over-represent the amount of free space it has. Initialize lfs_dmeta so the kernel can estimate starting from a reasonable value.
|
| 1.1 | 18-Mar-1999 |
perseant | branches: 1.1.10; Change name of newlfs to newfs_lfs.
|
| 1.1.10.1 | 14-Sep-2000 |
perseant | Pull up LFS userland changes to correspond with the previous commit's kernel changes (approved by thorpej):
[basesrc/libexec/lfs_cleanerd:] cleanerd.c, 1.20--1.22 (MIN_FREE_SEG -> lfs_minfreeseg ; read bfree/avail from CLEANERINFO ; changes to definition of -n and -b) lfs_cleanerd.8, 1.7 (update man page to current behavior) library.c, 1.16 (fix comment)
[basesrc/sbin/fsck_lfs:] pass5.c, 1.6 (calculate/fix lfs_avail and lfs_bfree)
[basesrc/sbin/newfs_lfs:] config.h, 1.2--1.5 (MINFREE=20, remove FFS cruft ; add DFL_MIN_FREE_SEGS=8 and MINFREE=10 ; set DFL_MIN_FREE_SEGS=10 ; set DFL_MIN_FREE_SEGS=20) extern.h, 1.2 (correct function declaration for make_lfs) newfs.c, 1.4 (add -M flag) lfs.c, 1.13--1.14, 1.16--1.18 (change lfs_bfree initialization ; MIN_FREE_SEG -> lfs_minfreeseg ; only 10 superblocks and print nicely ; correct init calculation of lfs_bfree/lfs_avail to allow fs to fill ; make -N dtrt)
[basesrc/sbin/mount_lfs:] mount_lfs.8, 1.7 (document -N, -b flags) mount_lfs.c, 1.10 (default cleanerd to -b -n 4; add -N, -b flags)
[basesrc/usr.sbin/dumplfs:] dumplfs.c, 1.15 (print only the SEGUSEs specified with -s)
|
| 1.5.2.2 | 13-Jul-2001 |
perseant | Default to creating a v2 lfs, and print out the roll-forward id that was used. Update newfs_lfs.8 to reflect new options.
|
| 1.5.2.1 | 27-Jun-2001 |
perseant | Import of what I've been calling "LFSv2", that is, LFS with some features added that require changes to the on-disk data structures. These include:
- 64-bit time in everything but inodes - User-specified segment offset, and segment size no longer restricted to PO2. - Serial number on segment summaries in addition to timestamp, and a new volume identifier, to make roll-forward feasible without fear of finding old data and thinking it was new.
Although I think this version works at least as well as what's on the trunk, we're not done yet; hence this commit is going in on a branch and not on the trunk. Enhancements that are not here yet include fragment addressing, like FFS does, instead of block addressing.
|
| 1.8.56.1 | 17-Apr-2012 |
yamt | sync with head
|
| 1.14 | 15-Oct-2015 |
dholland | Enable the creation of lfs64 volumes.
To create an lfs64 volume, use -w 64. You can also force a 32-bit volume with -w 32, but this will fail on devices thta are too large.
lfs64 is the default for devices > 1TB. (1TB rather than 2TB because daddr_t is signed and negative block numbers can cause interesting complications.)
For now print a warning that the lfs64 format isn't finalized, because it isn't. For now any lfs64 use should be limited to test data, benchmarking, and so forth.
|
| 1.13 | 02-Aug-2015 |
dholland | Add a (draft) 64-bit superblock. Make things build again.
Add pieces of support for using both superblock types where convenient, and specifically to the superblock accessors, but don't actually enable it anywhere.
First substantive step on PR 50000.
|
| 1.12 | 16-Feb-2008 |
matt | lfs_sb_cksum returns a uint32_t, not a u_long
|
| 1.11 | 05-Sep-2006 |
riz | branches: 1.11.8; 1.11.10; Deal with wedges and the new disk geometry structures, instead of using struct disklabel. From Christos Zoulas.
|
| 1.10 | 11-May-2006 |
mrg | - log2() -> lfs_log2(). - fix a couple of entries in struct lfs lfs_default: - in a comment, it's called dlfs_freehd now - dlfs_inodefmt comes after dlfs_tstamp. fortunately for this one, LFS_44INODEFMT is also 0 so the right thing was happening.
|
| 1.9 | 04-May-2006 |
perseant | newfs_lfs(8) compoment of the recent superblock parameter addition. Change the wording of the explanation of the -M option, detail a new -R option that controls initial setting of the new parameter.
|
| 1.8 | 12-Aug-2003 |
dsl | branches: 1.8.6; Stop superblock being written to sector 0 for small filesystems. Honour the '-s size' command option. Allow an LFS filesystem to be created in a file.
|
| 1.7 | 07-Aug-2003 |
agc | Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22308, verified by myself.
|
| 1.6 | 24-Jan-2003 |
fvdl | Bump daddr_t to 64 bits. Replace it with int32_t in all places where it was used on-disk, so that on-disk formats remain the same. Remove ufs_daddr_t and ufs_lbn_t for the time being.
|
| 1.5 | 13-Jul-2001 |
perseant | Merge the short-lived perseant-lfsv2 branch into the trunk.
Kernels and tools understand both v1 and v2 filesystems; newfs_lfs generates v2 by default. Changes for the v2 layout include:
- Segments of non-PO2 size and arbitrary block offset, so these can be matched to convenient physical characteristics of the partition (e.g., stripe or track size and offset).
- Address by fragment instead of by disk sector, paving the way for non-512-byte-sector devices. In theory fragments can be as large as you like, though in reality they must be smaller than MAXBSIZE in size.
- Use serial number and filesystem identifier to ensure that roll-forward doesn't get old data and think it's new. Roll-forward is enabled for v2 filesystems, though not for v1 filesystems by default.
- The inode free list is now a tailq, paving the way for undelete (undelete is not yet implemented, but can be without further non-backwards-compatible changes to disk structures).
- Inode atime information is kept in the Ifile, instead of on the inode; that is, the inode is never written *just* because atime was changed. Because of this the inodes remain near the file data on the disk, rather than wandering all over as the disk is read repeatedly. This speeds up repeated reads by a small but noticeable amount.
Other changes of note include:
- The ifile written by newfs_lfs can now be of arbitrary length, it is no longer restricted to a single indirect block.
- Fixed an old bug where ctime was changed every time a vnode was created. I need to look more closely to make sure that the times are only updated during write(2) and friends, not after-the-fact during a segment write, and certainly not by the cleaner.
|
| 1.4 | 05-Dec-2000 |
perseant | branches: 1.4.2; Add "-A" option to autoconfigure the segment size based on measured bandwidth and seek time of the disk, using the "4 * bandwidth * seek time" formula from Neefe-Matthews' 1997 paper. An RZ25 disk with this option gets 200K segments. Reference the paper in the manual page.
|
| 1.3 | 10-Oct-2000 |
is | Format string cleanups by Bill Sommerfeld.
|
| 1.2 | 04-Jul-2000 |
perseant | Tweak how lfs_avail is initialized, corresponding to changes in the kernel.
Don't make more superblock segments than we have a record of in the superblock; and print these out as we go, like newfs.
Add am "-M" flag to specify the number of reserved segments, with a note in the man page not to use it.
|
| 1.1 | 18-Mar-1999 |
perseant | branches: 1.1.2; 1.1.10; Change name of newlfs to newfs_lfs.
|
| 1.1.10.2 | 18-Oct-2000 |
tv | Pullup sbin string format fixes [is]. See "cvs log" for explicit revision numbers per file, from sommerfeld.
|
| 1.1.10.1 | 14-Sep-2000 |
perseant | Pull up LFS userland changes to correspond with the previous commit's kernel changes (approved by thorpej):
[basesrc/libexec/lfs_cleanerd:] cleanerd.c, 1.20--1.22 (MIN_FREE_SEG -> lfs_minfreeseg ; read bfree/avail from CLEANERINFO ; changes to definition of -n and -b) lfs_cleanerd.8, 1.7 (update man page to current behavior) library.c, 1.16 (fix comment)
[basesrc/sbin/fsck_lfs:] pass5.c, 1.6 (calculate/fix lfs_avail and lfs_bfree)
[basesrc/sbin/newfs_lfs:] config.h, 1.2--1.5 (MINFREE=20, remove FFS cruft ; add DFL_MIN_FREE_SEGS=8 and MINFREE=10 ; set DFL_MIN_FREE_SEGS=10 ; set DFL_MIN_FREE_SEGS=20) extern.h, 1.2 (correct function declaration for make_lfs) newfs.c, 1.4 (add -M flag) lfs.c, 1.13--1.14, 1.16--1.18 (change lfs_bfree initialization ; MIN_FREE_SEG -> lfs_minfreeseg ; only 10 superblocks and print nicely ; correct init calculation of lfs_bfree/lfs_avail to allow fs to fill ; make -N dtrt)
[basesrc/sbin/mount_lfs:] mount_lfs.8, 1.7 (document -N, -b flags) mount_lfs.c, 1.10 (default cleanerd to -b -n 4; add -N, -b flags)
[basesrc/usr.sbin/dumplfs:] dumplfs.c, 1.15 (print only the SEGUSEs specified with -s)
|
| 1.1.2.1 | 10-Oct-2000 |
he | Pull up revision 1.3 (requested by is): Format string cleanup.
|
| 1.4.2.2 | 29-Jun-2001 |
perseant | Get rid of __P(), protoizing where it had not already been done
|
| 1.4.2.1 | 27-Jun-2001 |
perseant | Import of what I've been calling "LFSv2", that is, LFS with some features added that require changes to the on-disk data structures. These include:
- 64-bit time in everything but inodes - User-specified segment offset, and segment size no longer restricted to PO2. - Serial number on segment summaries in addition to timestamp, and a new volume identifier, to make roll-forward feasible without fear of finding old data and thinking it was new.
Although I think this version works at least as well as what's on the trunk, we're not done yet; hence this commit is going in on a branch and not on the trunk. Enhancements that are not here yet include fragment addressing, like FFS does, instead of block addressing.
|
| 1.8.6.1 | 20-May-2006 |
riz | Pull up following revision(s) (requested by perseant in ticket #1327): sbin/newfs_lfs/extern.h: revision 1.9 sbin/newfs_lfs/make_lfs.c: revision 1.7 sbin/newfs_lfs/newfs_lfs.8: revision 1.21 sbin/newfs_lfs/newfs.c: revision 1.20 newfs_lfs(8) compoment of the recent superblock parameter addition. Change the wording of the explanation of the -M option, detail a new -R option that controls initial setting of the new parameter.
|
| 1.11.10.1 | 18-Feb-2008 |
mjf | Sync with HEAD.
|
| 1.11.8.1 | 23-Mar-2008 |
matt | sync with HEAD
|
| 1.36 | 26-Feb-2005 |
perseant | Various minor LFS improvements:
* Extend the lfs library from fsck_lfs(8) so that it can be used with a not-yet-existent LFS. Make newfs_lfs(8) use this library, so it can create LFSs whose Ifile is larger than one segment. * Make newfs_lfs(8) use strsuftoi64() for its arguments, a la newfs(8). * Make fsck_lfs(8) respect the "file system is clean" flag. * Don't let fsck_lfs(8) think it has dirty blocks when invoked with the -n flag.
|
| 1.35 | 11-Sep-2004 |
yamt | - calculate maxfilesize dynamically rather than having a static table. - no longer limit filesize to INT32_MAX. file lbns are 64-bit these days. anyway, on-disk format shouldn't be limited by the kernel internals.
|
| 1.34 | 09-Sep-2004 |
yamt | fix a sign expansion bug for >=8k blocksizes.
|
| 1.33 | 10-Nov-2003 |
wiz | branches: 1.33.4; Spell address with two d's. Inspired by similar changes in OpenBSD, originating from Jonathon Gray and forwarded by jmc@openbsd.
|
| 1.32 | 09-Oct-2003 |
yamt | - don't try to write alt super blocks beyond the end of the partition. - flush stdout when printing each super block addresses.
|
| 1.31 | 06-Sep-2003 |
itojun | use arc4random
|
| 1.30 | 12-Aug-2003 |
dsl | Stop superblock being written to sector 0 for small filesystems. Honour the '-s size' command option. Allow an LFS filesystem to be created in a file.
|
| 1.29 | 07-Aug-2003 |
agc | Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22308, verified by myself.
|
| 1.28 | 13-Jul-2003 |
itojun | use bounded string ops
|
| 1.27 | 02-Apr-2003 |
fvdl | Add support for UFS2. UFS2 is an enhanced FFS, adding support for 64 bit block pointers, extended attribute storage, and a few other things.
This commit does not yet include the code to manipulate the extended storage (for e.g. ACLs), this will be done later.
Originally written by Kirk McKusick and Network Associates Laboratories for FreeBSD.
|
| 1.26 | 23-Feb-2003 |
simonb | Use the PRId64 format to print a daddr_t.
|
| 1.25 | 23-Feb-2003 |
perseant | Make the "-O" (start filesystem offset) flag to newfs_lfs work correctly, and update fsck_lfs and dumplfs to deal with it. Note that while the argument to -O is given in disk sectors, it must be a multiple of the fragment size, and although it can be lower than the label or superblock, it can't intersect either.
|
| 1.24 | 24-Jan-2003 |
fvdl | Bump daddr_t to 64 bits. Replace it with int32_t in all places where it was used on-disk, so that on-disk formats remain the same. Remove ufs_daddr_t and ufs_lbn_t for the time being.
|
| 1.23 | 13-Jul-2001 |
thorpej | Fix printf format on LP64.
|
| 1.22 | 13-Jul-2001 |
perseant | Merge the short-lived perseant-lfsv2 branch into the trunk.
Kernels and tools understand both v1 and v2 filesystems; newfs_lfs generates v2 by default. Changes for the v2 layout include:
- Segments of non-PO2 size and arbitrary block offset, so these can be matched to convenient physical characteristics of the partition (e.g., stripe or track size and offset).
- Address by fragment instead of by disk sector, paving the way for non-512-byte-sector devices. In theory fragments can be as large as you like, though in reality they must be smaller than MAXBSIZE in size.
- Use serial number and filesystem identifier to ensure that roll-forward doesn't get old data and think it's new. Roll-forward is enabled for v2 filesystems, though not for v1 filesystems by default.
- The inode free list is now a tailq, paving the way for undelete (undelete is not yet implemented, but can be without further non-backwards-compatible changes to disk structures).
- Inode atime information is kept in the Ifile, instead of on the inode; that is, the inode is never written *just* because atime was changed. Because of this the inodes remain near the file data on the disk, rather than wandering all over as the disk is read repeatedly. This speeds up repeated reads by a small but noticeable amount.
Other changes of note include:
- The ifile written by newfs_lfs can now be of arbitrary length, it is no longer restricted to a single indirect block.
- Fixed an old bug where ctime was changed every time a vnode was created. I need to look more closely to make sure that the times are only updated during write(2) and friends, not after-the-fact during a segment write, and certainly not by the cleaner.
|
| 1.21 | 23-Nov-2000 |
perseant | branches: 1.21.2; Initialize inodes' generation number to 1, consistent with their version number.
|
| 1.20 | 11-Oct-2000 |
he | Format fixup. size_t can be long, so cast to u_long and print with %ld.
|
| 1.19 | 02-Oct-2000 |
perseant | Handle "-m 0" properly (PR #11112).
|
| 1.18 | 11-Sep-2000 |
perseant | Do not report write errors if the user specified the -N flag. Also, change the segment size report to include the total size of the disk, similar to newfs, e.g.
newfs_lfs -N -F -B 65536 /dev/rsd0b 272.7MB in 4363 segments of size 65536 super-block backups (for fsck -b #) at: 16, 55824, 111632, 167440, 223248, 279056, 334864, 390672, 446480, 502288
|
| 1.17 | 09-Sep-2000 |
perseant | Various bug-fixes to LFS, to wit:
Kernel:
* Add runtime quantity lfs_ravail, the number of disk-blocks reserved for writing. Writes to the filesystem first reserve a maximum amount of blocks before their write is allowed to proceed; after the blocks are allocated the reserved total is reduced by a corresponding amount.
If the lfs_reserve function cannot immediately reserve the requested number of blocks, the inode is unlocked, and the thread sleeps until the cleaner has made enough space available for the blocks to be reserved. In this way large files can be written to the filesystem (or, smaller files can be written to a nearly-full but thoroughly clean filesystem) and the cleaner can still function properly.
* Remove explicit switching on dlfs_minfreeseg from the kernel code; it is now merely a fs-creation parameter used to compute dlfs_avail and dlfs_bfree (and used by fsck_lfs(8) to check their accuracy). Its former role is better assumed by a properly computed dlfs_avail.
* Bounds-check inode numbers submitted through lfs_bmapv and lfs_markv. This prevents a panic, but, if the cleaner is feeding the filesystem the wrong data, you are still in a world of hurt.
* Cleanup: remove explicit references of DEV_BSIZE in favor of btodb()/dbtob().
lfs_cleanerd:
* Make -n mean "send N segments' blocks through a single call to lfs_markv". Previously it had meant "clean N segments though N calls to lfs_markv, before looking again to see if more need to be cleaned". The new behavior gives better packing of direct data on disk with as little metadata as possible, largely alleviating the problem that the cleaner can consume more disk through inefficient use of metadata than it frees by moving dirty data away from clean "holes" to produce entirely clean segments.
* Make -b mean "read as many segments as necessary to write N segments of dirty data back to disk", rather than its former meaning of "read as many segments as necessary to free N segments worth of space". The new meaning, combined with the new -n behavior described above, further aids in cleaning storage efficiency as entire segments can be written at once, using as few blocks as possible for segment summaries and inode blocks.
* Make the cleaner take note of segments which could not be cleaned due to error, and not attempt to clean them until they are entirely free of dirty blocks. This prevents the case in which a cleanerd running with -n 1 and without -b (formerly the default) would spin trying repeatedly to clean a corrupt segment, while the remaining space filled and deadlocked the filesystem.
* Update the lfs_cleanerd manual page to describe all the options, including the changes mentioned here (in particular, the -b and -n flags were previously undocumented).
fsck_lfs:
* Check, and optionally fix, lfs_avail (to an exact figure) and lfs_bfree (within a margin of error) in pass 5.
newfs_lfs:
* Reduce the default dlfs_minfreeseg to 1/20 of the total segments.
* Add a warning if the sgs disklabel field is 16 (the default for FFS' cpg, but not usually desirable for LFS' sgs: 5--8 is a better range).
* Change the calculation of lfs_avail and lfs_bfree, corresponding to the kernel changes mentioned above.
mount_lfs:
* Add -N and -b options to pass corresponding -n and -b options to lfs_cleanerd.
* Default to calling lfs_cleanerd with "-b -n 4".
[All of these changes were largely tested in the 1.5 branch, with the idea that they (along with previous un-pulled-up work) could be applied to the branch while it was still in ALPHA2; however my test system has experienced corruption on another filesystem (/dev/console has gone missing :^), and, while I believe this unrelated to the LFS changes, I cannot with good conscience request that the changes be pulled up.]
|
| 1.16 | 04-Jul-2000 |
perseant | Tweak how lfs_avail is initialized, corresponding to changes in the kernel.
Don't make more superblock segments than we have a record of in the superblock; and print these out as we go, like newfs.
Add am "-M" flag to specify the number of reserved segments, with a note in the man page not to use it.
|
| 1.15 | 03-Jul-2000 |
thorpej | Default the root directory and lost+found directory to mode 0755, as in FFS.
|
| 1.14 | 03-Jul-2000 |
perseant | User-level changes corrseponding to my latest kernel changes. newfs_lfs gives lfs_minfreeseg a value of 1/8 of the total segments on the disk, based on rough empirical data, but this should be refined in the future.
|
| 1.13 | 27-Jun-2000 |
perseant | User-level changes for filling the disk.
Set MINFREE to 80, since that's a more reasonable value according to the literature than FFS' 90. Remove a bunch of other unused FFS cruft from config.h.
Initialize lfs_bfree correctly vis-a-vis MIN_FREE_SEGS, so the filesystem doesn't over-represent the amount of free space it has. Initialize lfs_dmeta so the kernel can estimate starting from a reasonable value.
|
| 1.12 | 23-May-2000 |
perseant | branches: 1.12.4; Count the Ifile indirect block too (part of PR#9357)
|
| 1.11 | 18-May-2000 |
perseant | More corrections to newfs_lfs' handling of segment 0.
|
| 1.10 | 17-May-2000 |
perseant | Make newfs_lfs use fragments when creating the root and lost+found directories, rather than full blocks; corrects some minor misaccounting for segment zero.
|
| 1.9 | 19-Jan-2000 |
perseant | Fix frag -> fsize typo
|
| 1.8 | 18-Jan-2000 |
perseant | newfs_lfs now recognizes a zero p_sgs field to mean "use the default segment size" (for consistency with bsize/fsize, and since segment size == block size is never a valid combination).
Updated the man page to include explicit reasonable values for fsize, bsize, and sgs, at suggestion from Hubert Feyrer.
|
| 1.7 | 18-Jan-2000 |
perseant | disklabel now understands the p_sgs partition field (shift to compute segment size from block size).
newfs_lfs now reads the disklabel to find segment, block, and fragment sizes. Because reading this info from the wrong fs type could result in very poor fs layout (e.g. ffs has "16" where the segshift would go, resulting in 512-*megabyte* segments for 8K blocks), newfs_lfs refuses to create a filesystem on a partition not labeled "4.4LFS".
Man pages for newfs_lfs updated to reflect this change.
|
| 1.6 | 05-Nov-1999 |
perseant | branches: 1.6.2; Make newfs_lfs try increasingly smaller segment sizes down to 2*block size, if the partition is so small that not enough segments can be created to place the second superblock. Addresses PR#7623.
|
| 1.5 | 22-Jul-1999 |
perseant | branches: 1.5.2; Address PR bin/7623: if the filesystem is so small (or segment size so large) that not enough segments are available for the second superblock, or to have MIN_FREE_SEGS free for work room for the cleaner, newfs_lfs will now exit with an error.
|
| 1.4 | 24-Jun-1999 |
perseant | Use ufs_daddr_t instead of u_long, so non-32-bit architectures can clean seg 0
|
| 1.3 | 30-Mar-1999 |
perseant | branches: 1.3.2; Correct data checksum to take ifile indirect block into account, if it exists
|
| 1.2 | 19-Mar-1999 |
perseant | Fixes for newfs_lfs on partitions that would require writing an indirect block on the Ifile (>~4Gb with standard block/segment size).
|
| 1.1 | 18-Mar-1999 |
perseant | Change name of newlfs to newfs_lfs.
|
| 1.3.2.3 | 11-Oct-2000 |
he | Pull up revision 1.20 (requested by he): Format string cleanup.
|
| 1.3.2.2 | 05-Sep-1999 |
he | Pull up revision 1.5: Refuse to create a file system with too few segments, which would prevent the cleaner from working, fixing PR#7623. (perseant)
|
| 1.3.2.1 | 25-Jun-1999 |
perry | pullup 1.3->1.4 (perseant)
|
| 1.5.2.1 | 27-Dec-1999 |
wrstuden | Pull up to last week's -current.
|
| 1.6.2.2 | 05-Nov-1999 |
perseant | Make newfs_lfs try increasingly smaller segment sizes down to 2*block size, if the partition is so small that not enough segments can be created to place the second superblock. Addresses PR#7623.
|
| 1.6.2.1 | 05-Nov-1999 |
perseant | file lfs.c was added on branch comdex-fall-1999 on 1999-11-05 18:59:13 +0000
|
| 1.12.4.4 | 03-Feb-2001 |
he | Pull up revisions 1.19,1.21 (requested by perseant): o Allow the user to specify a 0% free space threshold at fs creation time with "newfs_lfs -m 0" (PR #11112). o Initialize inodes' gen to match version.
|
| 1.12.4.3 | 16-Oct-2000 |
tv | Pullup 1.20 [he]: Format fixup. size_t can be long, so cast to u_long and print with %ld.
|
| 1.12.4.2 | 14-Sep-2000 |
perseant | Pull up LFS userland changes to correspond with the previous commit's kernel changes (approved by thorpej):
[basesrc/libexec/lfs_cleanerd:] cleanerd.c, 1.20--1.22 (MIN_FREE_SEG -> lfs_minfreeseg ; read bfree/avail from CLEANERINFO ; changes to definition of -n and -b) lfs_cleanerd.8, 1.7 (update man page to current behavior) library.c, 1.16 (fix comment)
[basesrc/sbin/fsck_lfs:] pass5.c, 1.6 (calculate/fix lfs_avail and lfs_bfree)
[basesrc/sbin/newfs_lfs:] config.h, 1.2--1.5 (MINFREE=20, remove FFS cruft ; add DFL_MIN_FREE_SEGS=8 and MINFREE=10 ; set DFL_MIN_FREE_SEGS=10 ; set DFL_MIN_FREE_SEGS=20) extern.h, 1.2 (correct function declaration for make_lfs) newfs.c, 1.4 (add -M flag) lfs.c, 1.13--1.14, 1.16--1.18 (change lfs_bfree initialization ; MIN_FREE_SEG -> lfs_minfreeseg ; only 10 superblocks and print nicely ; correct init calculation of lfs_bfree/lfs_avail to allow fs to fill ; make -N dtrt)
[basesrc/sbin/mount_lfs:] mount_lfs.8, 1.7 (document -N, -b flags) mount_lfs.c, 1.10 (default cleanerd to -b -n 4; add -N, -b flags)
[basesrc/usr.sbin/dumplfs:] dumplfs.c, 1.15 (print only the SEGUSEs specified with -s)
|
| 1.12.4.1 | 03-Jul-2000 |
thorpej | Pull up rev. 1.15: Default the root directory and lost+found directory to mode 0755, as in FFS.
|
| 1.21.2.5 | 13-Jul-2001 |
perseant | Default to creating a v2 lfs, and print out the roll-forward id that was used. Update newfs_lfs.8 to reflect new options.
|
| 1.21.2.4 | 10-Jul-2001 |
perseant | Properly initialize and report the inode free list tail.
|
| 1.21.2.3 | 02-Jul-2001 |
perseant | Change disk addressing unit to be the fragment, instead of the disk sector. All quantities in the superblock, inodes, indirect blocks, etc. refer now to this abstract unit (called "fsb" as it is in FFS) instead of disk sectors; as a consequence segment summary blocks have to be multiples of a fragment in size. In v1 filesystems, compatibility code ensures that 1 fsb == 1 sector, regardless of fragment size.
Fragments can now range in size between 512 and 32k; in the event that LFS_LABELPAD (8k) is smaller than the disk address unit size, an extra proto-superblock is kept at 8k from the beginning of the disk, to be used *only* to locate the real superblocks. (Not all of the userland knows about this yet.)
Almost all of this was done not by me, but by joff.
|
| 1.21.2.2 | 29-Jun-2001 |
perseant | Get rid of __P(), protoizing where it had not already been done
|
| 1.21.2.1 | 27-Jun-2001 |
perseant | Import of what I've been calling "LFSv2", that is, LFS with some features added that require changes to the on-disk data structures. These include:
- 64-bit time in everything but inodes - User-specified segment offset, and segment size no longer restricted to PO2. - Serial number on segment summaries in addition to timestamp, and a new volume identifier, to make roll-forward feasible without fear of finding old data and thinking it was new.
Although I think this version works at least as well as what's on the trunk, we're not done yet; hence this commit is going in on a branch and not on the trunk. Enhancements that are not here yet include fragment addressing, like FFS does, instead of block addressing.
|
| 1.33.4.1 | 10-May-2005 |
riz | Pull up the following revisions (requested by perseant in ticket #1281):
1.8 sys/ufs/lfs/TODO 1.75 sys/ufs/lfs/lfs.h (via patch) 1.74 sys/ufs/lfs/lfs_alloc.c (via patch) 1.49, 1.51 sys/ufs/lfs/lfs_balloc.c (1.51 via patch) 1.78 sys/ufs/lfs/lfs_bio.c 1.62 sys/ufs/lfs/lfs_extern.h (via patch) 1.156 sys/ufs/lfs/lfs_segment.c (via patch) 1.48 sys/ufs/lfs/lfs_subr.c 1.101 sys/ufs/lfs/lfs_syscalls.c 1.163 sys/ufs/lfs/lfs_vfsops.c (via patch) 1.134 sys/ufs/lfs/lfs_vnops.c (via patch) 1.61 sys/ufs/ufs/ufs_readwrite.c (via patch)
1.20 libexec/lfs_cleanerd/clean.h (via patch) 1.52 libexec/lfs_cleanerd/cleanerd.c (via patch) 1.41 libexec/lfs_cleanerd/library.c (via patch)
1.4 regress/sys/fs/lfs/newfs_fsck/Makefile 1.2 regress/sys/fs/lfs/newfs_fsck/mkfs_mount 1.2 regress/sys/fs/lfs/newfs_fsck/smallfiles 1.3 sbin/fsck_lfs/bufcache.c 1.3 sbin/fsck_lfs/bufcache.h 1.3 sbin/fsck_lfs/lfs.h 1.8 sbin/fsck_lfs/lfs.c (via patch) 1.8 sbin/fsck_lfs/pass3.c (via patch) 1.18 sbin/fsck_lfs/pass0.c (via patch) 1.18 sbin/fsck_lfs/utilities.c (via patch) 1.7 sbin/fsck_lfs/segwrite.c 1.19 sbin/fsck_lfs/setup.c (via patch) 1.3 sbin/newfs_lfs/Makefile 0 sbin/newfs_lfs/lfs.c (yes, remove it) 1.1 sbin/newfs_lfs/make_lfs.c 1.15 sbin/newfs_lfs/newfs.c (via patch)
Various minor LFS improvements.
Kernel:
* Note when lfs_putpages(9) thinks it is not going to be writing any pages before calling genfs_putpages(9). This prevents a situation in which blocks can be queued for writing without a segment header. * Correct computation of NRESERVE(), though it is still a gross overestimate in most cases. Note that if NRESERVE() is too high, it may be impossible to create files on the filesystem. We catch this case on filesystem mount and refuse to mount r/w. * Allow filesystems to be mounted whose block size is == MAXBSIZE. * Somewhere along the line, ufs_bmaparray(9) started mangling UNWRITTEN entries in indirect blocks again, triggering a failed assertion "daddr <= LFS_MAX_DADDR". Explicitly convert to and from int32_t to correct this. Should fix PR #29045. * Add a high-water mark for the number of dirty pages any given LFS can hold before triggering a flush. This is settable by sysctl, but off (zero) by default. * Be more careful about the MAX_BYTES and MAX_BUFS computations so we shouldn't see "please increase to at least zero" messages. * Note that VBLK and VCHR vnodes can have nonzero values in di_db[0] even though their v_size == 0. Don't panic when we see this. Fixes PR #26680. * Change lfs_bfree to a signed quantity. The manner in which it is processed before being passed to the cleaner means that sometimes it may drop below zero, and the cleaner must be aware of this. * Never report bfree < 0 (or higher than lfs_dsize) through lfs_statfs(9). This prevents df(1) from ever telling us that our full filesystems have 16TB free. * Account space allocated through lfs_balloc(9) that does not have associated buffer headers, so that the pagedaemon doesn't run us out of segments. * Return ENOSPC from lfs_balloc(9) when bfree drops to zero. * Address a deadlock in lfs_bmapv/lfs_markv when the filesystem is being unmounted. Because vfs_busy() is a shared lock, and lfs_bmapv/lfs_markv mark the filesystem vfs_busy(), the cleaner can be holding the lock that umount() is blocking on, then try to vfs_busy() again in getnewvnode().
cleaner:
* Adapt lfs_cleanerd to use the fcntl call to get the Ifile filehandle, so it need not be in the namespace. * Make lfs_cleanerd be more careful when there are very few available segments. * Make lfs_cleanerd less verbose when the filesystem is unmounted.
newfs_lfs, fsck_lfs, and regression:
* Extend the lfs library from fsck_lfs(8) so that it can be used with a not-yet-existent LFS. Make newfs_lfs(8) use this library, so it can create LFSs whose Ifile is larger than one segment. Addresses PR #11110. * Make newfs_lfs(8) use strsuftoi64() for its arguments, a la newfs(8). * Make fsck_lfs(8) respect the "file system is clean" flag. * Don't let fsck_lfs(8) think it has dirty blocks when invoked with the -n flag. * Remove the Ifile from the filesystem namespace. The cleaner now uses a fcntl call on the root inode to find the Ifile filehandle. (As a side-effect, addresses PR #29144.)
|
| 1.59 | 15-Oct-2015 |
dholland | Enable the creation of lfs64 volumes.
To create an lfs64 volume, use -w 64. You can also force a 32-bit volume with -w 32, but this will fail on devices thta are too large.
lfs64 is the default for devices > 1TB. (1TB rather than 2TB because daddr_t is signed and negative block numbers can cause interesting complications.)
For now print a warning that the lfs64 format isn't finalized, because it isn't. For now any lfs64 use should be limited to test data, benchmarking, and so forth.
|
| 1.58 | 10-Oct-2015 |
dholland | Use a specific SEGSUM size instead of the size of the union.
|
| 1.57 | 21-Sep-2015 |
dholland | Fix some assorted 32-bit assumptions not yet otherwise handled.
Also apply patch to fix the overt problem in PR 50246: newfs was calculating ifpb wrong for volumes with non-default block sizes.
|
| 1.56 | 21-Sep-2015 |
dholland | Add 64-bit directory entry structures, and adjust accessors accordingly.
The LFS64 directory entry has a 64-bit inode number. This is stored as two 32-bit values to avoid inducing 64-bit alignment requirements.
The exposed type for manipulating directory entries is now LFS_DIRHEADER, following the same convention as e.g. IFILE and SEGUSE. (But with LFS_ on it, because.)
|
| 1.55 | 21-Sep-2015 |
dholland | Oops; LFS_DIRECTSIZ() is going to need the fs as an argument.
Also, it turns out that dirhash needs a compile-time-constant version of LFS_DIRECTSIZ(LFS_MAXNAMLEN+1), independent of 64-vs-32, so create LFS_MAXDIRENTRYSIZE for this. Sigh.
|
| 1.54 | 15-Sep-2015 |
dholland | Pass around struct lfs_dirheader instead of struct lfs_direct.
|
| 1.53 | 15-Sep-2015 |
dholland | Add an accessor function for directory names.
|
| 1.52 | 15-Sep-2015 |
dholland | Add a function lfs_copydirname() to copy directory names in place; use it in place of (variously) memcpy and strlcpy. (The latter isn't even correct; was probably changed blindly from strncpy at some point.)
The new function zeroes the padding in the directory entry instead of leaving trash behind.
|
| 1.51 | 15-Sep-2015 |
dholland | Move the header part of struct lfs_direct to its own structure. (lfs_dirheader)
Take the opportunity to improve the directory generation code in make_lfs.c. (Everything else was unaffected by virtue of using accessor functions.)
|
| 1.50 | 15-Sep-2015 |
dholland | Add and use accessor functions for more of the directory entry fields.
|
| 1.49 | 01-Sep-2015 |
dholland | Add new accessors for the d_type and d_namlen fields of struct lfs_direct. Napalm the old byteswap access logic for these.
|
| 1.48 | 01-Sep-2015 |
dholland | Use daddr_t, not ulfs_daddr_t, as the latter's 32 bits wide. Don't use either for on-disk items. Declare external data in header files. Part 3 of 3.
|
| 1.47 | 01-Sep-2015 |
dholland | Tidy the MAXSYMLINKLEN macros.
|
| 1.46 | 01-Sep-2015 |
dholland | The ifile's inode number is constant. (it is always 1)
Therefore, storing the value in the superblock and reading it out again is silly and offers the opportunity for it to become corrupted. So, don't do that (most of the code already didn't) and use the existing constant instead. Initialize new 32-bit superblocks with the value for the sake of old userland programs, but don't keep the value in the 64-bit superblock at all.
(approved by Margo Seltzer)
|
| 1.45 | 01-Sep-2015 |
dholland | Add byteswapping to the dinode accessors.
This prevents regressions in the ulfs code when switching to the new accessors. Note that while adding byteswapping to the other accessors is straightforward, I haven't done it yet; and that also is not enough to make LFS_EI work, because there are places lying around that bypass the accessors for one reason and another and all of them need to be updated. That is going to have to wait for a later day as LFS_EI is not on the critical path right now.
|
| 1.44 | 19-Aug-2015 |
dholland | Part two of dinodes; use the same union everywhere. (previously the ufs-derived code had things set up slightly different)
Remove a bunch of associated mess.
|
| 1.43 | 12-Aug-2015 |
dholland | Hack up dinode usage to be 64 vs. 32 as needed. Part 1.
(This part changes the native lfs code; the ufs-derived code already has 64 vs. 32 logic, but as aspects of it are unsafe, and don't entirely interoperate cleanly with the lfs 64/32 stuff, pass 2 will be rehashing that.)
|
| 1.42 | 12-Aug-2015 |
dholland | Add IFILE32 and IFILE64 structures for the on-disk ifile entries. Add and use accessors. There are also a bunch of places that cast and I hope I've found them all...
|
| 1.41 | 12-Aug-2015 |
dholland | Make 32-bit and 64-bit versions of CLEANERINFO.
XXX: while this is written to disk, it seems like much of it would XXX: be better set up as a commpage shared with the cleaner.
|
| 1.40 | 02-Aug-2015 |
dholland | Add a (draft) 64-bit superblock. Make things build again.
Add pieces of support for using both superblock types where convenient, and specifically to the superblock accessors, but don't actually enable it anywhere.
First substantive step on PR 50000.
|
| 1.39 | 02-Aug-2015 |
dholland | Use accessor functions for the version field of the lfs superblock. I thought at first maybe the cases that test the version should be rolled into the accessors, but on the whole I think the conclusion on that is no.
|
| 1.38 | 02-Aug-2015 |
dholland | Typo in comment.
|
| 1.37 | 02-Aug-2015 |
dholland | Use c99 initializers.
|
| 1.36 | 02-Aug-2015 |
dholland | Second batch of 64 -> 32 truncations in lfs, along with more minor tidyups and corrections in passing.
|
| 1.35 | 02-Aug-2015 |
dholland | Fix assorted 64 -> 32 truncations in lfs. Also, some minor tidyups and corrections in passing.
|
| 1.34 | 28-Jul-2015 |
dholland | Add a new lfs header file: lfs_accessors.h.
This contains all the accessor functions and macros out of lfs.h. Add an include of lfs_accessors.h after all uses of lfs.h... except for code that wants to define its own struct lfs-alike that the accessors are supposed to play along with. For these, set STRUCT_LFS and include lfs_accessors.h after the necessary structure has been defined, so that lfs_accessors.h can emit functions in terms of it.
|
| 1.33 | 24-Jul-2015 |
dholland | More lfs superblock accessors. (This changes the rest of the code over; all the accessors were already added.)
The difference between this commit and the previous one is arbitrary, but the previous one passed the regression tests on its own so I'm keeping it separate to help with any bisections that might be needed in the future.
|
| 1.32 | 24-Jul-2015 |
dholland | Switch to accessor functions for elements of the LFS on-disk superblock. This will allow switching between 32/64 bit forms on the fly; it will also allow handling LFS_EI reasonably tidily. (That currently doesn't work on the superblock.)
It also gets rid of cpp abuse in the form of fake structure member macros.
Also, instead of doing sleep/wakeup on &lfs_avail and &lfs_nextseg inside the on-disk superblock, add extra elements to the in-memory struct lfs for this. (XXX: these should be changed to condvars, but not right now)
XXX: this migrates a structure needed by the lfs code in libsa (struct salfs) into lfs.h, where it doesn't belong, but for the time being this is necessary in order to allow the accessors (and the various lfs macros and other goop that relies on them) to compile.
|
| 1.31 | 31-May-2015 |
hannken | Use VFS_PROTOS() for lfs. Rename conflicting struct lfs field "lfs_start" to "lfs_s0addr".
No functional change.
|
| 1.30 | 29-Mar-2015 |
chopps | - Fix fallout for recent bread() change (removing cred arg).
|
| 1.29 | 19-Oct-2013 |
christos | fix unused variable warnings.
|
| 1.28 | 18-Jun-2013 |
christos | Prefix most of the cpp macros with lfs_ and LFS_ to avoid conflicts with ffs. This was done so that boot blocks that want to compile both FFS and LFS in the same file work.
|
| 1.27 | 08-Jun-2013 |
dholland | Tidy up the LFS userland build hacks. Don't use -I${NETBSDSRCDIR}/sys; don't include files other than the exported LFS headers, which are lfs.h, lfs_inode.h, and (for now) lfs_extern.h.
|
| 1.26 | 08-Jun-2013 |
dholland | DIRBLKSIZ -> LFS_DIRBLKSIZ DIRECTSIZ -> LFS_DIRECTSIZ DIRSIZ -> LFS_DIRSIZ OLDDIRFMT -> LFS_OLDDIRFMT NEWDIRFMT -> LFS_NEWDIRFMT IFTODT -> LFS_IFTODT DTTOIF -> LFS_DTTOIF
|
| 1.25 | 08-Jun-2013 |
dholland | struct direct -> struct lfs_direct struct dirtemplate -> struct lfs_dirtemplate struct odirtemplate -> struct lfs_odirtemplate DT_* -> LFS_DT_*
|
| 1.24 | 08-Jun-2013 |
dholland | Stick LFS_ in front of IFMT, IFIFO, IFREG, etc. so as not to conflict with the UFS copies of these symbols. (Which themselves ought to have UFS_ stuck on.)
|
| 1.23 | 08-Jun-2013 |
dholland | Move the dinode (on-disk inode) structures to lfs.h, since they are and will be obviously required by userland tools that need to read the on-disk structures.
Also, DINODE{1,2}_SIZE -> LFS_DINODE{1,2}_SIZE.
|
| 1.22 | 06-Jun-2013 |
dholland | Cleanups and hacks to make lfs userland stuff build: - lfs_cksum.c doesn't actually need ulfs_inode.h any more. - neither does lfs_itimes.c. - add hacks to fsck_lfs to make it compile. - add hacks to newfs_lfs to make it compile. - fix warning in ulfs_quota.c when quotas are fully disabled (as I guess is happening with the rumpity version)
XXX: This commit adds -I${NETBSDSRCDIR}/sys to the Makefiles for XXX: fsck_lfs, newfs_lfs, and lfs_cleanerd. This needs to be cleaned XXX: up ASAP; but I consider this less problematic in the short term XXX: than spewing ulfs_*.h into /usr/include.
|
| 1.21 | 06-Jun-2013 |
dholland | ufs -> ulfs for newfs_lfs
|
| 1.20 | 22-Jan-2013 |
dholland | Stuff UFS_ in front of a few of ufs's symbols to reduce namespace pollution. Specifically: ROOTINO -> UFS_ROOTINO WINO -> UFS_WINO NXADDR -> UFS_NXADDR NDADDR -> UFS_NDADDR NIADDR -> UFS_NIADDR MAXSYMLINKLEN -> UFS_MAXSYMLINKLEN MAXSYMLINKLEN_UFS[12] -> UFS[12]_MAXSYMLINKLEN (for consistency)
Sort out ext2fs's misuse of NDADDR and NIADDR; fortunately, these have the same values in ext2fs and ffs.
No functional change intended.
|
| 1.19 | 16-Feb-2012 |
perseant | branches: 1.19.2; Pass t_renamerace and t_rmdirrace tests.
Adapt dholland@'s fix to ufs_rename to fix PR kern/43582. Address several other MP locking issues discovered during the course of investigating the same problem.
Removed extraneous vn_lock() calls on the Ifile, since the Ifile writes are controlled by the segment lock.
Fix PR kern/45982 by deemphasizing the estimate of how much metadata will fill the empty space on disk when the disk is nearly empty (t_renamerace crates a lot of inode blocks on a tiny empty disk).
|
| 1.18 | 02-Feb-2012 |
perseant | branches: 1.18.2; When creating a very small filesystem, use well-known small segment, block and fragment sizes by default instead of the ordinary 1M/8k/1k default for larger filesystems.
|
| 1.17 | 17-Jan-2012 |
perseant | Use an even smaller segment size when creating a very small filesystem. This allows the lfs_renamerace_dirs case of the t_renamerace test to fail correctly, rather than with a bogus "file system full" error as it has since rev 1.135 of sys/ufs/lfs/lfs.h.
|
| 1.16 | 16-Feb-2010 |
mlelstv | branches: 1.16.6; Three changes in a single commit.
- drop the notion of frags (LFS fragments) vs fsb (FFS fragments) The code uses a complicated unity function that just makes the code difficult to understand.
- support larger sector sizes. Fix disk address computations to use DEV_BSIZE in the kernel as required by device drivers and to use sector sizes in userland.
- Fix several locking bugs in lfs_bio.c and lfs_subr.c.
|
| 1.15 | 22-Feb-2009 |
dholland | Restore newfs_lfs after softdep removal (hi ad)
|
| 1.14 | 22-Feb-2009 |
ad | PR kern/26878 FFSv2 + softdep = livelock (no free ram) PR kern/16942 panic with softdep and quotas PR kern/19565 panic: softdep_write_inodeblock: indirect pointer #1 mismatch PR kern/26274 softdep panic: allocdirect_merge: ... PR kern/26374 Long delay before non-root users can write to softdep partitions PR kern/28621 1.6.x "vp != NULL" panic in ffs_softdep.c:4653 while unmounting a softdep (+quota) filesystem PR kern/29513 FFS+Softdep panic with unfsck-able file-corruption PR kern/31544 The ffs softdep code appears to fail to write dirty bits to disk PR kern/31981 stopping scsi disk can cause panic (softdep) PR kern/32116 kernel panic in softdep (assertion failure) PR kern/32532 softdep_trackbufs deadlock PR kern/37191 softdep: locking against myself PR kern/40474 Kernel panic after remounting raid root with softdep
Retire softdep, pass 2. As discussed and later formally announced on the mailing lists.
|
| 1.13 | 16-May-2008 |
hannken | branches: 1.13.4; Make sure all cached buffers with valid, not yet written data have been run through copy-on-write. Call fscow_run() with valid data where possible.
The LP_UFSCOW hack is no longer needed to protect ffs_copyonwrite() against endless recursion.
- Add a flag B_MODIFY to bread(), breada() and breadn(). If set the caller intends to modify the buffer returned.
- Always run copy-on-write on buffers returned from ffs_balloc().
- Add new function ffs_getblk() that gets a buffer, assigns a new blkno, may clear the buffer and runs copy-on-write. Process possible errors from getblk() or fscow_run(). Part of PR kern/38664.
Welcome to 4.99.63
Reviewed by: YAMAMOTO Takashi <yamt@netbsd.org>
|
| 1.12 | 28-Apr-2008 |
martin | branches: 1.12.2; Remove clause 3 and 4 from TNF licenses
|
| 1.11 | 08-Oct-2007 |
ad | branches: 1.11.8; 1.11.10; brelse() now takes two args.
|
| 1.10 | 16-Oct-2006 |
christos | branches: 1.10.8; c99 initializer
|
| 1.9 | 05-Sep-2006 |
riz | Deal with wedges and the new disk geometry structures, instead of using struct disklabel. From Christos Zoulas.
|
| 1.8 | 11-May-2006 |
mrg | - log2() -> lfs_log2(). - fix a couple of entries in struct lfs lfs_default: - in a comment, it's called dlfs_freehd now - dlfs_inodefmt comes after dlfs_tstamp. fortunately for this one, LFS_44INODEFMT is also 0 so the right thing was happening.
|
| 1.7 | 04-May-2006 |
perseant | newfs_lfs(8) compoment of the recent superblock parameter addition. Change the wording of the explanation of the -M option, detail a new -R option that controls initial setting of the new parameter.
|
| 1.6 | 17-Mar-2006 |
rumble | Check for allocation failures in malloc, calloc, realloc, asprintf, and vasprintf and try to handle them.
|
| 1.5 | 13-Sep-2005 |
christos | make this compile again.
|
| 1.4 | 02-Jun-2005 |
lukem | appease gcc -Wuninitialized
|
| 1.3 | 12-Apr-2005 |
perseant | branches: 1.3.2; Use the buffer cache improvements from fsck_lfs. Make it build again.
|
| 1.2 | 25-Mar-2005 |
perseant | "#define lfs_devvp lfs_unlockvp" for readability, since that's what we use it for in fsck_lfs/newfs_lfs.
|
| 1.1 | 26-Feb-2005 |
perseant | branches: 1.1.2; Various minor LFS improvements:
* Extend the lfs library from fsck_lfs(8) so that it can be used with a not-yet-existent LFS. Make newfs_lfs(8) use this library, so it can create LFSs whose Ifile is larger than one segment. * Make newfs_lfs(8) use strsuftoi64() for its arguments, a la newfs(8). * Make fsck_lfs(8) respect the "file system is clean" flag. * Don't let fsck_lfs(8) think it has dirty blocks when invoked with the -n flag.
|
| 1.1.2.2 | 20-May-2006 |
riz | Pull up following revision(s) (requested by perseant in ticket #1327): sbin/newfs_lfs/extern.h: revision 1.9 sbin/newfs_lfs/make_lfs.c: revision 1.7 sbin/newfs_lfs/newfs_lfs.8: revision 1.21 sbin/newfs_lfs/newfs.c: revision 1.20 newfs_lfs(8) compoment of the recent superblock parameter addition. Change the wording of the explanation of the -M option, detail a new -R option that controls initial setting of the new parameter.
|
| 1.1.2.1 | 07-May-2005 |
tron | Apply patch (requested by perseant in ticket #242): * fsck_lfs buffer cache fixes, including PR #29151 * Change fsck_lfs phase 0 message to reflect reality * fsck_lfs: check phase 5 (cleanerinfo accounting) even on roll-forward * Keep better track of the free list during roll-forward, avoiding a core dump * Improve hash table use for fsck_lfs buffer and vnode cache * Document fsck_lfs flag -f, and implement -q * Add resize_lfs, including kernel support * Add LFS to mountd's list of exportable filesystem types * Make the LFS lkm work again [christos@] * Add MP locking to the LFS kernel subsystem * Fix pager_map deadlock in lfs_putpages() * Avoid incomplete file extension that looks like "partial truncation" to fsck * Use lfs_malloc for cleaner malloc, since the cleaner often runs in low-memory conditions. * Use splay trees, not hash table, to track page allocation for write. * Fix mkdir panic on full fs * Fix page accounting leak by counting differently. * Use rightly named structure for lfs_getattr [skrll@] * Cosmetic changes for readability.
|
| 1.3.2.2 | 10-May-2005 |
riz | Pull up the following revisions (requested by perseant in ticket #1281):
1.8 sys/ufs/lfs/TODO 1.75 sys/ufs/lfs/lfs.h (via patch) 1.74 sys/ufs/lfs/lfs_alloc.c (via patch) 1.49, 1.51 sys/ufs/lfs/lfs_balloc.c (1.51 via patch) 1.78 sys/ufs/lfs/lfs_bio.c 1.62 sys/ufs/lfs/lfs_extern.h (via patch) 1.156 sys/ufs/lfs/lfs_segment.c (via patch) 1.48 sys/ufs/lfs/lfs_subr.c 1.101 sys/ufs/lfs/lfs_syscalls.c 1.163 sys/ufs/lfs/lfs_vfsops.c (via patch) 1.134 sys/ufs/lfs/lfs_vnops.c (via patch) 1.61 sys/ufs/ufs/ufs_readwrite.c (via patch)
1.20 libexec/lfs_cleanerd/clean.h (via patch) 1.52 libexec/lfs_cleanerd/cleanerd.c (via patch) 1.41 libexec/lfs_cleanerd/library.c (via patch)
1.4 regress/sys/fs/lfs/newfs_fsck/Makefile 1.2 regress/sys/fs/lfs/newfs_fsck/mkfs_mount 1.2 regress/sys/fs/lfs/newfs_fsck/smallfiles 1.3 sbin/fsck_lfs/bufcache.c 1.3 sbin/fsck_lfs/bufcache.h 1.3 sbin/fsck_lfs/lfs.h 1.8 sbin/fsck_lfs/lfs.c (via patch) 1.8 sbin/fsck_lfs/pass3.c (via patch) 1.18 sbin/fsck_lfs/pass0.c (via patch) 1.18 sbin/fsck_lfs/utilities.c (via patch) 1.7 sbin/fsck_lfs/segwrite.c 1.19 sbin/fsck_lfs/setup.c (via patch) 1.3 sbin/newfs_lfs/Makefile 0 sbin/newfs_lfs/lfs.c (yes, remove it) 1.1 sbin/newfs_lfs/make_lfs.c 1.15 sbin/newfs_lfs/newfs.c (via patch)
Various minor LFS improvements.
Kernel:
* Note when lfs_putpages(9) thinks it is not going to be writing any pages before calling genfs_putpages(9). This prevents a situation in which blocks can be queued for writing without a segment header. * Correct computation of NRESERVE(), though it is still a gross overestimate in most cases. Note that if NRESERVE() is too high, it may be impossible to create files on the filesystem. We catch this case on filesystem mount and refuse to mount r/w. * Allow filesystems to be mounted whose block size is == MAXBSIZE. * Somewhere along the line, ufs_bmaparray(9) started mangling UNWRITTEN entries in indirect blocks again, triggering a failed assertion "daddr <= LFS_MAX_DADDR". Explicitly convert to and from int32_t to correct this. Should fix PR #29045. * Add a high-water mark for the number of dirty pages any given LFS can hold before triggering a flush. This is settable by sysctl, but off (zero) by default. * Be more careful about the MAX_BYTES and MAX_BUFS computations so we shouldn't see "please increase to at least zero" messages. * Note that VBLK and VCHR vnodes can have nonzero values in di_db[0] even though their v_size == 0. Don't panic when we see this. Fixes PR #26680. * Change lfs_bfree to a signed quantity. The manner in which it is processed before being passed to the cleaner means that sometimes it may drop below zero, and the cleaner must be aware of this. * Never report bfree < 0 (or higher than lfs_dsize) through lfs_statfs(9). This prevents df(1) from ever telling us that our full filesystems have 16TB free. * Account space allocated through lfs_balloc(9) that does not have associated buffer headers, so that the pagedaemon doesn't run us out of segments. * Return ENOSPC from lfs_balloc(9) when bfree drops to zero. * Address a deadlock in lfs_bmapv/lfs_markv when the filesystem is being unmounted. Because vfs_busy() is a shared lock, and lfs_bmapv/lfs_markv mark the filesystem vfs_busy(), the cleaner can be holding the lock that umount() is blocking on, then try to vfs_busy() again in getnewvnode().
cleaner:
* Adapt lfs_cleanerd to use the fcntl call to get the Ifile filehandle, so it need not be in the namespace. * Make lfs_cleanerd be more careful when there are very few available segments. * Make lfs_cleanerd less verbose when the filesystem is unmounted.
newfs_lfs, fsck_lfs, and regression:
* Extend the lfs library from fsck_lfs(8) so that it can be used with a not-yet-existent LFS. Make newfs_lfs(8) use this library, so it can create LFSs whose Ifile is larger than one segment. Addresses PR #11110. * Make newfs_lfs(8) use strsuftoi64() for its arguments, a la newfs(8). * Make fsck_lfs(8) respect the "file system is clean" flag. * Don't let fsck_lfs(8) think it has dirty blocks when invoked with the -n flag. * Remove the Ifile from the filesystem namespace. The cleaner now uses a fcntl call on the root inode to find the Ifile filehandle. (As a side-effect, addresses PR #29144.)
|
| 1.3.2.1 | 12-Apr-2005 |
riz | file make_lfs.c was added on branch netbsd-2 on 2005-05-10 05:08:57 +0000
|
| 1.10.8.1 | 06-Nov-2007 |
matt | sync with HEAD
|
| 1.11.10.1 | 18-May-2008 |
yamt | sync with head.
|
| 1.11.8.1 | 02-Jun-2008 |
mjf | Sync with HEAD.
|
| 1.12.2.1 | 23-Jun-2008 |
wrstuden | Sync w/ -current. 34 merge conflicts to follow.
|
| 1.13.4.1 | 13-May-2009 |
jym | Sync with HEAD.
Third (and last) commit. See http://mail-index.netbsd.org/source-changes/2009/05/13/msg221222.html
|
| 1.16.6.3 | 22-May-2014 |
yamt | sync with head.
for a reference, the tree before this commit was tagged as yamt-pagecache-tag8.
this commit was splitted into small chunks to avoid a limitation of cvs. ("Protocol error: too many arguments")
|
| 1.16.6.2 | 23-Jan-2013 |
yamt | sync with head
|
| 1.16.6.1 | 17-Apr-2012 |
yamt | sync with head
|
| 1.18.2.1 | 17-Mar-2012 |
bouyer | Pull up following revision(s) (requested by perseant in ticket #116): sys/ufs/lfs/lfs_alloc.c: revision 1.112 tests/fs/vfs/t_rmdirrace.c: revision 1.9 tests/fs/vfs/t_renamerace.c: revision 1.25 sys/ufs/lfs/lfs_vnops.c: revision 1.240 sys/ufs/lfs/lfs_segment.c: revision 1.224 sys/ufs/lfs/lfs_bio.c: revision 1.122 sys/ufs/lfs/lfs_vfsops.c: revision 1.294 sbin/newfs_lfs/make_lfs.c: revision 1.19 sys/ufs/lfs/lfs.h: revision 1.136 Pass t_renamerace and t_rmdirrace tests. Adapt dholland@'s fix to ufs_rename to fix PR kern/43582. Address several other MP locking issues discovered during the course of investigating the same problem. Removed extraneous vn_lock() calls on the Ifile, since the Ifile writes are controlled by the segment lock. Fix PR kern/45982 by deemphasizing the estimate of how much metadata will fill the empty space on disk when the disk is nearly empty (t_renamerace crates a lot of inode blocks on a tiny empty disk).
|
| 1.19.2.3 | 20-Aug-2014 |
tls | Rebase to HEAD as of a few days ago.
|
| 1.19.2.2 | 23-Jun-2013 |
tls | resync from head
|
| 1.19.2.1 | 25-Feb-2013 |
tls | resync with head
|
| 1.7 | 17-Jan-2007 |
hubertf | Remove more duplicate #includes, from Slava Semushin <slava.semushin@gmail.com>
|
| 1.6 | 05-Sep-2006 |
riz | Deal with wedges and the new disk geometry structures, instead of using struct disklabel. From Christos Zoulas.
|
| 1.5 | 11-May-2006 |
mrg | - log2() -> lfs_log2(). - fix a couple of entries in struct lfs lfs_default: - in a comment, it's called dlfs_freehd now - dlfs_inodefmt comes after dlfs_tstamp. fortunately for this one, LFS_44INODEFMT is also 0 so the right thing was happening.
|
| 1.4 | 07-Aug-2003 |
agc | Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22308, verified by myself.
|
| 1.3 | 25-May-2002 |
wiz | __STDC__ is always defined on NetBSD.
|
| 1.2 | 13-Jul-2001 |
perseant | Merge the short-lived perseant-lfsv2 branch into the trunk.
Kernels and tools understand both v1 and v2 filesystems; newfs_lfs generates v2 by default. Changes for the v2 layout include:
- Segments of non-PO2 size and arbitrary block offset, so these can be matched to convenient physical characteristics of the partition (e.g., stripe or track size and offset).
- Address by fragment instead of by disk sector, paving the way for non-512-byte-sector devices. In theory fragments can be as large as you like, though in reality they must be smaller than MAXBSIZE in size.
- Use serial number and filesystem identifier to ensure that roll-forward doesn't get old data and think it's new. Roll-forward is enabled for v2 filesystems, though not for v1 filesystems by default.
- The inode free list is now a tailq, paving the way for undelete (undelete is not yet implemented, but can be without further non-backwards-compatible changes to disk structures).
- Inode atime information is kept in the Ifile, instead of on the inode; that is, the inode is never written *just* because atime was changed. Because of this the inodes remain near the file data on the disk, rather than wandering all over as the disk is read repeatedly. This speeds up repeated reads by a small but noticeable amount.
Other changes of note include:
- The ifile written by newfs_lfs can now be of arbitrary length, it is no longer restricted to a single indirect block.
- Fixed an old bug where ctime was changed every time a vnode was created. I need to look more closely to make sure that the times are only updated during write(2) and friends, not after-the-fact during a segment write, and certainly not by the cleaner.
|
| 1.1 | 18-Mar-1999 |
perseant | branches: 1.1.12; Change name of newlfs to newfs_lfs.
|
| 1.1.12.1 | 29-Jun-2001 |
perseant | Get rid of __P(), protoizing where it had not already been done
|
| 1.30 | 15-Oct-2015 |
dholland | Enable the creation of lfs64 volumes.
To create an lfs64 volume, use -w 64. You can also force a 32-bit volume with -w 32, but this will fail on devices thta are too large.
lfs64 is the default for devices > 1TB. (1TB rather than 2TB because daddr_t is signed and negative block numbers can cause interesting complications.)
For now print a warning that the lfs64 format isn't finalized, because it isn't. For now any lfs64 use should be limited to test data, benchmarking, and so forth.
|
| 1.29 | 18-Jun-2013 |
christos | Prefix most of the cpp macros with lfs_ and LFS_ to avoid conflicts with ffs. This was done so that boot blocks that want to compile both FFS and LFS in the same file work.
|
| 1.28 | 08-Jun-2013 |
dholland | Tidy up the LFS userland build hacks. Don't use -I${NETBSDSRCDIR}/sys; don't include files other than the exported LFS headers, which are lfs.h, lfs_inode.h, and (for now) lfs_extern.h.
|
| 1.27 | 06-Jun-2013 |
dholland | ufs -> ulfs for newfs_lfs
|
| 1.26 | 02-Feb-2012 |
perseant | branches: 1.26.6; If invoked with -D and creating an image file, ensure that the image file is filled to the given size. This prevents false failures with "lfs: ifile read: 22" in ATF tests.
|
| 1.25 | 16-Feb-2010 |
mlelstv | branches: 1.25.6; Three changes in a single commit.
- drop the notion of frags (LFS fragments) vs fsb (FFS fragments) The code uses a complicated unity function that just makes the code difficult to understand.
- support larger sector sizes. Fix disk address computations to use DEV_BSIZE in the kernel as required by device drivers and to use sector sizes in userland.
- Fix several locking bugs in lfs_bio.c and lfs_subr.c.
|
| 1.24 | 20-Jul-2008 |
lukem | Remove the \n and tabs from the __COPYRIGHT() strings. (Tweak some to use a consistent format.)
|
| 1.23 | 05-Sep-2006 |
riz | branches: 1.23.18; 1.23.22; Deal with wedges and the new disk geometry structures, instead of using struct disklabel. From Christos Zoulas.
|
| 1.22 | 06-Aug-2006 |
perseant | Ensure sector size is zero in the debug case, to avoid a division by zero error pointed out by Zafer Aydogan.
|
| 1.21 | 06-Aug-2006 |
perseant | Don't try to even fake building a filesystem on a file descriptor that is neither a file nor a character special device.
|
| 1.20 | 04-May-2006 |
perseant | newfs_lfs(8) compoment of the recent superblock parameter addition. Change the wording of the explanation of the -M option, detail a new -R option that controls initial setting of the new parameter.
|
| 1.19 | 23-Apr-2006 |
jld | When testing seek speed (for the -A option), use sector-aligned offsets so the reads don't always fail, and also be more careful not to read off the end of the disk. If a read does fail, error out instead of silently leaving the loop early (and possibly dividing by zero seconds), because it means our idea of the disk size is wrong, or worse.
This fixes PR bin/33199.
|
| 1.18 | 22-Aug-2005 |
yamt | even with -F, don't overwrite p_size unless filesystem size is specified by -s.
|
| 1.17 | 27-Jun-2005 |
christos | add const.
|
| 1.16 | 12-Apr-2005 |
perseant | Use the buffer cache improvements from fsck_lfs. Make it build again.
|
| 1.15 | 26-Feb-2005 |
perseant | branches: 1.15.2; Various minor LFS improvements:
* Extend the lfs library from fsck_lfs(8) so that it can be used with a not-yet-existent LFS. Make newfs_lfs(8) use this library, so it can create LFSs whose Ifile is larger than one segment. * Make newfs_lfs(8) use strsuftoi64() for its arguments, a la newfs(8). * Make fsck_lfs(8) respect the "file system is clean" flag. * Don't let fsck_lfs(8) think it has dirty blocks when invoked with the -n flag.
|
| 1.14 | 29-Oct-2004 |
dsl | Add (unsigned char) cast to ctype function
|
| 1.13 | 12-Aug-2003 |
dsl | branches: 1.13.4; Stop superblock being written to sector 0 for small filesystems. Honour the '-s size' command option. Allow an LFS filesystem to be created in a file.
|
| 1.12 | 07-Aug-2003 |
agc | Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22308, verified by myself.
|
| 1.11 | 13-Jul-2003 |
itojun | use bounded string ops
|
| 1.10 | 12-Dec-2002 |
scw | Use getlabeloffset() instead of LABELOFFSET.
|
| 1.9 | 29-Aug-2002 |
perseant | Don't use adaptive measuring techniques to discover a good segment size, if the device is not a character device (they will give bogus results if they interact with the buffer cache).
|
| 1.8 | 01-Nov-2001 |
lukem | fix -Wshadow warning by moving "int version" from global to main() scope
|
| 1.7 | 13-Jul-2001 |
perseant | Merge the short-lived perseant-lfsv2 branch into the trunk.
Kernels and tools understand both v1 and v2 filesystems; newfs_lfs generates v2 by default. Changes for the v2 layout include:
- Segments of non-PO2 size and arbitrary block offset, so these can be matched to convenient physical characteristics of the partition (e.g., stripe or track size and offset).
- Address by fragment instead of by disk sector, paving the way for non-512-byte-sector devices. In theory fragments can be as large as you like, though in reality they must be smaller than MAXBSIZE in size.
- Use serial number and filesystem identifier to ensure that roll-forward doesn't get old data and think it's new. Roll-forward is enabled for v2 filesystems, though not for v1 filesystems by default.
- The inode free list is now a tailq, paving the way for undelete (undelete is not yet implemented, but can be without further non-backwards-compatible changes to disk structures).
- Inode atime information is kept in the Ifile, instead of on the inode; that is, the inode is never written *just* because atime was changed. Because of this the inodes remain near the file data on the disk, rather than wandering all over as the disk is read repeatedly. This speeds up repeated reads by a small but noticeable amount.
Other changes of note include:
- The ifile written by newfs_lfs can now be of arbitrary length, it is no longer restricted to a single indirect block.
- Fixed an old bug where ctime was changed every time a vnode was created. I need to look more closely to make sure that the times are only updated during write(2) and friends, not after-the-fact during a segment write, and certainly not by the cleaner.
|
| 1.6 | 05-Dec-2000 |
perseant | branches: 1.6.2; Add "-A" option to autoconfigure the segment size based on measured bandwidth and seek time of the disk, using the "4 * bandwidth * seek time" formula from Neefe-Matthews' 1997 paper. An RZ25 disk with this option gets 200K segments. Reference the paper in the manual page.
|
| 1.5 | 11-Oct-2000 |
he | The type of sizeof() can be u_long, so cast to that and print with %ld.
|
| 1.4 | 04-Jul-2000 |
perseant | Tweak how lfs_avail is initialized, corresponding to changes in the kernel.
Don't make more superblock segments than we have a record of in the superblock; and print these out as we go, like newfs.
Add am "-M" flag to specify the number of reserved segments, with a note in the man page not to use it.
|
| 1.3 | 12-Feb-2000 |
perseant | branches: 1.3.4; Add -F flag to override newfs_lfs' preference for 4.4LFS-labelled partitions.
|
| 1.2 | 15-Jul-1999 |
perseant | Address PR 7412: fix newfs_lfs.8 to list all real options for newfs_lfs; also fix newfs_lfs to get rid of all sorts of useless options that applied only to newfs_ffs. Corrected reference to the FFS paper to the reference to the BSD-LFS paper.
|
| 1.1 | 18-Mar-1999 |
perseant | branches: 1.1.2; Change name of newlfs to newfs_lfs.
|
| 1.1.2.1 | 11-Oct-2000 |
he | Pull up revision 1.5 (requested by he): Format string cleanup.
|
| 1.3.4.2 | 16-Oct-2000 |
tv | Pullup 1.5 [he]: The type of sizeof() can be u_long, so cast to that and print with %ld.
|
| 1.3.4.1 | 14-Sep-2000 |
perseant | Pull up LFS userland changes to correspond with the previous commit's kernel changes (approved by thorpej):
[basesrc/libexec/lfs_cleanerd:] cleanerd.c, 1.20--1.22 (MIN_FREE_SEG -> lfs_minfreeseg ; read bfree/avail from CLEANERINFO ; changes to definition of -n and -b) lfs_cleanerd.8, 1.7 (update man page to current behavior) library.c, 1.16 (fix comment)
[basesrc/sbin/fsck_lfs:] pass5.c, 1.6 (calculate/fix lfs_avail and lfs_bfree)
[basesrc/sbin/newfs_lfs:] config.h, 1.2--1.5 (MINFREE=20, remove FFS cruft ; add DFL_MIN_FREE_SEGS=8 and MINFREE=10 ; set DFL_MIN_FREE_SEGS=10 ; set DFL_MIN_FREE_SEGS=20) extern.h, 1.2 (correct function declaration for make_lfs) newfs.c, 1.4 (add -M flag) lfs.c, 1.13--1.14, 1.16--1.18 (change lfs_bfree initialization ; MIN_FREE_SEG -> lfs_minfreeseg ; only 10 superblocks and print nicely ; correct init calculation of lfs_bfree/lfs_avail to allow fs to fill ; make -N dtrt)
[basesrc/sbin/mount_lfs:] mount_lfs.8, 1.7 (document -N, -b flags) mount_lfs.c, 1.10 (default cleanerd to -b -n 4; add -N, -b flags)
[basesrc/usr.sbin/dumplfs:] dumplfs.c, 1.15 (print only the SEGUSEs specified with -s)
|
| 1.6.2.3 | 13-Jul-2001 |
perseant | Default to creating a v2 lfs, and print out the roll-forward id that was used. Update newfs_lfs.8 to reflect new options.
|
| 1.6.2.2 | 29-Jun-2001 |
perseant | Get rid of __P(), protoizing where it had not already been done
|
| 1.6.2.1 | 27-Jun-2001 |
perseant | Import of what I've been calling "LFSv2", that is, LFS with some features added that require changes to the on-disk data structures. These include:
- 64-bit time in everything but inodes - User-specified segment offset, and segment size no longer restricted to PO2. - Serial number on segment summaries in addition to timestamp, and a new volume identifier, to make roll-forward feasible without fear of finding old data and thinking it was new.
Although I think this version works at least as well as what's on the trunk, we're not done yet; hence this commit is going in on a branch and not on the trunk. Enhancements that are not here yet include fragment addressing, like FFS does, instead of block addressing.
|
| 1.13.4.1 | 10-May-2005 |
riz | Pull up the following revisions (requested by perseant in ticket #1281):
1.8 sys/ufs/lfs/TODO 1.75 sys/ufs/lfs/lfs.h (via patch) 1.74 sys/ufs/lfs/lfs_alloc.c (via patch) 1.49, 1.51 sys/ufs/lfs/lfs_balloc.c (1.51 via patch) 1.78 sys/ufs/lfs/lfs_bio.c 1.62 sys/ufs/lfs/lfs_extern.h (via patch) 1.156 sys/ufs/lfs/lfs_segment.c (via patch) 1.48 sys/ufs/lfs/lfs_subr.c 1.101 sys/ufs/lfs/lfs_syscalls.c 1.163 sys/ufs/lfs/lfs_vfsops.c (via patch) 1.134 sys/ufs/lfs/lfs_vnops.c (via patch) 1.61 sys/ufs/ufs/ufs_readwrite.c (via patch)
1.20 libexec/lfs_cleanerd/clean.h (via patch) 1.52 libexec/lfs_cleanerd/cleanerd.c (via patch) 1.41 libexec/lfs_cleanerd/library.c (via patch)
1.4 regress/sys/fs/lfs/newfs_fsck/Makefile 1.2 regress/sys/fs/lfs/newfs_fsck/mkfs_mount 1.2 regress/sys/fs/lfs/newfs_fsck/smallfiles 1.3 sbin/fsck_lfs/bufcache.c 1.3 sbin/fsck_lfs/bufcache.h 1.3 sbin/fsck_lfs/lfs.h 1.8 sbin/fsck_lfs/lfs.c (via patch) 1.8 sbin/fsck_lfs/pass3.c (via patch) 1.18 sbin/fsck_lfs/pass0.c (via patch) 1.18 sbin/fsck_lfs/utilities.c (via patch) 1.7 sbin/fsck_lfs/segwrite.c 1.19 sbin/fsck_lfs/setup.c (via patch) 1.3 sbin/newfs_lfs/Makefile 0 sbin/newfs_lfs/lfs.c (yes, remove it) 1.1 sbin/newfs_lfs/make_lfs.c 1.15 sbin/newfs_lfs/newfs.c (via patch)
Various minor LFS improvements.
Kernel:
* Note when lfs_putpages(9) thinks it is not going to be writing any pages before calling genfs_putpages(9). This prevents a situation in which blocks can be queued for writing without a segment header. * Correct computation of NRESERVE(), though it is still a gross overestimate in most cases. Note that if NRESERVE() is too high, it may be impossible to create files on the filesystem. We catch this case on filesystem mount and refuse to mount r/w. * Allow filesystems to be mounted whose block size is == MAXBSIZE. * Somewhere along the line, ufs_bmaparray(9) started mangling UNWRITTEN entries in indirect blocks again, triggering a failed assertion "daddr <= LFS_MAX_DADDR". Explicitly convert to and from int32_t to correct this. Should fix PR #29045. * Add a high-water mark for the number of dirty pages any given LFS can hold before triggering a flush. This is settable by sysctl, but off (zero) by default. * Be more careful about the MAX_BYTES and MAX_BUFS computations so we shouldn't see "please increase to at least zero" messages. * Note that VBLK and VCHR vnodes can have nonzero values in di_db[0] even though their v_size == 0. Don't panic when we see this. Fixes PR #26680. * Change lfs_bfree to a signed quantity. The manner in which it is processed before being passed to the cleaner means that sometimes it may drop below zero, and the cleaner must be aware of this. * Never report bfree < 0 (or higher than lfs_dsize) through lfs_statfs(9). This prevents df(1) from ever telling us that our full filesystems have 16TB free. * Account space allocated through lfs_balloc(9) that does not have associated buffer headers, so that the pagedaemon doesn't run us out of segments. * Return ENOSPC from lfs_balloc(9) when bfree drops to zero. * Address a deadlock in lfs_bmapv/lfs_markv when the filesystem is being unmounted. Because vfs_busy() is a shared lock, and lfs_bmapv/lfs_markv mark the filesystem vfs_busy(), the cleaner can be holding the lock that umount() is blocking on, then try to vfs_busy() again in getnewvnode().
cleaner:
* Adapt lfs_cleanerd to use the fcntl call to get the Ifile filehandle, so it need not be in the namespace. * Make lfs_cleanerd be more careful when there are very few available segments. * Make lfs_cleanerd less verbose when the filesystem is unmounted.
newfs_lfs, fsck_lfs, and regression:
* Extend the lfs library from fsck_lfs(8) so that it can be used with a not-yet-existent LFS. Make newfs_lfs(8) use this library, so it can create LFSs whose Ifile is larger than one segment. Addresses PR #11110. * Make newfs_lfs(8) use strsuftoi64() for its arguments, a la newfs(8). * Make fsck_lfs(8) respect the "file system is clean" flag. * Don't let fsck_lfs(8) think it has dirty blocks when invoked with the -n flag. * Remove the Ifile from the filesystem namespace. The cleaner now uses a fcntl call on the root inode to find the Ifile filehandle. (As a side-effect, addresses PR #29144.)
|
| 1.15.2.3 | 02-Sep-2006 |
ghen | Pull up following revision(s) (requested by jld in ticket #1494): sbin/newfs_lfs/newfs.c: revision 1.19 When testing seek speed (for the -A option), use sector-aligned offsets so the reads don't always fail, and also be more careful not to read off the end of the disk. If a read does fail, error out instead of silently leaving the loop early (and possibly dividing by zero seconds), because it means our idea of the disk size is wrong, or worse. This fixes PR bin/33199.
|
| 1.15.2.2 | 20-May-2006 |
riz | Pull up following revision(s) (requested by perseant in ticket #1327): sbin/newfs_lfs/extern.h: revision 1.9 sbin/newfs_lfs/make_lfs.c: revision 1.7 sbin/newfs_lfs/newfs_lfs.8: revision 1.21 sbin/newfs_lfs/newfs.c: revision 1.20 newfs_lfs(8) compoment of the recent superblock parameter addition. Change the wording of the explanation of the -M option, detail a new -R option that controls initial setting of the new parameter.
|
| 1.15.2.1 | 07-May-2005 |
tron | Apply patch (requested by perseant in ticket #242): * fsck_lfs buffer cache fixes, including PR #29151 * Change fsck_lfs phase 0 message to reflect reality * fsck_lfs: check phase 5 (cleanerinfo accounting) even on roll-forward * Keep better track of the free list during roll-forward, avoiding a core dump * Improve hash table use for fsck_lfs buffer and vnode cache * Document fsck_lfs flag -f, and implement -q * Add resize_lfs, including kernel support * Add LFS to mountd's list of exportable filesystem types * Make the LFS lkm work again [christos@] * Add MP locking to the LFS kernel subsystem * Fix pager_map deadlock in lfs_putpages() * Avoid incomplete file extension that looks like "partial truncation" to fsck * Use lfs_malloc for cleaner malloc, since the cleaner often runs in low-memory conditions. * Use splay trees, not hash table, to track page allocation for write. * Fix mkdir panic on full fs * Fix page accounting leak by counting differently. * Use rightly named structure for lfs_getattr [skrll@] * Cosmetic changes for readability.
|
| 1.23.22.1 | 18-Sep-2008 |
wrstuden | Sync with wrstuden-revivesa-base-2.
|
| 1.23.18.1 | 28-Sep-2008 |
mjf | Sync with HEAD.
|
| 1.25.6.2 | 22-May-2014 |
yamt | sync with head.
for a reference, the tree before this commit was tagged as yamt-pagecache-tag8.
this commit was splitted into small chunks to avoid a limitation of cvs. ("Protocol error: too many arguments")
|
| 1.25.6.1 | 17-Apr-2012 |
yamt | sync with head
|
| 1.26.6.1 | 23-Jun-2013 |
tls | resync from head
|
| 1.24 | 15-Oct-2015 |
dholland | Enable the creation of lfs64 volumes.
To create an lfs64 volume, use -w 64. You can also force a 32-bit volume with -w 32, but this will fail on devices thta are too large.
lfs64 is the default for devices > 1TB. (1TB rather than 2TB because daddr_t is signed and negative block numbers can cause interesting complications.)
For now print a warning that the lfs64 format isn't finalized, because it isn't. For now any lfs64 use should be limited to test data, benchmarking, and so forth.
|
| 1.23 | 04-Jan-2014 |
wiz | New sentence, new line. Remove trailing whitespace.
|
| 1.22 | 08-Apr-2009 |
joerg | branches: 1.22.6; 1.22.12; Fix markup.
|
| 1.21 | 04-May-2006 |
perseant | branches: 1.21.30; newfs_lfs(8) compoment of the recent superblock parameter addition. Change the wording of the explanation of the -M option, detail a new -R option that controls initial setting of the new parameter.
|
| 1.20 | 07-Aug-2003 |
agc | branches: 1.20.6; Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22308, verified by myself.
|
| 1.19 | 23-Feb-2003 |
perseant | Discourage the creation of new LFSv1 filesystems.
|
| 1.18 | 01-Oct-2002 |
wiz | New sentence, new line. By Robert Elz with minimal fixes.
|
| 1.17 | 21-Jan-2002 |
wiz | Use mdoc macros instead of man ones.
|
| 1.16 | 16-Nov-2001 |
wiz | Punctuation fixes, sort SEE ALSO, use an mdoc macros instead of two man macros.
|
| 1.15 | 16-Nov-2001 |
wiz | Whitespace nits
|
| 1.14 | 08-Sep-2001 |
mason | The default version created by newfs_lfs without arguments is, in fact, 2.
|
| 1.13 | 13-Jul-2001 |
perseant | Merge the short-lived perseant-lfsv2 branch into the trunk.
Kernels and tools understand both v1 and v2 filesystems; newfs_lfs generates v2 by default. Changes for the v2 layout include:
- Segments of non-PO2 size and arbitrary block offset, so these can be matched to convenient physical characteristics of the partition (e.g., stripe or track size and offset).
- Address by fragment instead of by disk sector, paving the way for non-512-byte-sector devices. In theory fragments can be as large as you like, though in reality they must be smaller than MAXBSIZE in size.
- Use serial number and filesystem identifier to ensure that roll-forward doesn't get old data and think it's new. Roll-forward is enabled for v2 filesystems, though not for v1 filesystems by default.
- The inode free list is now a tailq, paving the way for undelete (undelete is not yet implemented, but can be without further non-backwards-compatible changes to disk structures).
- Inode atime information is kept in the Ifile, instead of on the inode; that is, the inode is never written *just* because atime was changed. Because of this the inodes remain near the file data on the disk, rather than wandering all over as the disk is read repeatedly. This speeds up repeated reads by a small but noticeable amount.
Other changes of note include:
- The ifile written by newfs_lfs can now be of arbitrary length, it is no longer restricted to a single indirect block.
- Fixed an old bug where ctime was changed every time a vnode was created. I need to look more closely to make sure that the times are only updated during write(2) and friends, not after-the-fact during a segment write, and certainly not by the cleaner.
|
| 1.12 | 05-Jun-2001 |
wiz | branches: 1.12.2; Drop arguments of .Os.
|
| 1.11 | 05-Dec-2000 |
perseant | Add "-A" option to autoconfigure the segment size based on measured bandwidth and seek time of the disk, using the "4 * bandwidth * seek time" formula from Neefe-Matthews' 1997 paper. An RZ25 disk with this option gets 200K segments. Reference the paper in the manual page.
|
| 1.10 | 08-Nov-2000 |
hubertf | xref lfs_cleanerd(8) in SEE ALSO
|
| 1.9 | 08-Nov-2000 |
hubertf | In SEE ALSO: * it's dump_lfs(8), not dumplfs(8) * xref mount_lfs(8)
|
| 1.8 | 04-Jul-2000 |
perseant | Tweak how lfs_avail is initialized, corresponding to changes in the kernel.
Don't make more superblock segments than we have a record of in the superblock; and print these out as we go, like newfs.
Add am "-M" flag to specify the number of reserved segments, with a note in the man page not to use it.
|
| 1.7 | 12-Feb-2000 |
perseant | branches: 1.7.4; Add -F flag to override newfs_lfs' preference for 4.4LFS-labelled partitions.
|
| 1.6 | 05-Feb-2000 |
enami | - The -B flag should be followed by logical segment size. - Remove unnecessary comma at the end of SEE ALSO list.
|
| 1.5 | 18-Jan-2000 |
perseant | newfs_lfs now recognizes a zero p_sgs field to mean "use the default segment size" (for consistency with bsize/fsize, and since segment size == block size is never a valid combination).
Updated the man page to include explicit reasonable values for fsize, bsize, and sgs, at suggestion from Hubert Feyrer.
|
| 1.4 | 18-Jan-2000 |
perseant | disklabel now understands the p_sgs partition field (shift to compute segment size from block size).
newfs_lfs now reads the disklabel to find segment, block, and fragment sizes. Because reading this info from the wrong fs type could result in very poor fs layout (e.g. ffs has "16" where the segshift would go, resulting in 512-*megabyte* segments for 8K blocks), newfs_lfs refuses to create a filesystem on a partition not labeled "4.4LFS".
Man pages for newfs_lfs updated to reflect this change.
|
| 1.3 | 16-Jan-2000 |
hubertf | Document the proper fstype for LFS. (If the "default" 4.2BSD is used, newfs_lfs runs fine, but I get hangs when writing to the disk)
|
| 1.2 | 15-Jul-1999 |
perseant | Address PR 7412: fix newfs_lfs.8 to list all real options for newfs_lfs; also fix newfs_lfs to get rid of all sorts of useless options that applied only to newfs_ffs. Corrected reference to the FFS paper to the reference to the BSD-LFS paper.
|
| 1.1 | 18-Mar-1999 |
perseant | Change name of newlfs to newfs_lfs.
|
| 1.7.4.1 | 14-Sep-2000 |
perseant | Pull up LFS userland changes to correspond with the previous commit's kernel changes (approved by thorpej):
[basesrc/libexec/lfs_cleanerd:] cleanerd.c, 1.20--1.22 (MIN_FREE_SEG -> lfs_minfreeseg ; read bfree/avail from CLEANERINFO ; changes to definition of -n and -b) lfs_cleanerd.8, 1.7 (update man page to current behavior) library.c, 1.16 (fix comment)
[basesrc/sbin/fsck_lfs:] pass5.c, 1.6 (calculate/fix lfs_avail and lfs_bfree)
[basesrc/sbin/newfs_lfs:] config.h, 1.2--1.5 (MINFREE=20, remove FFS cruft ; add DFL_MIN_FREE_SEGS=8 and MINFREE=10 ; set DFL_MIN_FREE_SEGS=10 ; set DFL_MIN_FREE_SEGS=20) extern.h, 1.2 (correct function declaration for make_lfs) newfs.c, 1.4 (add -M flag) lfs.c, 1.13--1.14, 1.16--1.18 (change lfs_bfree initialization ; MIN_FREE_SEG -> lfs_minfreeseg ; only 10 superblocks and print nicely ; correct init calculation of lfs_bfree/lfs_avail to allow fs to fill ; make -N dtrt)
[basesrc/sbin/mount_lfs:] mount_lfs.8, 1.7 (document -N, -b flags) mount_lfs.c, 1.10 (default cleanerd to -b -n 4; add -N, -b flags)
[basesrc/usr.sbin/dumplfs:] dumplfs.c, 1.15 (print only the SEGUSEs specified with -s)
|
| 1.12.2.2 | 13-Jul-2001 |
perseant | Default to creating a v2 lfs, and print out the roll-forward id that was used. Update newfs_lfs.8 to reflect new options.
|
| 1.12.2.1 | 27-Jun-2001 |
perseant | Import of what I've been calling "LFSv2", that is, LFS with some features added that require changes to the on-disk data structures. These include:
- 64-bit time in everything but inodes - User-specified segment offset, and segment size no longer restricted to PO2. - Serial number on segment summaries in addition to timestamp, and a new volume identifier, to make roll-forward feasible without fear of finding old data and thinking it was new.
Although I think this version works at least as well as what's on the trunk, we're not done yet; hence this commit is going in on a branch and not on the trunk. Enhancements that are not here yet include fragment addressing, like FFS does, instead of block addressing.
|
| 1.20.6.1 | 20-May-2006 |
riz | Pull up following revision(s) (requested by perseant in ticket #1327): sbin/newfs_lfs/extern.h: revision 1.9 sbin/newfs_lfs/make_lfs.c: revision 1.7 sbin/newfs_lfs/newfs_lfs.8: revision 1.21 sbin/newfs_lfs/newfs.c: revision 1.20 newfs_lfs(8) compoment of the recent superblock parameter addition. Change the wording of the explanation of the -M option, detail a new -R option that controls initial setting of the new parameter.
|
| 1.21.30.1 | 13-May-2009 |
jym | Sync with HEAD.
Third (and last) commit. See http://mail-index.netbsd.org/source-changes/2009/05/13/msg221222.html
|
| 1.22.12.1 | 20-Aug-2014 |
tls | Rebase to HEAD as of a few days ago.
|
| 1.22.6.1 | 22-May-2014 |
yamt | sync with head.
for a reference, the tree before this commit was tagged as yamt-pagecache-tag8.
this commit was splitted into small chunks to avoid a limitation of cvs. ("Protocol error: too many arguments")
|