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.
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)
Matt Domsch [Thu, 11 Sep 2003 07:27:15 +0000 (00:27 -0700)]
[PATCH] PCI: make new_id rely on CONFIG_HOTPLUG
> > These either need to be marked __devinit and make "new_id" dependant on
> > CONFIG_HOTPLUG
Patch below moves all the new_id code under CONFIG_HOTPLUG. Tested
with both CONFIG_HOTPLUG enabled and disabled. No significant code
changes, merely code moving, and in 2 cases, stub functions added.
Nick Piggin [Thu, 11 Sep 2003 00:06:46 +0000 (17:06 -0700)]
[PATCH] Badness in as_completed_request warning
Thish fixes Suparna's fsx and aio-stress and Dave Olien's concurrent
mke2fs problems.
It moves the hash adding into as_add_request. This fixes a small bug
where a request could be added to the merge hash after being put on the
dispatch list.
It also moves responsibility for handling rbtree aliases (requests with
the same start sector) out of as_add_arq_rb and into its caller. This
cleans up a layering problem which was causing the state machine to go
silly. Now instead of forcing the alias out onto the dispatch list, we
chain the new request behind it, and they get sorted out at dispatch
time.
A colleague reported that the keyboard of his brandnew laptop
is dead under 2.6 while 2.4 works.
Now I once wrote
In order to avoid interference between scancode sequences
or mouse packets and the reponses given to commands,
the keyboard or mouse should always be disabled before
giving a command that requires a response, and probably
enabled afterwards. Some keyboards or mice do the disable
automatically in this situation, but still require an
explicit enable afterwards.
This is what happens on this laptop. The routine atkbd_probe()
probes for a keyboard, and after detecting it, enables it.
But immediately afterwards the routine atkbd_set_3() reads
the current scancode set and sets the desired set, and as a
side effect of these commands, the keyboard gets disabled again.
Thus, the keyboard enable must be moved after all command sending
has been done.
Now that I patch this area anyway: we are almost always in
scancode set 2 but send the ATKBD_CMD_SETALL_MB command
that only works in scancode set 3. At best this is useless.
At worst it confuses the keyboard. So, I put this command
in a separate routine and call that only when we really
are in scancode set 3.