Commit Graph

49 Commits

Author SHA1 Message Date
Juli Mallett
990b6d05ab Allow libufs(3) functions to operate on a regular file. This makes it possible to
use almost anything that uses libufs(3) against a file as an unprivileged user, e.g.
tunefs(8) and dumpfs(8) against a makefs(8)-created image.

Prodded by:	kensmith
2009-06-11 18:04:57 +00:00
Xin LI
06f535757c Bail out when memory allocation is failed, rather than referencing
a NULL pointer.

PR:		kern/94480
Submitted by:	Michiel Pelt <m.pelt xs4all nl>
2009-04-02 17:16:39 +00:00
Poul-Henning Kamp
20a0f65b77 Add a berase() function which uses ioctl(DIOCGDELETE) to erase a slab
of the disk.
2007-12-16 18:02:37 +00:00
Pawel Jakub Dawidek
fa1abc314f The ufs_disk_fillout(3) can take special device name (with or without /dev/
prefix) as an argument and mount point path. At the end it has to find
device name file system is stored on, which means when mount point path is
given, it tries to look into /etc/fstab and find special device
corresponding to the given mount point. This is not perfect, because it
doesn't handle the case when file system is mounted by hand and mount point
is given as an argument.

I found this problem while trying to use snapinfo(8), which passes mount
points to the ufs_disk_fillout(3) function, but I had file system mounted
manually, so snapinfo(8) was exiting with the error below:

	ufs_disk_fillout: No such file or directory

I modified libufs(3) to handle those arguments (the order is important):

1. special device with /dev/ prefix
2. special device without /dev/ prefix
3. mount point listed in /etc/fstab, directory exists
4. mount point listed in /etc/fstab, directory doesn't exist
5. mount point of a file system mounted by hand
2007-03-16 03:13:28 +00:00
Pawel Jakub Dawidek
cf4652e74b Implement cgwrite1(3) function which stored a given cylinder group on disk.
Sponsored by:	home.pl
2006-10-31 21:21:48 +00:00
Giorgos Keramidas
727fbe7709 minor style.Makefile(5) fixes:
- WARNS before CFLAGS
- CFLAGS -DXXX before -IXXX

Approved by:	ru
2005-09-26 06:23:43 +00:00
Juli Mallett
c7b40b9c7f Remove getino(3) manpage. It doesn't document what is here, what is here should
not get documented, and what it does document isn't going to come to CVS any
time in the immediate future.

Patience of a saint:	trhodes
2005-08-31 08:36:05 +00:00
Tom Rhodes
90f8e1e33a Disconnect getino.3 and remove MLINK I added.
Discussed with:	jmallett
2005-08-31 07:44:45 +00:00
Tom Rhodes
849aee62b2 Hook getino.3 up to the build and link it to putino.3.
PR:	83820
2005-08-25 10:22:29 +00:00
Ruslan Ermilov
5c8e5f2462 Fixed xrefs. 2005-01-21 10:35:40 +00:00
Ruslan Ermilov
c81fcafd0d Markup fixes. 2004-07-05 06:53:34 +00:00
Ruslan Ermilov
1c85060a13 Sort SEE ALSO references (in dictionary order, ignoring case). 2004-07-04 20:55:50 +00:00
Ruslan Ermilov
d37ea99837 Removed trailing whitespace. 2004-07-02 19:07:33 +00:00
Ruslan Ermilov
4b6c8c6498 Fixed spelling of the document date. 2004-07-02 18:00:03 +00:00
Hiten Pandya
95e5c73981 Remove unneccessary include of sys/types.h in the SYNOPSIS
header.

Sys/param.h includes sys/types.h internally unless LOCORE is
defined.

