This Makefile would add irlan/irlan.o to $(obj-m) when selected as
modular, which is wrong. The module will get compiled just fine after
descending into that subdirectory anyway (whereas in the current
directory we have no idea how to build it).
This patch makes nfsd_open use init_private_file to initilize
the file pointer the caller had allocated on stack. In addition
a number of small cleanups:
- format comments to be readable on 80char ANSI terminal
- don't fop_get (and fop_put in nfsd_close), out file already
is a reference to the inode so they can't go away.
- don't decrement f_count on failure - it won't be checked anyway
- don't check for filp->f_op n nfsd_close, it can't be NULL
Separate checks for !FS_REQUIRES_DEV and missing fsid option
and missing export operations, second check for missing export
operations and a small cleanup as side effect.
Neil Brown [Sat, 18 May 2002 05:03:33 +0000 (22:03 -0700)]
[PATCH] Initial md/raid5 support for 2.5 (with bio)
With this patch raid5 works. There is still some more
work to though.
- uses bio instead of buffer_head
- stripe cache is now a fixed size.
If read requests are smaller, we read the whole block anyway
If write reqeusts are smaller, we pre-read.
- stripe_head is now variable sized with an array of structures at
the end. We allocate extra space depending on how many devices
are in the array.
stripe_head has it's very own slab cache.
- store and use bdev for each device in array
by-passing the cache for reads is currently disabled. I need to
think through the implications (and implementation) of allowing
large bion that are larger than the stripe cache to go directly
to the device (if it isn't failed of-course).
Neil Brown [Sat, 18 May 2002 05:03:08 +0000 (22:03 -0700)]
[PATCH] Change MD Superblock IO to go straight to submit_bio
The current code hits the page cache for the block device
which requires memory allocation which can sometimes cause
a deadlock (if it blocks the raid5d thread).
This code takes the page that holds the superblock, and
passes it to submit_bh in a suitable bio wrapper.
Neil Brown [Sat, 18 May 2002 05:02:56 +0000 (22:02 -0700)]
[PATCH] Increase snd buffer size for UDP
I under-allocated the space that RPC needs for transmit on a UDP
socket. We need lots of space to be allowed (though we may not use
much) so that a lack of un-commited transmit space will not cause new
requests to be blocked.
Chris Mason [Sat, 18 May 2002 05:00:03 +0000 (22:00 -0700)]
[PATCH] reiserfs iput deadlock fix
This patch5 changes reiserfs_new_inode to end the transaction on errors
(like -ENOSPC), so that it can call iput without deadlocking against the
journal.
Currently sys_read/sys_pread and sys_write/sys_pwrite basically contain
lots of duplication of the same checks/code.
This moves all that into vfs_read/vfs_write helpers that have the same
prototypes as the read/write file operations. In addition I have
choosen to export these interfaces to module so people doing inkernel
file reading/writing can use these instead of duplicating the checks
(which is very likely to be done wrong).
Dave McCracken [Sat, 18 May 2002 04:36:41 +0000 (21:36 -0700)]
[PATCH] Thread group exit problem reappeared
A long time ago there was thread group code that at exit time tried to
reparent a task to another task in the thread group. I discovered a major
race condition in this code, and submitted a patch that removed it. This
patch was accepted in, I think, 2.4.12. The code reappeared in 2.4.18 and
sometime in the 2.5 tree before 2.5.15, breaking applications that use
thread groups.
As part of chasing this down, I figured out a way to remove the race
condition while still preserving this behavior. I've attached a patch
against 2.5.15 that fixes it.
Jens Axboe [Fri, 17 May 2002 17:02:37 +0000 (10:02 -0700)]
[PATCH] fix scsi oops on failed sg table allocation
This patch fixes the deliberate BUG_ON() on failed sgtable allocations.
I left that in because I was too lazy to fix it at the time...
Basically make scsi_init_io() return 0 on failure (like before) but this
time allow us to recover. scsi_init_io() will end_request on a fatal
condition. So now just mark the device/host as starved if needed, and
leave the request at the front of the queue for next service.
This driver handles up to 16 PCI based NVRAM cards
from MicroMemory.
Each card appears like a block device, and can be partitioned
using any standard partitioning tool. Upto 15 partitions are
supported.
This driver needs its own major device number and so allocates
one using register_blkdev.
Martin Dalecki [Fri, 17 May 2002 16:48:40 +0000 (09:48 -0700)]
[PATCH] 2.5.15 IDE 63
- Propagate the queue handling changes to pmac as well.
- Move set_transfer to ide-taskfile.c this is the only place where it's used
and it can be made static there. Same applies to ide_ata66_check().
- Move ide_auto_reduce_xfer to ide.c.
- Make ide_cmd() local to the only place where it's used. Rename it to
drive_cmd(). Don't pass drive_cmd_intr() as parameter.
- Remove ide_next command completion type. Nobody is using it.
- Move ide_do_drive_cmd to ide-taskfile. It's used there and in sub-drivers.
Not in ide.c. The usage inside the device type drivers is entirely bogus
inconsistent and so on...
- Kill bogus IRQ masking code. The kernel is supposed to handle this properly.
We should not try to work against possible bugs in the overall irq handling
code. Wow this is increasing the systems overall responsibility by a
significant margin.
- Remove disfunctional pdcadma code. It is only misleading to the user.
Martin Dalecki [Fri, 17 May 2002 16:47:35 +0000 (09:47 -0700)]
[PATCH] 2.5.15 IDE 62a
- Streamline device detection reporting to always use ->slot_name.
- Apply 64 bit sector size fixes to the overall code.
- Push ->handler down to the struct ata_channel.
- Introduce channel group based locking instead of a single global lock for all
operations. There are still some places where we have preserved the ide_lock.
We can't lock for queues during device probe and we protect global data
structures during device registration and unregistration in ide.c with it.
- Start replacement of serialized access to the registers of
channels which share them with proper host chip driver specific locking.
This affects the following host chip drivers:
cmd640.c, rz1000, ... ?
Seems some are setting the serialize flag just in case. So better let's do it
gradually over time.
Well, I still have to think whatever we really need to put channels sharing
an IRQ line in the same locking group.
From now on the sick concept of a hw group is gone now. We have full blown
per channel request queues! Hopefully I will be able soon to get my hands on
a dual Athlon machine to check how this all behaves on a multi SMP machine.
- Move the whole SUPPORT_VLB_SYNC stuff to the only place where it is used: the
pdc4030 host chip driver. Eliminate it from the global driver part.
- Eliminate pseudo portability macros from pdc4030. This is a host chip firmly
based on VLB.
Martin Dalecki [Fri, 17 May 2002 16:46:39 +0000 (09:46 -0700)]
[PATCH] 2.5.15 IDE 61
- Fix typo in pdc202xx driver.
- Fix locking order in ioctl.
- Fix wrong time_after usage introduced in 60. Maybe the fact I always get is
wrong is related to the fact that I'm using the mouse with the left hand!?
- Apply arch-clean-2 by Bartlomiej Zolnierkiewicz.
- Don't disable interrupts during ide_wait_stat(). I see no reason too.
- Push flags down from hwgroup to the ata_chaannel structure.
- Apply small fixes from Franz Sirl to make AEC6280 working properly again.
Robert Love [Fri, 17 May 2002 16:42:53 +0000 (09:42 -0700)]
[PATCH] clean up maximum priorities
This patch further cleans up and separates the code in an effort to
allow setting (a) a larger maximum real-time priority than default and
(b) a maximum kernel RT priority that is separate than the maximum
priority exported to user-space.
On arrival of a new message, kernelcapi used to call
capi20_appl::signal(), which, from the application, would call back
to capi20_get_message(). So we rather just push the message down
directly, saving this detour.
ISDN: CAPI use struct capi20_appl * in signal callback
Instead of passing an opaque handle, pass the actual struct capi20_appl,
which is now known to the applications. Applications can store
a pointer to the private data into struct capi20_appl::private.
- Commented out the usb-ohci driver. This is part of the migration away from
this driver, to the ohci-hcd driver.
- Prevented the two UHCI_HCD drivers from both being compiled into the kernel
at the same time.
Georg Acher [Fri, 17 May 2002 02:48:54 +0000 (19:48 -0700)]
[PATCH] USB-UHCI-HCD
After maturing for more than a month, I decided that it's enough...
So here's the patch for the HCD-version of usb-uhci, I called it
usb-uhci-hcd. For me, the usual devices work (TM).
Since the internals haven't changed much, I don't expect much difference to
usb-uhci in functionality and performance.
There is one major improvement: I've added a (preliminary) watchdog, that
regularly checks whether UHCI interrupts are coming through. If they are
"missing", ie. the HC halted without saying so, the HC is "re-animated" by a
real and clean restart, which is (internally) equivalent to a module-reload.
This is especially for VIA-chips which get comatose quite easily by babble
or other incorrect transfers.
The side effect is, of course, disconnects for all connected devices, but
they re-appear after a few seconds and were dead before anyway. So keyboard
and mouse work again, which is IMO a _very_ useful thing :-)
Another point: The watchdog (currently with moderate 8 interrupts/s) detects
IRQ-problems, so the misleading "device doesn't accept new device"-message
is replaced by an immediate error.
More comments and the separation into multiple files (I've taken ohci-hcd as
an example) should make the code more concise...
A few things are still on the todo-list and will come later:
- A few watchdog modifications (fewer interrupts, better diagnostics)
- Support for module "tune"-parameters for breadth/depth search, debug etc.
- interval support for ISO
- More SMP-tests
- maybe changes for reference counting when it is clear what survives :-)
Johannes Erdfelt [Thu, 16 May 2002 04:50:34 +0000 (21:50 -0700)]
[PATCH] 2.4.19-pre8 uhci.c incorrect bit operations
This fixes up a couple of problems I came across while working on
uhci-hcd. There are a couple of places where shifts are used where they
shouldn't be and others where should be.
This cleans up a couple of cases and tidys it up.
The patch is relative to 2.4.19-pre8 and my other patches, but it's
alright to wait for 2.4.20. It should also be applied to 2.5.
Johannes Erdfelt [Thu, 16 May 2002 04:09:10 +0000 (21:09 -0700)]
[PATCH] uhci-hcd for 2.5.15
So I finally hunkered down and got uhci-hcd working. I was surprised how
easy it was to make the modifications for hcd.c.
This patch has received a moderate amount of testing so far. I've played
with various devices and haven't had any problems. I won't claim it's
bug free yet and I'll continue doing more testing.
The patch includes a small change to hcd.c to not call free_config if
the HCD doesn't implement it.
There are some other messages that get printed such as:
hcd.c: usb_hcd_pci_remove 00:10.0, count != 1
but it appears from the code that this is just a soft warning that all
of the references to the bus aren't freed yet. This isn't a bug.
Differences from usb-uhci/usb-uhci-hcd:
- Cleaner code. uhci-hcd is based off of uhci, so it maintains the same
look and feel as well as readability.
- Faster. The tests I've run so far show that uhci-hcd is faster in
every case than usb-uhci-hcd
- It does not have the watchdog type feature for VIA chipsets. It's
something that is definately possible to implement, but I'd like to
find out what Windows does first.
Differences from uhci:
- Modified to use the hcd.c framework. This removed a significant amount
of code and nesessitated lots of little changes.
- Big endian support. I haven't been able to test it on a big endian
machine yet, but atleast 90+% of the work should be done. Once I get
my PowerPC working again, I'll test this and submit any appropriate
patches. This was the biggest functional change between uhci.c.
- No more urb->next processing. Completely ripped out.
- urb->interval support for Isochronous pipes.
- A couple of bug fixes for some problems I noticed while working on the
code. These will be submitted for uhci.c in a seperate email.
Make AFLAGS_KERNEL use consistent with CFLAGS_KERNEL
CFLAGS_KERNEL is automatically added to the command line for compiling
objects which will be linked into vmlinux. (As opposed to objects which
will be in modules, where MODFLAGS is added).
AFLAGS_KERNEL was not added automatically, now it is:
AFLAGS_KERNEL is now automatically added to the command line for assembling
objects which will be linked into vmlinux.
Note: this change is a no-op for all archs except IA64, since
[AC]FLAGS_KERNEL is not used there at all.
At the same time, remove two assembling rules from two arch/ia64
subdirectories which don't contain any assembler sources at all.
Also, add an @ in front of the ugly
make CFLAGS=".." AFLAGS=".." -C subdir
command, make will print its "Entering directory ..." line, so
we get that information anyway.
[PATCH] USB device reference counting api cleanup changes
This patch replaces the awkwardly named usb_inc_dev_use() and
usb_dec_dev_use() with usb_get_dev() and usb_put_dev() to match the
naming convention of the rest of the kernel's reference counted
structures. It also does away with the special case of usb_free_dev(),
and has usb_put_dev() be the same thing (through a #define, just like
usb_free_urb() works.)
Now when the last person calls usb_put_dev() or usb_free_dev() the
structure is cleaned up. This allows the different host controller
drivers to implement their logic differently if they want to (as they
do), and everyone can be happy and stop arguing about the "proper" way
to write their host controller drivers :)
Johannes Erdfelt [Mon, 13 May 2002 07:48:22 +0000 (00:48 -0700)]
[PATCH] USB device reference counting fix for uhci.c and usb core
Earlier in the 2.5 development cycle a patch was applied that changed
the reference counting behaviour for USB devices.
There are a couple of problems with the change:
- It made the USB code more complicated as a whole with the introduction
of an additional cleanup path for devices. Using the traditional method
of reference counting, cleanup is handled implictly
- It reduces functionality by requiring a callback for all references to
the device, but doesn't provide a method of providing callbacks for
references. It relies on the hardcoded device driver ->disconnect and
HCD ->deallocate method for callbacks
The traditional method of using reference counting supports as many
reference users as needed, without complicating it with mandatory
callbacks to cleanup references.
The change in 2.5 also only helps catch one subset of programming
problem in device drivers, the case where it decrements too many times.
That is of dubious debugging value.
So, this patch reverts the change and makes the reference counting
behave like it does in the rest of the kernel as well as how the USB
code does in 2.4.
This patch doesn't remove all of the superfluous code. Some drivers,
like usb-ohci, ohci-hcd and ehci-hcd have some code that is no longer
needed. I wanted to spend some more time with those drivers since the
changes weren't as trivial as uhci.c and usb-uhci.c.
I've tested with uhci and usb-ohci with no adverse effects.
Manfred Spraul [Mon, 13 May 2002 07:25:19 +0000 (00:25 -0700)]
[PATCH] usb-storage locking fixes
I found several SMP and UP locking errors in usb-storage, attached is a
patch:
Changes:
* srb->result is a bitfield, several << 1 were missing.
* add scsi_lock calls around midlayer calls, release the lock before
calling usb functions that might sleep.
* replace the queue semaphore with a queue spinlocks, queuecommand is
called from bh context.