Monotonic clock code uses reader/writer lock which is prone to same
starvation problems as we saw with xtime. This patch changes it to seq_lock
which is faster and won't starve writers in face of lots of readers.
Jan Harkes [Tue, 16 Sep 2003 10:33:57 +0000 (03:33 -0700)]
[PATCH] Coda updates [5/5]
Introduce a new kernel-userspace interface that uses 128-bit file
identifiers instead of the previously used 96-bit fileids. We also
replacing the coda_creds structure with only the fsuid.
This new API has been used by for a couple of months now, people had to
patch their kernels whenever they want to run a current Coda release.
A new Kconfig option is added to fall back on the old API for older Coda
clients and other userspace filesystems that might use our protocol.
Jan Harkes [Tue, 16 Sep 2003 10:33:45 +0000 (03:33 -0700)]
[PATCH] Coda updates [4/5]
The ViceFid structure is really a Coda server datatype and the kernel
really shouldn't have to know its internal structure. Replace all
instances with struct CodaFid with opaque members.
Jan Harkes [Tue, 16 Sep 2003 10:33:32 +0000 (03:33 -0700)]
[PATCH] Coda updates [3/5]
Both userspace and the kernel are testing only the fsuid part of the
coda_creds credentials structure. Nothing else is really used, so we now
match the code with the actual usage by only passing fsuid around. The
kernel-userspace API is kept compatible (for now).
Jan Harkes [Tue, 16 Sep 2003 10:32:51 +0000 (03:32 -0700)]
[PATCH] Coda updates [1/5]
- Remove unused functions and variables.
- Be a bit more strict with the definition of various types that are
shared between kernel and userspace.
- Included a couple of cleanups from Maximilian Attems and Stephen
Hemminger.
Dave Kleikamp [Tue, 16 Sep 2003 02:24:02 +0000 (21:24 -0500)]
JFS: Fix rampant data corruption
A recent change causes pervasive data corruption by over-writing inode
metadata with a word of garbage. The field, di_rdev, should only be set
for a device inode.
Russell Cattelan [Mon, 15 Sep 2003 08:03:45 +0000 (03:03 -0500)]
[XFS] IRIX sets KM_SLEEP to 0 but the support routines sets KM_SLEEP to 1.
So somebodys shortcut on irix is incorrect on linux and results in the sleep
behaviour not being set.
Rusty Russell [Thu, 11 Sep 2003 11:33:11 +0000 (04:33 -0700)]
[NETFILTER]: MASQUERADE target for mostly-static IP addresses.
Herve Eychenne noted that many ADSL connections get the same
address when the interface comes back up, so some users use SNAT
instead of masquerade. The answer is that MASQUERADE should only
drop connections when the interface comes up, and then only if the
interface address has actually changed.
Chas Williams [Thu, 11 Sep 2003 11:22:34 +0000 (04:22 -0700)]
[ATM]: seq_file conversion of /proc/net/atm [8/8] (from romieu@fr.zoreil.com)
- introduction of the struct array 'atm_proc_ents':
- removal of code duplication in atm_proc_cleanup();
- removal of code duplication in atm_proc_init();
- removal of the macros CREATE_SEQ_ENTRY() and CREATE_ENTRY();
- /proc/net/atm/vcc returns to /proc/net/atm/vc;
- credits at the top of the file;
- replaced proc_dev_atm_operations by proc_atm_dev_ops;
- atm_proc_dev_register: removal of tasteless "fail0/fail1" labels.
Chas Williams [Thu, 11 Sep 2003 11:21:53 +0000 (04:21 -0700)]
[ATM]: seq_file conversion of /proc/net/atm [7/8]
seq_file support for /proc/net/atm/lec:
- lec_info(): seq_printf/seq_putc replaces sprintf;
- traversal of the lec structure needs to walk:
-> the lec interfaces
-> the tables of arp tables(lec_arp_tables);
-> the arp tables themselves
-> the misc tables (lec_arp_empty_ones/lec_no_forward/mcast_fwds)
Sum up of the call tree:
atm_lec_seq_start()/atm_lec_seq_next()
-> atm_lec_get_idx()
-> atm_lec_itf_walk() (responsible for dev_lec/dev_put handling)
-> atm_lec_priv_walk() (responsible for lec_priv locking)
-> atm_lec_arp_walk()
-> atm_lec_tbl_walk()
-> atm_lec_misc_walk()
-> atm_lec_tbl_walk()
Each of the dedicated functions follows the same convention: return NULL
as long as the seq_file cursor hasn't been digested (i.e. until < 0).
Locking is only done when an entry (i.e. a lec_arp_table) is referenced.
atm_lec_seq_stop()/atm_lec_itf_walk()/atm_lec_priv_walk() are responsible
for getting this point right.
- module refcounting is done in atm_lec_seq_open()/atm_lec_seq_release();
- atm_lec_info() is removed.
Chas's suggestions applied since last version:
- atm_seq_lec_fops renamed to lec_seq_fops;
- change in state handling: it wasn't correctly set to its reset value
after a complete interface walk;
- lec_arp_get_status_string() bugfix.
Chas Williams [Thu, 11 Sep 2003 11:21:05 +0000 (04:21 -0700)]
[ATM]: seq_file for /proc/net/atm (arp) [6/8] (from romieu@fr.zoreil.com)
seq_file support for /proc/net/atm/arp:
- svc_addr/atmarp_info(): seq_printf/seq_putc replace sprintf and friends;
- arp_getidx/arp_vcc_walk() take care of the usual seq_file cursor
positionning: they both return NULL until the cursor has reached its
position. struct atm_arp_state is updated accordingly;
- arp_seq_{stop/start} are responsible for clip_tbl_hook (un)locking;
- module refcounting is done in arp_seq_open()/arp_seq_release();
- atm_lec_info() is removed.
Chas's suggestions applied since last version:
- atm_arp_xxx renamed to arp_xxx;
- atm_seq_arp_fops renamed to arp_seq_fops.
Chas didn't ask for it but I renamed arp_vc_walk to arp_vcc_walk.
Chas Williams [Thu, 11 Sep 2003 11:18:48 +0000 (04:18 -0700)]
[ATM]: seq_file for /proc/net/atm (pvc) [3/8] (from romieu@fr.zoreil.com)
seq_file support for /proc/net/atm/pvc:
- pvc_info(): seq_printf/seq_putc replaces sprintf;
- atm_pvc_info() removal;
- the vc helpers (vcc__seq_xxx) do the remaining work.
Chas's suggestions applied since last version:
- atm_pvc_xxx renamed to pvc_xxx
- atm_seq_pvc_fops renamed to pvc_seq_fops
Chas Williams [Thu, 11 Sep 2003 11:17:56 +0000 (04:17 -0700)]
[ATM]: seq_file for /proc/net/atm (vc utils) [2/8] (from romieu@fr.zoreil.com)
Helpers for seq_file conversion of proc/atm/{pvc/svc/vc}:
- struct vcc_state keeps
1) the struct sock from which the current struct atm_vcc is deduced
2) the family to which must belong the vcc (PF_ATM{SVC/PVC/any})
3) the availability of clip module
- vcc_seq{start/stop} are responsible for vcc_sklist locking
- __vcc_seq_open and vcc_seq_release take care of get/put for the clip module.
Chas's suggestions applied since last version:
- atm_vc_xxx renamed to vcc_xxx
- atm_vc_common_seq_open renamed __vcc_seq_open (future name clashes
avoidance)
Chas Williams [Thu, 11 Sep 2003 11:16:57 +0000 (04:16 -0700)]
[ATM]: seq_file for /proc/net/atm (devices) [1/8] (from romieu@fr.zoreil.com)
seq_file conversion for proc/atm/devices:
- code inspired from seq_file use in net/core/dev.c;
- atm_dev_lock taken/released in atm_dev_seq_{start/stop};
- add a helper CREATE_SEQ_ENTRY() similar to CREATE_ENTRY() (both are removed
once conversion is done).
- atm_dev_seq_{start/stop/next} done in net/atm/resource.[ch] to ease
future handling of atm_devs and locking structure (per Chas suggestion)
[PATCH] (3/4) dlci locking and registration changes
Change the locking for the dlci device list and registration.
- use RTNL instead of a private lock (needed for net notifier in next patch).
- reorder the checks in the dlci_add to avoid complicated unwinds
- use dev->destructor to free
- hold RTNL around deassoc to protect callback from races
The sdla and dlci drivers have a callback interface which only stores a name
in a table, but doesn't do anything useful. Looks like an interface which has
lost it's usefulness and can be safely removed.
Tested on 2.6.0-test5 by exercising the higher layer (dlci) without real hardware.
Patch against 2.60-test5 to move sdla driver out of Space.c for initialization
in non-module case. Since this driver doesn't come up until the device has
been configured with an ioctl (set_config); there is no way it can have
startup order problems.
Scott Feldman [Thu, 11 Sep 2003 11:11:32 +0000 (07:11 -0400)]
[e1000] Add PHY master/slave #define override
* Add PHY master/slave #define override to address link issues
with 82541/7 (rev2) against some low-end switches. Forcing
master will improve the time-to-link against these switches.
Scott Feldman [Thu, 11 Sep 2003 11:10:40 +0000 (07:10 -0400)]
[e1000] 82544 PCI-X hang fix + TSO updates
* Bug fix: 82544 hang with PCI-X: if outgoing Tx buffers terminate
within evenly-aligned dwords, and the device is sharing the bus
segment with another PCI-X device, 82544 can hang the bus on a
split-completion transaction. Fix is to split buffer into two
buffers with the first one not terminating within evenly-aligned
dword address, and the second one being 4-bytes, which goes as a
non-split-conpletion PCI-X transaction.
* 8254x controllers that support TSO do an internal calculation to
make sure there is enough FIFO space to handle the overhead
of each TSO segment before DMA'ing TSO data from host memory. The
internal calculation is dependent on the mss of the TSO (defines
the number of segments), but the reserved space is a constant, so
we need to adjust the maximum size of each buffer queued to the
hardware to hold the equation and not overrun the FIFO. This is
per TSO because the mss can change from one send to the next.
Scott Feldman [Thu, 11 Sep 2003 11:10:33 +0000 (07:10 -0400)]
[e1000] new 82541/5/6/7 hardware support
* Added 82545 (rev3), 82546 (rev3), and 82541/7 (rev2) support
- new device IDs
- internal SERDES support for 82545/6 (rev3)
- don't apply MMRBC workaround for 82545/6 (rev3)
- don't use IO mapping for reset for 82545/6 (rev3)