Approved by:	des (mentor)
2003-10-09 09:45:20 +00:00
Poul-Henning Kamp
ed1eac71f4 Add XXX'ed temporary bounce-buffering. 2003-10-07 07:12:22 +00:00
David E. O'Brien
4f4a104ee8 style.Makefile(5) 2003-08-18 15:25:39 +00:00
Gordon Tetlow
41d8423f71 Stage 3 of dynamic root support. Make all the libraries needed to run
binaries in /bin and /sbin installed in /lib. Only the versioned files
reside in /lib, the .so symlink continues to live /usr/lib so the
toolchain doesn't need to be modified.
2003-08-17 08:28:46 +00:00
Matthew N. Dodd
913111f124 Correct an apparent typo.
PR:		 bin/53515
Submitted by:	 Lukas Ertl <l.ertl@univie.ac.at>
Approved by:	 jmallett
2003-06-19 22:12:54 +00:00
Juli Mallett
dfa13bbf27 Various cleanups of careless mistakes/omissions.
PR:		53149
Submitted by:	Lukas Ertl <l.ertl@univie.ac.at>
2003-06-10 18:36:16 +00:00
Juli Mallett
27fd747882 Left out the critical part of my "public domain" template, a notice saying
that this file is (these files are) in the public domain.

PR:		53149
2003-06-10 18:24:40 +00:00
Juli Mallett
e78ea9f724 Commit rudimentary libufs manual pages, except for that for
getino(3)/putino(3), inode.c has been reworked in Perforce to the point
where a manual page may not be accurate.  Certainly putino(3) has not
even been merged back yet.

These will need a lot of improvement for most applications, but they
document the API enough to get someone on their feet, most likely.  The
best documentation still exists in the form of libufs(3) consumers in the
base system.
2003-06-09 09:59:11 +00:00
Juli Mallett
b52f85e743 Remove ufs_disk_ctor and ufs_disk_dtor, they never came to fruition. I do
not know of any software using them, and there is no "published API" for
libufs, as it were.
2003-06-09 09:47:38 +00:00
Juli Mallett
1081253fa0 Reduce diffs with code in Perforce:
Parenthesise return values.
2003-06-09 09:32:29 +00:00
Juli Mallett
5b3a32e4a8 MFp4: Fix copy&paste English error. 2003-03-30 18:00:24 +00:00
Juli Mallett
7a51271b68 Close the disk file descriptor that is RO before trying to open the
new one, and do not fall back to the RO fd.  There was a bug here
in that the RO fd was never closed, if the RDRW open succeeded, but
this code is bogus anyway, and it breaks newfs of floppies, at least
for me, due to "Device busy."  Anything that wants to fall back is
doing something significantly odd that it should have some more complex
code on its end.
2003-03-28 01:50:11 +00:00
Juli Mallett
a506dcda3d Clean up error reporting in block.c, so that it gives honest error strings
for the sorts of errors we run into[1].  This also gives us room to put in a
vaguely appropriate casts to silence warnings since our compiler doesn't like
when we compare ssize_t to size_t[2].  Add a cast in sblock.c[3] to silence
a warning because of signed vs. size_t hell (again).  Clean up nearby
excessive parenthemutilation[4].

Reviewed by:	bde [2] [3]
Suggested by:	bde, many [1]
Submitted by:	bde [4]

An aside about [4], bde notes that we do not check for a negative value for
the fs bsize.  I'm nto going to do that in every situation we use it, one must
expect a reasonable program to pass down reasonable values.  Some foot shooting
protection I will tolerate, some I will not.  Also he suggests some possible
conditional improvements there, which I may take to heart.

