| Age | Commit message (Collapse) | Author |
|
The nb_dev field is not needed.
Most uses are the test if it is zero or not, and they can be replaced
by tests on the emptiness of the disks list.
Other uses are for iterating through devices in numerical order and
it makes the code clearer (IMO) to unroll the devices into an array first
(which has to be done at some stage anyway) and then walk that array.
This makes ITERATE_RDEV_ORDERED un-necessary.
Also remove the "name" field which is never used.
|
|
make_request functions.
As we now have per-device queues, we don't need a common make_request
function that dispatches, we can dispatch directly.
Each *_make_request function is changed to take a request_queue_t
from which it extract the mddev that it needs, and to deduce the
"rw" flag directly from the bio.
|
|
It isn't needed. Only the chunksize is used, and it
can be found in the superblock.
|
|
We embed a request_queue_t in the mddev structure and so
have a separate one for each mddev.
This is used for plugging (in raid5).
Given this embeded request_queue_t, md_make_request no-longer
needs to make from device number to mddev, but can map from
the queue to the mddev instead.
|
|
highmem.h includes bio.h, so just about every compilation unit in the
kernel gets to process bio.h.
The patch moves the BIO-related functions out of highmem.h and into
bio-related headers. The nested include is removed and all files which
need to include bio.h now do so.
|
|
This should be the last of tq_disk, at least the trivial ones. md still
has some queue_task references, I'll let Ingo/Neil clean those up.
suspend is still broken, it was broken before too though. I guess Pavel
will want to fix that.
Also, I've documented the plug functions.
|
|
The lock.h header contained some hand-crafted lcoking routines from
the pre-SMP days. In 2.5 only lock_super/unlock_super are left,
guarded by a number of completly unrelated (!) includes.
This patch moves lock_super/unlock_super to fs.h, which defined
struct super_block that is needed for those to operate it, removes
locks.h and updates all caller to not include it and add the missing,
previously nested includes where needed.
|
|
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).
|
|
- remove md_ prefix from some calls that used to be
defined in md_compatability.h
- remove "raid5_" prefix from some static functions,
in line with recent changes to raid1.c
?? should cpu_has_mmx be moved to in processor.h ?
|
|
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.
|
|
- switch md_error() to struct block_device * - just cleaning up
after ->bi_dev switch.
|
|
- *NOW* all places that (re)assign ->bi_dev have relevant struct
block_device *. ->bi_bdev (struct block_device * equivalent of
->bi_dev) introduced, ->bi_dev removed, users updated.
|
|
- md/linear.c - bring struct block_device * into private data.
|
|
- md/raid1.c - bring struct block_device * into private data.
|
|
- md/multipath.c convert to bio, compile fixes, bring struct
block_device * into private data.
|
|
We have to include linux/bitops.h for arch using generic_xxx().
The following patch changes <asm/bitops.h> of include/linux/* to
<linux/bitops.h>.
|
|
I'd like to be able to claim amazing speedups, but
the best benchmark I could find was diffing two
256 megabyte files, which is about 10% quicker. And
that is probably due to the window size being effectively
50% larger.
Fact is, any disk worth owning nowadays has a segmented
2-megabyte cache, and OS-level readahead mainly seems
to save on CPU cycles rather than overall throughput.
Once you start reading more streams than there are segments
in the disk cache we start to win.
Still. The main motivation for this work is to
clean the code up, and to create a central point at
which many pages are marshalled together so that
they can all be encapsulated into the smallest possible
number of BIOs, and injected into the request layer.
A number of filesystems were poking around inside the
readahead state variables. I'm not really sure what they
were up to, but I took all that out. The readahead
code manages its own state autonomously and should not
need any hints.
- Unifies the current three readahead functions (mmap reads, read(2)
and sys_readhead) into a single implementation.
- More aggressive in building up the readahead windows.
- More conservative in tearing them down.
- Special start-of-file heuristics.
- Preallocates the readahead pages, to avoid the (never demonstrated,
but potentially catastrophic) scenario where allocation of readahead
pages causes the allocator to perform VM writeout.
- Gets all the readahead pages gathered together in
one spot, so they can be marshalled into big BIOs.
- reinstates the readahead ioctls, so hdparm(8) and blockdev(8)
are working again. The readahead settings are now per-request-queue,
and the drivers never have to know about it. I use blockdev(8).
It works in units of 512 bytes.
- Identifies readahead thrashing.
Also attempts to handle it. Certainly the changes here
delay the onset of catastrophic readahead thrashing by
quite a lot, and decrease it seriousness as we get more
deeply into it, but it's still pretty bad.
|
|
A few follow ups to the cleanup done circa 2.5.4
|
|
- Davide Libenzi: nicer timeslices for scheduler
- Arnaldo: wd7000 scsi driver cleanups and bio update
- Greg KH: USB update (including initial 2.0 support)
- me: strict typechecking on "kdev_t"
|
|
- me: revert the "kill(-1..)" change. POSIX isn't that clear on the
issue anyway, and the new behaviour breaks things.
- Jens Axboe: more bio updates
- Al Viro: rd_load cleanups. hpfs mount fix, mount cleanups
- Ingo Molnar: more raid updates
- Jakub Jelinek: fix Linux/x86 confusion about arg passing of "save_v86_state" and "do_signal"
- Trond Myklebust: fix NFS client race conditions
|
|
- Jeff Garzik: no longer support old cards in tulip driver
(see separate driver for old tulip chips)
- Pat Mochel: driverfs/device model documentation
- Ballabio Dario: update eata driver to new IO locking
- Ingo Molnar: raid resync with new bio structures (much more efficient)
and mempool_resize()
- Jens Axboe: bio queue locking
|
|
- Greg KH: USB update
- Richard Gooch: refcounting for devfs
- Jens Axboe: start of new block IO layer
|
|
- Mikael Pettersson: make proc_misc happy without modules
- Arjan van de Ven: clean up acpitable implementation ("micro-acpi")
- Anton Altaparmakov: LDM partition code update
- Alan Cox: final (yeah, sure) small missing pieces
- Andrey Savochkin/Andrew Morton: eepro100 config space save/restore over suspend
- Arjan van de Ven: remove power from pcmcia socket on card remove
- Greg KH: USB updates
- Neil Brown: multipath updates
- Martin Dalecki: fix up some "asmlinkage" routine markings
|
|
- Alan Cox: continued merging
- Mingming Cao: make msgrcv/shmat check the queue/segment ID's properly
- Greg KH: USB serial init failure fix, Xircom serial converter driver
- Neil Brown: nsfd/raid/md/lockd cleanups
- Ingo Molnar: multipath RAID personality, raid xor update
- Hugh Dickins/Marcelo Tosatti: swapin read-ahead race fix
- Vojtech Pavlik: fix up some of the infrastructure for x86-64
- Robert Love: AMD 761 AGP GART support
- Jens Axboe: fix SCSI-generic queue handling race
- me: be sane about page reference bits
|
|
- Jens Axboe: remove trivially dead io_request_lock usage
- Andrea Arcangeli: softirq cleanup and ARM fixes. Slab cleanups
- Christoph Hellwig: gendisk handling helper functions/cleanups
- Nikita Danilov: reiserfs dead code pruning
- Anton Altaparmakov: NTFS update to 1.1.18
- firestream network driver: patch reverted on authors request
- NIIBE Yutaka: SH architecture update
- Paul Mackerras: PPC cleanups, PPC8xx update.
- me: reverse broken bootdata allocation patch that went into pre5
|
|
- Rui Sousa: emu10k1 module fixes, remove joystick part.
- Alan Cox: driver merges
- Andrea Arkangeli: alpha updates
- David Woodhouse: up_and_exit -> complete_and_exit
- David Miller: sparc and network update
- Andrew Morton: update 3c59x driver
- Neil Brown: NFS export VFAT, knfsd cleanups, raid fixes
- Ben Collins: ieee1394 updates
- Paul Mackerras: PPC update
- me: make sure we don't lose position bits in "filldir()"
|
|
- Anton Altaparmakov: NTFS error checking
- Johannes Erdfelt: USB updates
- OGAWA Hirofumi: FAT update
- Alan Cox: driver + s390 update merge
- Richard Henderson: fix alpha sigsuspend error return value
- Marcelo Tosatti: per-zone VM shortage
- Daniel Phillips: generic use-once optimization instead of drop-behind
- Bjorn Wesen: Cris architecture update
- Anton Altaparmakov: support for Windows Dynamic Disks
- James Washer: LDT loading SMP bug fix
|
|
- Johannes Erdfelt: USB update (bluetooth and serial)
- Andrew Grover: ACPI update for _real_ this time.
- Neil Brown: md update
- Keith Owens: kbuild script fix, do_softirq versioning fix
- David Miller: sparc and portability updates
|
|
- Al Viro: fs cleanups
- David Miller: sparc semaphores
- Christoph Hellwig: VxFS update
- Asit Mallick: set machine check bit with set_in_cr4
- Richard Henderson: fix alpha pci_controller_num(), sg_fill, SRM poweroff.
- Johannes Erdfelt: USB updates
- Cort Dougan: bitkeeper Id's on the ppc side
- Matt Chapman: NFS file locking SMP lock fix
- Alan Cox: further merging
|
|
- Al Viro: sanity-check user arguments, zero-terminated strings etc.
- Urban Widmark: smbfs update (server/client cache coherency etc)
- Rik van Riel, Marcelo Tosatti: VM updates
- Cort Dougan: PPC updates
- Neil Brown: raid1/5 failed drive fixups, NULL ptr checking, md error cleanup
- Neil Brown: knfsd fix for 64-bit architectures, and filehandle resolveir
- Ken Brownfield: workaround for menuconfig CPU selection glitch
- David Miller: sparc64 MM setup fix, arpfilter forward port
- Keith Owens: Remove obsolete IPv6 provider based addressing
- Jari Ruusu: block_write error case cleanup fix
- Jeff Garzik: netdriver update
|
|
- Jens: better ordering of requests when unable to merge
- Neil Brown: make md work as a module again (we cannot autodetect
in modules, not enough background information)
- Neil Brown: raid5 SMP locking cleanups
- Neil Brown: nfsd: handle Irix NFS clients named pipe behavior and
dentry leak fix
- maestro3 shutdown fix
- fix dcache hash calculation that could cause bad hashes under certain
circumstances (Dean Gaudet)
- David Miller: networking and sparc updates
- Jeff Garzik: include file cleanups
- Andy Grover: ACPI update
- Coda-fs error return fixes
- rth: alpha Jensen update
|
|
- Get non-cpuid Cyrix probing right (it's not a NexGen)
- Jens Axboe: cdrom tray status and queing cleanups
- AGP GART: don't disable VIA, and allow i815 with external AGP
- Coda: use iget4() in order to have big inode numbers without clashes.
- Fix UDF writepage() page locking
- NIIBE Yutaka: SuperH update
- Martin Diehl and others: SiS pirq routing fixes
- Andy Grover: ACPI update
- Andrea Arkangeli: LVM update
- Ingo Molnar: RAID cleanups
- David Miller: sparc and networking updates
- Make NFS really be able to handle large files
|
|
|