mikeh [Sun, 20 Feb 2005 17:33:34 +0000 (17:33 +0000)]
Import the latest CVS version of lukemftp.
Short list of changes:
* SIGINT termination from auto-fetch.
* Less trusting of remote filenames during auto mgets.
* Improved RFC2616 compliancy.
* Fix globs when using ftp reget (from mat@).
* Limit send buffer size.
rwatson [Sun, 20 Feb 2005 15:54:44 +0000 (15:54 +0000)]
In soreceive(), when considering delivery to a socket in SS_ISCONFIRMING,
only call the protocol's pru_rcvd() if the protocol has the flag
PR_WANTRCVD set. This brings that instance of pru_rcvd() into line with
the rest, which do check the flag.
delphij [Sun, 20 Feb 2005 11:32:49 +0000 (11:32 +0000)]
When creating a new FFS file system, the block size will indirectly
affect the largest file size that is allowed by the file system.
On the other hand, when creating a snapshot, the snapshot file will
appear as it is as big as the file system itself. Hence we will not
be able to create a snapshot on large file systems with small block
sizes.
Add a warning about this, and gives some hints to correct the issue.
delphij [Sun, 20 Feb 2005 08:02:15 +0000 (08:02 +0000)]
The recomputation of file system summary at mount time can be a
very slow process, especially for large file systems that is just
recovered from a crash.
Since the summary is already re-sync'ed every 30 second, we will
not lag behind too much after a crash. With this consideration
in mind, it is more reasonable to transfer the responsibility to
background fsck, to reduce the delay after a crash.
Add a new sysctl variable, vfs.ffs.compute_summary_at_mount, to
control this behavior. When set to nonzero, we will get the
"old" behavior, that the summary is computed immediately at mount
time.
Add five new sysctl variables to adjust ndir, nbfree, nifree,
nffree and numclusters respectively. Teach fsck_ffs about these
API, however, intentionally not to check the existence, since
kernels without these sysctls must have recomputed the summary
and hence no adjustments are necessary.
This change has eliminated the usual tens of minutes of delay of
mounting large dirty volumes.
delphij [Sun, 20 Feb 2005 06:33:18 +0000 (06:33 +0000)]
When creating a new FFS file system, the block size will indirectly
affect the largest file size that is allowed by the file system.
On the other hand, when creating a snapshot, the snapshot file will
appear as it is as big as the file system itself. Hence we will not
be able to create a file system on large file systems with small
block sizes.
Add a warning about this, and gives some hints to correct the issue.
rwatson [Sun, 20 Feb 2005 04:18:22 +0000 (04:18 +0000)]
Move assignment of UNIX domain socket pcb during unp_attach() outside
of the global UNIX domain socket mutex: no protection is needed that
early in the setup of the UNIX domain socket and socket structures.
brueffer [Sun, 20 Feb 2005 00:09:38 +0000 (00:09 +0000)]
Remove the note about em(4) not working with bridge(4) when hardware
assisted VLAN processing is enabled from the BUGS section. This is
expected to work now.
bmah [Sat, 19 Feb 2005 20:10:38 +0000 (20:10 +0000)]
New release notes: OLDCARD removed, ath(4) transmit rate control
modules, wlan(4) overhaul with particular mention of the wlan_wep
module, amr(4) PAE-safe (+MFC), matcd(4) removed, wd(4) removed for
pc98, ifconfig(8) reorg and update.
Culled from random skimming of HEAD commit messages.
Somewhat belatedly bump copyright date while here.
marius [Sat, 19 Feb 2005 13:48:53 +0000 (13:48 +0000)]
Bump __FreeBSD_version for the Intel C/C++ compiler GCC-compatibility
fixes in src/include/stdbool.h rev. 1.7 and src/sys/i386/include/_types.h
rev. 1.10, required by ports/lang/icc.
marius [Sat, 19 Feb 2005 13:47:33 +0000 (13:47 +0000)]
The Intel C/C++ compiler doesn't require a typedef for _Bool when compiling
C source so don't declare one when using the GCC-compatibility (defaulting
to GCC 2.95.0) of ICC.
marius [Sat, 19 Feb 2005 13:46:40 +0000 (13:46 +0000)]
Together with the changes to compile kernels with the Intel C/C++ compiler
preliminary support for using the GCC-compatibility of ICC was committed
but couldn't be tested at that time due to problems with ICC itself. Since
ICC 8.1 it's possible to use its GCC-compatibility under FreeBSD and it
turned out that a typedef for __gnuc_va_list is required in that case.
Revert the part of rev. 1.8 which #ifdef'ed out __gnuc_va_list for ICC.
phk [Sat, 19 Feb 2005 11:44:57 +0000 (11:44 +0000)]
Try to unbreak the vnode locking around vop_reclaim() (based mostly on
patch from kan@).
Pull bufobj_invalbuf() out of vinvalbuf() and make g_vfs call it on
close. This is not yet a generally safe function, but for this very
specific use it is safe. This solves the problem with buffers not
being flushed by unmount or after failed mount attempts.
wpaul [Sat, 19 Feb 2005 07:37:01 +0000 (07:37 +0000)]
Fix a small bug in firmcvt: outfile must be strdup()ed.
Also, add conditional code to allow different invokations for objcopy
depending on whether we're compiled on an i386 arch or amd64 arch, so
that we can produce x86-64 object files on amd64.
njl [Sat, 19 Feb 2005 06:13:26 +0000 (06:13 +0000)]
Add a new field to struct cf_setting for special values. These are driver-
specific values that other components may want to use. Add support to
acpi_perf(4) to export the control and status values via this field.
ru [Fri, 18 Feb 2005 22:31:19 +0000 (22:31 +0000)]
Allocate the M_VLANTAG m_pkthdr flag, and use it to indicate that
a packet has VLAN mbuf tag attached. This is faster to check than
m_tag_locate(), and allows us to use the tags in non-vlan(4) VLAN
producers.
The first argument to VLAN_OUTPUT_TAG() is now unused but retained
for backward compatibility.
While here, embellish a fix in rev. 1.174 of if_ethersubr.c -- it
now checks for packets with VLAN (mbuf) tags, and it should now
be possible to bridge(4) on vlan(4)'s whose parent interfaces
support VLAN decapsulation in hardware.
jhb [Fri, 18 Feb 2005 18:56:04 +0000 (18:56 +0000)]
- Add a custom version of exec_copyin_args() to deal with the 32-bit
pointers in argv and envv in userland and use that together with
kern_execve() and exec_free_args() to implement freebsd32_execve()
without using the stackgap.
- Fix freebsd32_adjtime() to call adjtime() rather than utimes(). Still
uses stackgap for now.
- Use kern_setitimer(), kern_getitimer(), kern_select(), kern_utimes(),
kern_statfs(), kern_fstatfs(), kern_fhstatfs(), kern_stat(),
kern_fstat(), and kern_lstat().
jhb [Fri, 18 Feb 2005 18:51:59 +0000 (18:51 +0000)]
- Add a custom version of exec_copyin_args() to deal with the 32-bit
pointers in argv and envv in userland and use that together with
kern_execve() and exec_free_args() to implement linux_execve() for the
amd64/linux32 ABI without using the stackgap.
- Implement linux_nanosleep() using the recently added kern_nanosleep().
- Use linux_emul_convpath() instead of linux_emul_find() in
exec_linux_imgact_try().
jhb [Fri, 18 Feb 2005 18:37:26 +0000 (18:37 +0000)]
- Implement osf1_emul_find() using kern_alternate_path(). This changes
the semantics in that the returned filename to use is now a kernel
pointer rather than a user space pointer. This required changing the
arguments to the CHECKALT*() macros some and changing the various system
calls that used pathnames to use the kern_foo() functions that can accept
kernel space filename pointers instead of calling the system call
directly.
- Use kern_open(), kern_stat(), kern_lstat(), kern_fstat(), kern_access(),
kern_truncate(), kern_pathconf(), kern_execve(), kern_select(),
kern_setitimer(), kern_getitimer(), kern_statfs(), and kern_fstatfs().
jhb [Fri, 18 Feb 2005 18:32:32 +0000 (18:32 +0000)]
Use LCONVPATHEXIST() rather than CHECKALTEXIST() and use
exec_copyin_args(), kern_execve(), and exec_free_args() rather than
execve() to eliminate stackgap use from Alpha's linux_execve().
imp [Fri, 18 Feb 2005 17:35:03 +0000 (17:35 +0000)]
For the I/O port case, we need to set ok to 1 if we have what looks
like a valid range. We already do this in the memory case (although
the code there is somewhat different than the I/o case because we have
to deal with different kinds of memory). Since most laptops don't
have non-subtractive bridges, this wasn't seen in practice.
Evidentally the Compaq R3000 hits this problem with PC Cards.
deischen [Fri, 18 Feb 2005 16:07:05 +0000 (16:07 +0000)]
Somewhere along the line, tick accumulation for SA threads was
changed to use the statclock. Make sure we calculate the value
of a tick correctly in userland.
Noticed by: Kazuaki Oda <kaakun at highway dot ne dot jp>
harti [Fri, 18 Feb 2005 15:32:06 +0000 (15:32 +0000)]
Push the assignments of some variables down into the sub-blocks where
it is actually needed. This makes clear in which subblocks the variables
are not needed and which can easier be split out.
rwatson [Fri, 18 Feb 2005 10:49:55 +0000 (10:49 +0000)]
Conditionalize cd9660 chattiness regarding the nature of the file system
mounted (is it Joliet, RockRidge, High Sierra) based on bootverbose.
Most file systems don't generate log messages based on details of the
file system superblock, and these log messages disrupt sysinstall output
during a new install from CD. We may want to explore exposing this
status information using nmount() at some point.
obrien [Fri, 18 Feb 2005 08:01:59 +0000 (08:01 +0000)]
For non-embedded platforms, increase the size of the argument list.
Note that this results in more kernel virtual memory being reserved for
temporary storage of the args. The args temporary space is allocated out
of exec_map (a submap of kernel_map). This will use roughly 4MB of KVM.
wpaul [Fri, 18 Feb 2005 03:22:37 +0000 (03:22 +0000)]
Make the Win64 -> ELF64 template a little smaller by using a string
copy op to shift arguments on the stack instead of transfering each
argument one by one through a register. Probably doesn't affect overall
operation, but makes the code a little less grotty and easier to update
later if I choose to make the wrapper handle more args. Also add
comments.
rwatson [Fri, 18 Feb 2005 00:52:17 +0000 (00:52 +0000)]
In solisten(), unconditionally set the SO_ACCEPTCONN option in
so->so_options when solisten() will succeed, rather than setting it
conditionally based on there not being queued sockets in the completed
socket queue. Otherwise, if the protocol exposes new sockets via the
completed queue before solisten() completes, the listen() system call
will succeed, but the socket and protocol state will be out of sync.
For TCP, this didn't happen in practice, as the TCP code will panic if
a new connection comes in after the tcpcb has been transitioned to a
listening state but the socket doesn't have SO_ACCEPTCONN set.
This is historical behavior resulting from bitrot since 4.3BSD, in which
that line of code was associated with the conditional NULL'ing of the
connection queue pointers (one-time initialization to be performed
during the transition to a listening socket), which are now initialized
separately.
njl [Fri, 18 Feb 2005 00:23:36 +0000 (00:23 +0000)]
Introduce a new method, cpufreq_drv_type(), that returns the type of the
driver. This used to be handled by cpufreq_drv_settings() but it's
useful to get the type/flags separately from getting the settings.
(For example, you don't have to pass an array of cf_setting just to find
the driver type.)
Use this new method in our in-tree drivers to detect reliably if acpi_perf
is present and owns the hardware. This simplifies logic in drivers as well
as fixing a bug introduced in my last commit where too many drivers attached.
ps [Thu, 17 Feb 2005 23:04:56 +0000 (23:04 +0000)]
Remove 2 (SACK) fields from the tcpcb. These are only used by a
function that is called from tcp_input(), so they oughta be passed on
the stack instead of stuck in the tcpcb.
imp [Thu, 17 Feb 2005 21:05:04 +0000 (21:05 +0000)]
memspace is set to some value by masking off bits. When these bits
are equal to PCCARD_TPCE_FS_MEMSPACE_NONE, memspace will be zero, so
testing for this case inside of the if statement results in dead code.
We'd fail to set a value to zero that's already zero (since it is
initialized to 0 indirectly) with this code being there. Well, except
in the very rare case that we have a card that has a defualt entry
that includes a memory space followed by one that has no memory space
(these are extremely rare, I don't recall ever having seen one :-).
Fix this by setting num_memspace to 0 in a more appropriate place.
imp [Thu, 17 Feb 2005 18:15:13 +0000 (18:15 +0000)]
Fix the support for the ax88[17]90 to print the right type, rather
than the generic ne-2000 string. This should have no effect on the
actual support of the parts, just reporting what the part was.
Also, rename a few functins and symbols to reflect a more generic
part support that grew out of the early specific support.
ru [Thu, 17 Feb 2005 18:06:37 +0000 (18:06 +0000)]
Make the on-disk format of .dat files produced by strfile(8)
architecture independent. Besides the fixed-width types in
the header, the offsets are now stored as 64-bit off_t (also
in big endian format).
rwatson [Thu, 17 Feb 2005 13:00:23 +0000 (13:00 +0000)]
In accept1(), extend coverage of the socket lock from just covering
soref() to also covering the update of so_state. While no other user
threads can update the socket state here as it's not yet hooked up to
the file descriptor array yet, the protocol could also frob the
socket state here, leading to a lost update to the so_state field.
No reported instances of this bug (as yet).
rwatson [Thu, 17 Feb 2005 12:53:45 +0000 (12:53 +0000)]
In sonewconn(), set the new socket's state to show the protocol-provided
connection status before inserting the new socket into the listen
socket's accept queue, or there might be a race in which another thread
wakes up when the accept lock is released, and sees the socket before its
state is set correctly. The wakeup still occurs after the accept lock is
released. There have been no diagnoses of this bug in real-world systems
(as yet).
harti [Thu, 17 Feb 2005 12:31:53 +0000 (12:31 +0000)]
Move error case to begin of if-else chain. Do not needless initialize
startc, but only at the place where the initialisation is needed. Remove
a needless else.
Submitted by: Max Okumoto <okumoto@ucsd.edu> (partly)
njl [Thu, 17 Feb 2005 01:01:40 +0000 (01:01 +0000)]
Fix the check for acpi_perf(4) so that we verify if it is fully attached
or just offering info. In the former case, we don't probe/attach to allow
the ACPI driver precedence. A refinement of this would be to actually
use the info provided by acpi_perf(4) to get the real CPU clock rates
instead of estimating them but since all systems that support both
acpi_perf(4) and ichss(4) export the control registers to acpi_perf(4),
it can just handle the registers on its own.
marius [Thu, 17 Feb 2005 00:13:49 +0000 (00:13 +0000)]
UltraSparc II[e,i] based systems come up with the tick compare register
loaded, the tick interrupt enabled and a handler that resets the tick
counter on every tick interrupt. While this isn't documented this can
cause DELAY() to wait for a value the tick counter will not reach when
used in early boot, i.e. before cpu_initclocks() is called, depending
on when in the cycle DELAY() is called, the delay value and the value
the tick compare register is set to. The excessive use of DELAY() in
uart(4) when probing Sun keyboards seems to always manage to trigger
this, resulting in a hang during boot.
Disable the tick interrupt in tick_init(), which is called early in
sparc64_init(), until the interrupt is enabled again in tick_start(),
called by cpu_initclocks(), with our own handler. This fixes the hang
during probing Sun keyboards on AXi boards and Ultra 10, with other
machines like Ultra 5 probably being affected but not tested.