PS: For me at least, this is now WARNS=5 clean...
2003-02-19 00:32:48 +00:00
Juli Mallett
9e8f2a17ec WARNS ?= 2, so idiocy like 1.12 of type.c doesn't have to happen again. 2003-01-30 00:11:01 +00:00
Juli Mallett
9e4789cc2f Missing "return 0"
Big pointy hat to:	jmallett
Spotted by:		peter
2003-01-30 00:10:24 +00:00
Juli Mallett
7dc95357f8 API for opening (and tracking) writable file descriptors per disk. 2003-01-29 23:19:46 +00:00
Juli Mallett
fe8b86a06d If we don't know where the sblock is (e.g. filling out a blank disk), then
get it from the fs structure.  Really libufs should have interfaces to generate
both what we export, and what we import, based on eachother, and this should
be full of redundant code to make sure everything is right...  But really, we
don't even deal with checksums, so plenty of room to improve.
2003-01-27 01:57:15 +00:00
Juli Mallett
3ff1f264e9 bwrite, not sbwrite, needs to open for writing and write. 2003-01-23 23:58:22 +00:00
Juli Mallett
d934deeff9 API to fillout a blank disk. For e.g. newfs. 2003-01-23 21:32:56 +00:00
Juli Mallett
cc3dd52898 Store not only the current cylinder group in the series (i.e. next that needs
to be read in) but also the last cylinder group in the series (i.e. what is
stored in the structure).
2003-01-19 05:46:23 +00:00
Juli Mallett
e3e8d2ca45 Don't crash when utilities are dumb and try to read less than the disk block
size (dumpfs may try to read the cylinder size (or is is sector size?) by way
of bread).  Prevents a bounds error.
2003-01-19 01:39:53 +00:00
Juli Mallett
22ec2ef3bb Add facility to read one, or a string of, cylinger groups. 2003-01-19 01:31:26 +00:00
Juli Mallett
656128586d Hunt for a disk to operate on, if we're passed a partition mountpoint, etc.
Concept reviewed by:	phk
2003-01-19 00:43:17 +00:00
Juli Mallett
063a27dc9b Fix typo. 2003-01-18 05:06:07 +00:00
Juli Mallett
49b2a6863b Nuke dumb error reporting code, people can just use disk::d_error. Unify the
DEBUG and d_error initialisation into an ERROR macro, which can both trace and
set the d_error field.  Much a more meaningful thing, I should say.
2003-01-18 04:22:14 +00:00
Kirk McKusick
ada981b228 Create a new 32-bit fs_flags word in the superblock. Add code to move
the old 8-bit fs_old_flags to the new location the first time that the
filesystem is mounted by a new kernel. One of the unused flags in
fs_old_flags is used to indicate that the flags have been moved.
Leave the fs_old_flags word intact so that it will work properly if
used on an old kernel.

Change the fs_sblockloc superblock location field to be in units
of bytes instead of in units of filesystem fragments. The old units
did not work properly when the fragment size exceeeded the superblock
size (8192). Update old fs_sblockloc values at the same time that
the flags are moved.

Suggested by:	BOUWSMA Barry <freebsd-misuser@netscum.dyndns.dk>
Sponsored by:   DARPA & NAI Labs.
2002-11-27 02:18:58 +00:00
Juli Mallett
a43cf6c23b Use an error message closer to old dumpfs(8) in the case of truncated/no
superblock.

Submitted by:	kkenn

Can't use it verbatim, at least I hate to, as the ", skipped" bit doesn't
make much sense in a library, to me.
2002-10-22 19:36:10 +00:00
Juli Mallett
8b8cd35523 Add the concept of a per-disk error string, and a function which prints it
along with the errno, if one is set.
2002-10-22 19:25:58 +00:00
Juli Mallett
95289fb2ec Wrap the header to prevent multiple inclusion, and mark the DECLS section.
Reminded by:	Rachel Hestilow <hestilow@ximian.com>
2002-08-22 23:35:35 +00:00
Juli Mallett
e079a00a77 Initialise disk->d_ufs so that in sblock.c it's always initialised
(unless someone tries to use libufs support functions without using
	_fillout or _ctor to construct a uufsd.)

Obtained from:	jmallett_libufs Perforce branch.
2002-08-11 15:37:10 +00:00
Juli Mallett
cf6c0643ee Fill out (zero) and fill in (when doing getino()) the minimum and maximum
inodes in our inoblock (disk->d_ino{min,max}) appropriately.
2002-07-11 21:27:26 +00:00
Ruslan Ermilov
93c163325e No need to explicitly set NOMAN here.
Reviewed by:	jmallett
2002-07-03 06:25:28 +00:00
Juli Mallett
a7a88ab828 DEBUG is a knob that means something else in FreeBSD, use LIBUFS_DEBUG to
turn on tracing.
2002-07-01 18:20:48 +00:00
Juli Mallett
585e540203 In getino, have our DEBUG message in the unhandled case mention that it
does not know what sort of UFS filesystem this is.

Add some DEBUG(NULL)'s to function entry points.
2002-07-01 18:19:20 +00:00
Juli Mallett
20938dbf84 Add libufs, a library for dealing with UFS filesystems from userland to
the build.  It is here to compartmentalise functionality currently duplicated
in many notable programs in the base system.  It currently handles block
reads and writes, as well as reading and writing of the filesystem superblock,
and the reading/lookup of inode data.  It supports both UFS and UFS2.  I
will be maintaining it, and porting programs to use it, however for now, it
is simply being built as part of world.
2002-07-01 01:45:03 +00:00