Commit Graph

81 Commits

Author SHA1 Message Date
kre fd13ea68e6 In bwrite() if the write() returned -1, the associated errno was
being used after a (possible) call to printf (only happens when
debugging) and a certain call to free() (via brelse()).
Make a copy, and use that instead.
2023-03-14 10:36:06 +00:00
kre ca975e38ba Use %zd to print ssize_t (%z[uxo] for size_t), rather than %jd
(just like the other adjacent printfs do)

Should fix i386 build.
2023-03-14 09:25:13 +00:00
christos 6839df46b4 Don't brelse() if bread() fails. The kernel does this for us. Our bread()
implementation just exits on failure, but if it didn't we would double-free.
From Ed Maste (https://reviews.freebsd.org/D39069)
2023-03-13 22:17:24 +00:00
christos d2604cfd26 modernize; release bpp and set it to NULL as the kernel does even if we
never return here.
2023-03-13 22:10:30 +00:00
chs f298a94b73 ufs: fixed signed/unsigned bugs affecting large file systems
Apply these commits from FreeBSD:

  commit e870d1e6f97cc73308c11c40684b775bcfa906a2
  Author: Kirk McKusick <mckusick@FreeBSD.org>
  Date:   Wed Feb 10 20:10:35 2010 +0000

    This fix corrects a problem in the file system that treats large
    inode numbers as negative rather than unsigned. For a default
    (16K block) file system, this bug began to show up at a file system
    size above about 16Tb.

    To fully handle this problem, newfs must be updated to ensure that
    it will never create a filesystem with more than 2^32 inodes. That
    patch will be forthcoming soon.

    Reported by: Scott Burns, John Kilburg, Bruce Evans
    Followup by: Jeff Roberson
    PR:          133980
    MFC after:   2 weeks

  commit 81479e688b0f643ffacd3f335b4b4bba460b769d
  Author: Kirk McKusick <mckusick@FreeBSD.org>
  Date:   Thu Feb 11 18:14:53 2010 +0000

    One last pass to get all the unsigned comparisons correct.


In additional to the changes from FreeBSD, this commit includes quite a few
related changes to appease -Wsign-compare.
2023-01-07 19:41:29 +00:00
chs 87ba0e2a31 Restore backward compatibility of UFS2 with previous NetBSD releases by
disabling support in UFS2 for extended attributes (including ACLs).
Add a new variant of UFS2 called "UFS2ea" that does support extended attributes.
Add new	fsck_ffs operations "-c	ea" and	"-c no-ea" to convert file systems
from UFS2 to UFS2ea and	vice-versa (both of which delete all existing extended
attributes in the process).
2022-11-17 06:40:38 +00:00
riastradh bf2ad72489 makefs(8): Nix trailing whitespace.
Computed by machine, eyeballed by hand, so to speak.
2022-04-09 10:05:35 +00:00
mlelstv 2c701485e4 Avoid integer overflow on systems with 32bit disk addresses. 2022-04-02 19:16:49 +00:00
hgutch 0d7f3d7673 Make sure daddr_t is a 64 bit type when building tools.
(see also PR sw-bug/56742 ).
2022-03-06 08:31:54 +00:00
kre 1083ca28cc Fix the build, use %jd and (intmax_t) cast for big numbers, off_t
and ptrdiff_t aren't always the same size.
2020-03-26 04:25:28 +00:00
christos bc2a90737a improve error messages. 2020-03-25 20:17:48 +00:00
riastradh d1579b2d70 Rename min/max -> uimin/uimax for better honesty.
These functions are defined on unsigned int.  The generic name
min/max should not silently truncate to 32 bits on 64-bit systems.
This is purely a name change -- no functional change intended.

HOWEVER!  Some subsystems have

	#define min(a, b)	((a) < (b) ? (a) : (b))
	#define max(a, b)	((a) > (b) ? (a) : (b))

even though our standard name for that is MIN/MAX.  Although these
may invite multiple evaluation bugs, these do _not_ cause integer
truncation.

To avoid `fixing' these cases, I first changed the name in libkern,
and then compile-tested every file where min/max occurred in order to
confirm that it failed -- and thus confirm that nothing shadowed
min/max -- before changing it.

I have left a handful of bootloaders that are too annoying to
compile-test, and some dead code:

cobalt ews4800mips hp300 hppa ia64 luna68k vax
acorn32/if_ie.c (not included in any kernels)
macppc/if_gm.c (superseded by gem(4))

It should be easy to fix the fallout once identified -- this way of
doing things fails safe, and the goal here, after all, is to _avoid_
silent integer truncations, not introduce them.

Maybe one day we can reintroduce min/max as type-generic things that
never silently truncate.  But we should avoid doing that for a while,
so that existing code has a chance to be detected by the compiler for
conversion to uimin/uimax without changing the semantics until we can
properly audit it all.  (Who knows, maybe in some cases integer
truncation is actually intended!)
2018-09-03 16:29:22 +00:00
christos d372863cc1 need <sys/stat.h> 2017-02-16 22:10:50 +00:00
christos 639cd04dc3 fix msdos reproducible builds! 2017-02-16 19:11:13 +00:00
kre 0368fad281 Revert the part of mkfs.c 1.36 that "gutted the const" (while
retaining the part that added a different one).

That is, re-constipate makefs (well, just a bit, no real pain here.)
2017-02-09 04:42:53 +00:00
christos b4ccad3ff2 gut const for now. 2017-02-08 16:00:30 +00:00
christos db38a065ef Don't store random (from ASLR) pointers into the superblock. Should be the
last (famous last words) problem with reproducible builds!
2017-02-08 04:08:53 +00:00
christos 6125bf59b0 tidy up error messages 2016-06-24 19:24:11 +00:00
christos c316d7b24a little size_t/ssize_t... 2015-12-24 15:52:37 +00:00
christos 911dc95740 more deterministic ffs for reproducible builds. 2015-12-21 00:58:08 +00:00
agc aa7e0e4b83 Make the userland signature and uses of bread() match the kernel ones,
after the removal of the cred argument.
2015-03-29 05:52:59 +00:00
christos 0a77b69ab6 fix unused variable warnings. 2013-10-19 17:16:37 +00:00
dholland 75571afd93 Stick ffs_ in front of the following macros:
fragstoblks()
   blkstofrags()
   fragnum()
   blknum()

to finish the job of distinguishing them from the lfs versions, which
Christos renamed the other day.

I believe this is the last of the overtly ambiguous exported symbols
from ffs... or at least, the last of the ones that conflicted with lfs.
ffs still pollutes the C namespace very broadly (as does ufs) and this
needs quite a bit more cleanup.

XXX: boo on macros with lowercase names. But I'm not tackling that just yet.
2013-06-23 22:03:34 +00:00
dholland e1610ba4cb Stick ffs_, ext2_, chfs_, filecore_, cd9660_, or mfs_ in front of
the following symbols so as to disambiguate fully. (Christos already
did the lfs ones.)

   lblkno
   lblktosize
   lfragtosize
   numfrags
   blkroundup
   fragroundup
2013-06-23 07:28:36 +00:00
dholland 2737439da3 fsbtodb() -> FFS_FSBTODB(), EXT2_FSBTODB(), or MFS_FSBTODB()
dbtofsb() -> FFS_DBTOFSB() or EXT2_DBTOFSB()

(Christos already did the lfs ones a few days back)
2013-06-23 02:06:04 +00:00
dholland f1333577b5 Rename ambiguous macros:
MAXDIRSIZE -> UFS_MAXDIRSIZE or LFS_MAXDIRSIZE
   NINDIR -> FFS_NINDIR, EXT2_NINDIR, LFS_NINDIR, or MFS_NINDIR
   INOPB -> FFS_INOPB, LFS_INOPB
   INOPF -> FFS_INOPF, LFS_INOPF
   blksize -> ffs_blksize, ext2_blksize, or lfs_blksize
   sblksize -> ffs_blksize

These are not the only ambiguously defined filesystem macros, of
course, there's a pile more. I may not have found all the ambiguous
definitions of blksize(), too, as there are a lot of other things
called 'blksize' in the system.
2013-06-19 17:51:25 +00:00
christos c5e9014781 - more changes to make -O work
- fix err* calls.
2013-02-03 03:21:21 +00:00
christos 2d692a9557 add and document offset. 2013-02-02 20:42:02 +00:00
christos d84c38ae4e - don't abuse vp->fs to mean struct fs for ffs and struct msdos_opts;
make it always fsinfo_t and change void * to that.
- kill unused structure members.
2013-01-30 19:19:19 +00:00
christos 78e97492c8 buf is generic; it has nothing to do with ffs and will eventually be moved.
gc sectorize.
2013-01-30 17:29:05 +00:00
christos e4989541fe - use emalloc and friends
- kill a bunch of global variables, more work to be done here
- homogenize option parsing. more work for cd9660
- use the new options parsing code to print an fs-specific usage
2013-01-28 21:03:26 +00:00
mlelstv 3b0450ca73 Do not use *bp after freeing it in brelse. 2013-01-28 10:16:35 +00:00
christos e502c2ffd0 This works well enough to populate plain files in the root dir. creating
directories fails.
2013-01-27 20:05:46 +00:00
christos 12188588a0 zero memory 2013-01-27 14:10:22 +00:00
christos 96e132de94 Don't print the pointers in debugging, it is not useful.
zero all memory
2013-01-27 14:10:03 +00:00
christos ed8edcd60d make this cross-compile friendly. 2013-01-26 16:50:46 +00:00
christos 9ac350be41 make the buffer functions look exactly like the kernel ones and add other
cruft to make the kernel files compile.
2013-01-26 00:19:39 +00:00
dholland dcd34a91c5 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.
2013-01-22 09:39:11 +00:00
dholland 0a7a01f2e2 Fix build failure reported by bracket.
(shouldn't this size_t be ino_t?)
2012-04-19 19:48:14 +00:00
christos b825b96b8e WARNS=5 2012-04-19 17:28:25 +00:00
christos 4a5d314575 add support for setting the ufs label. (Nathan Whitehorn) 2011-10-09 21:33:43 +00:00
bouyer 063f96f3c2 merge the bouyer-quota2 branch. This adds a new on-disk format
to store disk quota usage and limits, integrated with ffs
metadata. Usage is checked by fsck_ffs (no more quotacheck)
and is covered by the WAPBL journal. Enabled with kernel
option QUOTA2 (added where QUOTA was enabled in kernel config files),
turned on with tunefs(8) on a per-filesystem
basis. mount_mfs(8) can also turn quotas on.

See http://mail-index.netbsd.org/tech-kern/2011/02/19/msg010025.html
for details.
2011-03-06 17:08:10 +00:00
snj 550147bd6a Remove 3rd and 4th clauses in christos' license. OK christos. 2009-10-21 01:07:44 +00:00
pooka aeac8f5107 Move fs-specific stuff in Makefile to fs/Makefile.inc to clarify
top-level Makefile.
2009-01-16 19:39:52 +00:00
christos 9450025adc from Anon Ymous: compile with -Wextra 2006-12-18 21:03:29 +00:00
chs 6c50e54c82 avoid the need for a bogus initializer. 2005-10-08 03:21:17 +00:00
christos c4ee9f6d2e 64 bit inode changes 2005-08-19 02:07:18 +00:00
fvdl b14624e508 Pull in DIP_ADD from sys/ufs/ufs/inode.h and use it, to prevent bad lvalue
assignment warnings/errors from gcc4.
2005-06-23 00:53:16 +00:00
he e670882cec Initialize a local variable in ufs_getlbns() to appease -Wuninitialized.
Marked with XXXGCC for sparc64 (found while compiling for it).

Reviewed by lukem.
2005-06-07 13:54:55 +00:00
jmc 2406596e11 Refactor the filesystem specific portions out of makefs.c/makefs.h completely.
Instead of extending fsinfo_t it now holds a void * to file system specific
data. This is then setup/cleaned up by the additional of 2 additional
callbacks. Makes adding new filesystems simpler as almost no code has
to be updated in the generic makefs code now.
2004-12-20 20:51:42 +00:00