An error occurred fetching the project authors.
- 29 Mar, 2004 1 commit
-
-
Andrew Morton authored
From: NeilBrown <neilb@cse.unsw.edu.au> This helps raid5 work on at least 1 very large array.. Thanks to Evan Felix <evan.felix@pnl.gov>
-
- 13 Mar, 2004 1 commit
-
-
Andrew Morton authored
From: NeilBrown <neilb@cse.unsw.edu.au> Use "shedule_timeout()" instead of yield() as it seems to wait for less time.
-
- 12 Mar, 2004 1 commit
-
-
Andrew Morton authored
From: Arjan van de Ven <arjanv@redhat.com> Readahead of raid0 was suboptimal; it read only 1 stride ahead. The problem with this is that while it will keep all spindles busy, it will not actually manage to make larger IO's, eg each disk would just do the chunk size IO. Doing at least 2 chunks is more than appropriate so that each spindle will get a chance to merge IO's. (Neil fixed raid6 and raid6 too)
-
- 18 Feb, 2004 1 commit
-
-
Andrew Morton authored
From: NeilBrown <neilb@cse.unsw.edu.au> With this patch, md used two major numbers for arrays. One Major is number 9 with name 'md' have unpartitioned md arrays, one per minor number. The other Major is allocated dynamically with name 'mdp' and had on array for every 64 minors, allowing for upto 63 partitions. The arrays under one major are completely separate from the arrays under the other. The preferred name for devices with the new major are of the form: /dev/md/d1p3 # partion 3 of device 1 - minor 67 When a paritioned md device is assembled, the partitions are not recognised until after the whole-array device is opened again. A future version of mdadm will perform this open so that the need will be transparent.
-
- 04 Feb, 2004 2 commits
-
-
Andrew Morton authored
From: NeilBrown <neilb@cse.unsw.edu.au> Instead of using ("md%d", mdidx(mddev)), we now use ("%s", mdname(mddev)) where mdname is the disk_name field in the associated gendisk structure. This allows future flexability in naming.
-
Andrew Morton authored
From: NeilBrown <neilb@cse.unsw.edu.au> Update {read,write}{s,_sectors} on each request to an MD array.
-
- 20 Jan, 2004 1 commit
-
-
Andrew Morton authored
From: NeilBrown <neilb@cse.unsw.edu.au> raid5 rebuild takes stripes so agressively that other access cannot get a look-in. With this patch, the rebuild pauses slightly if there is a shortage of stripes to let other processes have a chance. akpm: I was worried about starvation due to the harsh semantics of yield() in 2.6. But Neil has performed specific testing for that and things seem OK. If people do note CPU starvation problems we will need to replace the yield() with a schedule_timeout(1).
-
- 29 Dec, 2003 1 commit
-
-
Andrew Morton authored
From: NeilBrown <neilb@cse.unsw.edu.au> stripe to be effective. This patch sets ra_pages appropriately.
-
- 15 Dec, 2003 1 commit
-
-
Neil Brown authored
1/ make sure raid5 doesn't try to handle multiple overlaping requests at the same time as this would confuse things badly. Currently it justs BUGs if this is attempted. 2/ Fix a possible data-loss-on-write problem. If two or more bio's that write to the same page are processed at the same time, only the first was actually commited to storage. 3/ Fix a use-after-free bug. raid5 keeps the bio's it is given in linked lists when more than one bio touch a single page. In some cases the tail of this list can be freed, and the current test for 'are we at the end' isn't reliable. This patch strengths the test to make it reliable.
-
- 22 Sep, 2003 1 commit
-
-
Neil Brown authored
From: Rusty Russell <rusty@rustcorp.com.au>
-
- 31 Aug, 2003 1 commit
-
-
Neil Brown authored
If we get a failure trying to allocate a stripe_head for a read-ahead request (the only time we can get a failure), we skip the rest of the request and fail the whole bio.
-
- 13 Aug, 2003 1 commit
-
-
Neil Brown authored
raid5 tries to honour RWA_MASK, but messes it up and can return bad data. Just ignore RAW_MASK for now.
-
- 06 Aug, 2003 1 commit
-
-
Jens Axboe authored
To be able to properly be able to keep references to block queues, we make blk_init_queue() return the queue that it initialized, and let it be independently allocated and then cleaned up on the last reference. I have grepped high and low, and there really shouldn't be any broken uses of blk_init_queue() in the kernel drivers left. The added bonus being blk_init_queue() error checking is explicit now, most of the drivers were broken in this regard (even IDE/SCSI). No drivers have embedded request queue structures. Drivers that don't use blk_init_queue() but blk_queue_make_request(), should allocate the queue with blk_alloc_queue(gfp_mask). I've converted all of them to do that, too. They can call blk_cleanup_queue() now too, using the define blk_put_queue() is probably cleaner though.
-
- 10 Jun, 2003 1 commit
-
-
Neil Brown authored
This should fix most (all??) of the recently reported problems with MD: Recent changes to md malloced some data structures differently and didn't zero out those data structures, where the old code had zeroed it out. This adds the relevant memsets.
-
- 04 Jun, 2003 1 commit
-
-
Neil Brown authored
-
- 26 May, 2003 5 commits
-
-
Neil Brown authored
-
Neil Brown authored
One embeded array gets moved to end of structure and sized dynamically.
-
Neil Brown authored
-
Neil Brown authored
If two drives both fail during a write request, raid5 doesn't cope properly and will eventually oops. With this patch, blocks that have already been 'written' are failed when double drive failure is noticed, as well as blocks that are about to be written.
-
Neil Brown authored
Sometimes raid0 and linear are required to take a single page bio that spans two devices. We use bio_split to split such a bio into two. The the same time, bio.h is included by linux/raid/md.h so we don't included it elsewhere anymore. We also modify the mergeable_bvec functions to allow a bvec that doesn't fit if it is the first bvec to be added to the bio, and be careful never to return a negative length from a bvec_mergable funciton.
-
- 03 Apr, 2003 2 commits
-
-
Neil Brown authored
-
Andrew Morton authored
RAID5 is calling copy_data() under sh->lock. But copy_data() does kmap(), which can sleep. The best fix is to use kmap_atomic() in there. It is faster than kmap() and does not block. The patch removes the unused bio_kmap() and replaces __bio_kmap() with __bio_kmap_atomic(). I think it's best to withdraw the sleeping-and-slow bio_kmap() from the kernel API before someone else tries to use it. Also, I notice that bio_kmap_irq() was using local_save_flags(). This is a bug - local_save_flags() does not disable interrupts. Converted that to local_irq_save(). These names are terribly chosen. This patch was acked by Jens and Neil.
-
- 27 Mar, 2003 2 commits
-
-
Neil Brown authored
Thanks to Angus Sawyer <angus.sawyer@dsl.pipex.com> and Daniel McNeil <daniel@osdl.org>
-
Neil Brown authored
Also reformat some printks so lines don't exceed 80chars. Thanks to Angus Sawyer <angus.sawyer@dsl.pipex.com>
-
- 14 Mar, 2003 4 commits
-
-
Neil Brown authored
Normally the data stored on a component of a RAID array is stored from the start of the device. This patch allows a per-device data_offset so the data can start elsewhere. This will allow RAID arrays where the metadata is at the head of the device rather than the tail.
-
Neil Brown authored
The md_recoveryd thread is responsible for initiating and cleaning up resync threads. This job can be equally well done by the per-array threads for those arrays which might need it. So the mdrecoveryd thread is gone and the core code that it ran is now run by raid5d, raid1d or multipathd. We add an MD_RECOVERY_NEEDED flag so those daemon don't have to bother trying to lock the md array unless it is likely that something needs to be done. Also modify the names of all threads to have the number of md device.
-
Neil Brown authored
Md uses ->recovery_running and ->recovery_err to keep track of the status or recovery. This is rather ad hoc and race prone. This patch changes it to ->recovery which has bit flags for various states.
-
Neil Brown authored
From: Angus Sawyer <angus.sawyer@dsl.pipex.com> Mainly straightforward convert of sprintf -> seq_printf. seq_start and seq_next modelled on /proc/partitions. locking/ref counting as for ITERATE_MDDEV. pos == 0 -> header pos == n -> nth mddev pos == 0x10000 -> tail
-
- 17 Feb, 2003 2 commits
-
-
Neil Brown authored
When a raid1 or raid5 array is in 'safe-mode', then the array is marked clean whenever there are no outstanding write requests, and is marked dirty again before allowing any write request to proceed. This means than an unclean shutdown while no write activity is happening will NOT cause a resync to be required. However it does mean extra updates to the superblock. Currently safe-mode is turned on by sending SIGKILL to the raid thread as would happen at a normal shutdown. This should mean that the reboot notifier is no longer needed. After looking more at performance issues I may make safemode be on all the time. I will almost certainly make it on when RAID5 is degraded as an unclean shutdown of a degraded RAID5 means data loss. This code was provided by Angus Sawyer <angus.sawyer@dsl.pipex.com>
-
Neil Brown authored
This allows the thread to easily identified and signalled. The point of signalling will appear in the next patch.
-
- 05 Jan, 2003 1 commit
-
-
Neil Brown authored
Add a new field to the md superblock, in an used area, to record where resync was up-to on a clean shutdown while resync is active. Restart from this point. The extra field is verified by having a second copy of the event counter. If the second event counter is wrong, we ignore the extra field. This patch thanks to Angus Sawyer <angus.sawyer@dsl.pipex.com>
-
- 21 Nov, 2002 1 commit
-
-
Neil Brown authored
-
- 06 Nov, 2002 3 commits
-
-
Neil Brown authored
This allows NFSv3 to manage 4096byte symlinks. Also remove now-unused svcbuf_reserver function. This was used to reserve space in output buffer for 'data', but now this is stored in separate page.
-
Neil Brown authored
A partial block write over a block on a failed device would need to pre-read that block, which means pre-read all blocks in stripe and generate that block. But the generate-block code never checked for this possibility, so it wouldn't happen.
-
Neil Brown authored
When analysing a stripe in handle_stripe we set bits R5_Wantread or R5_Wantwrite to indicate if a read or write is needed. We don't actually schedule the IO immediately as this is done under a spinlock (sh->lock) and generic_make_request can block. Instead we check these bits after the lock has been lifted and then schedule the IO. But once the lock has been lifted we aren't safe against multiple access, and it is possible that the IO will be scheduled never, or twice. So, we use test_and_clear to check and potentially schedule the IO. This wasn't a problem in 2.4 because the equivalent information was stored on the stack instead of in the stripe. We also make sure bi_io_vec[0] has correct values as a previous call to generic_make_request may have changed them.
-
- 09 Oct, 2002 2 commits
-
-
Andrew Morton authored
From Peter Chubb Get rid of need for GCC _udivdi3 and _umoddi3 helper functions - use sector_div more aggressively.
-
Andrew Morton authored
From Peter Chubb Compaq Smart array sector_t cleanup: prepare for possible 64-bit sector_t Clean up loop device to allow huge backing files. MD transition to 64-bit sector_t. - Hold sizes and offsets as sector_t not int; - use 64-bit arithmetic if necessary to map block-in-raid to zone and block-in-zone
-
- 30 Sep, 2002 1 commit
-
-
Jens Axboe authored
These days we only require a clear of BIO_UPTODATE on -EIO, we don't set it on success. This breaks raid5. It appears to clear BIO_UPTODATE fine but doesn't start out with it set.
-
- 18 Sep, 2002 1 commit
-
-
Jens Axboe authored
-
- 12 Sep, 2002 1 commit
-
-
Neil Brown authored
both md.c and raid5.c can be compiled with debugging and compile errors in this code aren't normally noticed as they aren't even compiled. Now the debugging messages are compiled but optimised out so we will always see the errors. Current errors are fixed.
-