mckusick [Sat, 14 Dec 2002 01:35:30 +0000 (01:35 +0000)]
The buffer daemon cannot skip over buffers owned by locked inodes as
they may be the only viable ones to flush. Thus it will now wait for
an inode lock if the other alternatives will result in rollbacks (and
immediate redirtying of the buffer). If only buffers with rollbacks
are available, one will be flushed, but then the buffer daemon will
wait briefly before proceeding. Failing to wait briefly effectively
deadlocks a uniprocessor since every other process writing to that
filesystem will wait for the buffer daemon to clean up which takes
close enough to forever to feel like a deadlock.
Reported by: Archie Cobbs <archie@dellroad.org>
Sponsored by: DARPA & NAI Labs.
Approved by: re
archie [Sat, 14 Dec 2002 00:56:07 +0000 (00:56 +0000)]
Fix two bugs:
(a) Save control message return address only if NGM_MPPC_CONFIG_DECOMP
(b) Properly count the number of required re-key operations
when we loose synchronization and have to resync
tjr [Fri, 13 Dec 2002 23:44:00 +0000 (23:44 +0000)]
Keep trying to flush the vnode list for the mount while some are still
busy and we are making progress towards making them not busy. This is
needed because smbfs vnodes reference their parent directory but may
appear after their parent in the mount's vnode list; one pass over the
list is not sufficient in this case.
This stops attempts to unmount idle smbfs mounts failing with EBUSY.
mux [Fri, 13 Dec 2002 21:34:35 +0000 (21:34 +0000)]
Correct a harmless problem when creating the DMA tag
used to map mbufs. The maximum size should be MCLBYTES
and not SIS_TX_LIST_SZ. This is probably a typo in
the original commit.
tjr [Fri, 13 Dec 2002 10:15:01 +0000 (10:15 +0000)]
Store a reference to the parent directory's vnode in struct smbnode,
not to the parent's smbnode, which may be freed during the lifetime
of the child if the mount is forcibly unmounted. umount -f should now
work properly (ie. not panic) on smbfs mounts.
tjr [Fri, 13 Dec 2002 09:59:40 +0000 (09:59 +0000)]
Drop filedesc lock and acquire Giant around calls to malloc() and free().
These call uma_large_malloc() and uma_large_free() which require Giant.
Fixes panic when descriptor table is larger than KMEM_ZMAX bytes
noticed by kkenn.
murray [Fri, 13 Dec 2002 06:54:33 +0000 (06:54 +0000)]
Move the creation of the DRIVERS.TXT file to a more appropriate area
of this file, so it will be created for other platforms that use a
third floppy disk, not just i386.
jake [Fri, 13 Dec 2002 00:32:29 +0000 (00:32 +0000)]
Don't run kldxref when installing modules on sparc64. kldxref and the whole
module dependency system rely on linker behaviour that is machine dependent
and not part of the elf spec, and only work by accident on other platforms.
grog [Fri, 13 Dec 2002 00:27:32 +0000 (00:27 +0000)]
Create raw plexes and subdisks, not the old volume-related ones. This
crept in in the transition to devfs, and caused a number of "device
not configured" errors.
green [Thu, 12 Dec 2002 20:32:45 +0000 (20:32 +0000)]
Account for fts(3)'s FTS_SLNONE case for symbolic links which have
a nonexistant target, in addition to the FTS_SL previously, so e.g.
setfmac -h sebsd/system_u:object_r:malloc_conf_t /etc/malloc.conf
succeeds.
markm [Thu, 12 Dec 2002 17:38:45 +0000 (17:38 +0000)]
Fix a buffer overrun in /dev/random which, due to the nature of the
kernel memory allocator, is harmless. This could be a problem for
other systems, though. I've modified Darren's patch a little.
Original patch by: Darren Schack, Isilon Systems, Inc <darrens@isilon.com>
Also analysed by: SGI, and in particular Divy Le Ray of SGI
OK'ed by: re(rwatson)
emoore [Wed, 11 Dec 2002 20:59:46 +0000 (20:59 +0000)]
(1) Problem: PANIC when loading/unloading driver
as module. This also fix's issue kern/45713.
Fix - polling was implemented incorrectly for
adapter enquiry and adapter flush.
(2) Problem: PANIC when unloading driver
as module.
Fix - device nodes are not destroyed for amr0,
and amrd* when driver is unloaded
(3) Problem: PANIC from loading driver when
3ware adapter present, error message "Warning
"amrd is usurping twed's bmaj"
Fix - put #idef freebsd version < 500000 for
bmaj -1 -> amrd_cdevsw
(4) Problem: warnings in driver when compiling
with DAMR_DEBUG param enabled in Makefile
Fix - fix the warnings so driver can compile
when -Werror is present in Makefile.
ru [Wed, 11 Dec 2002 15:55:29 +0000 (15:55 +0000)]
mdoc(7) police: Added the missing .Os call; it's not strictly
necessary nowadays, but is documented as "required", and may
become so again in the future.
marcel [Tue, 10 Dec 2002 20:11:20 +0000 (20:11 +0000)]
Pass the HCDP table address to the kernel. If no such table exists,
NULL is passed. The address of the HCDP table can be found by
iterating over the configuration tables in the EFI system table.
To avoid more duplication, a function can be called with the GUID
of interest. The function will do the scanning. Use the function
in all places where we iterate over the configuration tables in
an attempt to find a specific one.
Bump the loader version number as the result of this.
bmah [Tue, 10 Dec 2002 16:35:44 +0000 (16:35 +0000)]
Add ${BUILDNAME} and ${TARGET} to the filenames of ISO images
generated during release builds.
For the most part, re@ was doing this manually before putting ISO images
on ftp-master, but not always. This should make naming more consistent
and descriptive.
Requested by: jason andrade <jason@dstc.edu.au>, hubs@
Approved by: re (rwatson)
MFC after: 1 month
rwatson [Tue, 10 Dec 2002 16:20:34 +0000 (16:20 +0000)]
Default policies to on: if you load them or compile them into your
kernel, you should expect them to do something, so now they do. This
doesn't affect users who don't load or explicitly compile in the
policies.
scottl [Tue, 10 Dec 2002 15:52:56 +0000 (15:52 +0000)]
Play nice with GEOM and use the appropriate ioctls for getting the
partition size and sector size. The old way of groveling through the
disklabel doesn't work anymore.
marcel [Tue, 10 Dec 2002 06:22:25 +0000 (06:22 +0000)]
Change the startup code to fix a memory leak and to allow us to
accept load options (=command line options).
The call graph changes from *entry*->efi_main->efi_init, where
efi_main is the EFI equivalent of main to *entry*->efi_main->main,
where main is what you'd expect. efi_main now is what efi_init was.
The prototype of main follows that of C. The first argument is argc
and the second is argv. There is no third argument.
Allocation of heap pages is now handled by the EFI library and it
now deallocates the pages when main() returns or when exit() is
called. This allows us to safely return to the boot manager (or
EFI shell) without leaks. EFI applications are responsible to free
all memory themselves.
Handling of the load options is a bit tricky. There are either no
load options, load options in ASCII or load options in Unicode.
The EFI library will translate the ASCII options to Unicode options
as to simplify user code. Since the load options are passed as a
single string (if present) and main() accepts argc and argv, the
startup code also has to split the string into words and build the
argv vector. Here the trickiness starts. When the loader is started
from the EFI shell, argv[0] will automaticly load the program name.
In all other cases (ie through the boot manager), this is not the
case. Unfortunately, there's no trivial way to check. Hence, a
set of conditions is checked to determine if we need to fill in
argv[0] ourselves or not. This checking is not perfect. There are
known cases where it fails to do the right thing. The logic works
for most expected cases, though. This includes the case where no
options are given.