diff options
author | NeilBrown <neilb@cse.unsw.edu.au> | 2005-09-09 16:23:47 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-09-09 16:39:10 -0700 |
commit | 15945fee6f09bff1f86b1a735b5888dc59cf38e3 (patch) | |
tree | ed2f66ceccfa30867035e7ba7be46159e97e4e4d /include | |
parent | 4b6d287f627b5fb6a49f78f9e81649ff98c62bb7 (diff) | |
download | op-kernel-dev-15945fee6f09bff1f86b1a735b5888dc59cf38e3.zip op-kernel-dev-15945fee6f09bff1f86b1a735b5888dc59cf38e3.tar.gz |
[PATCH] md: support md/linear array with components greater than 2 terabytes.
linear currently uses division by the size of the smallest componenet device
to find which device a request goes to. If that smallest device is larger
than 2 terabytes, then the division will not work on some systems.
So we introduce a pre-shift, and take care not to make the hash table too
large, much like the code in raid0.
Also get rid of conf->nr_zones, which is not needed.
Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/raid/linear.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/include/linux/raid/linear.h b/include/linux/raid/linear.h index e04c4fe..7eaf290 100644 --- a/include/linux/raid/linear.h +++ b/include/linux/raid/linear.h @@ -14,8 +14,8 @@ typedef struct dev_info dev_info_t; struct linear_private_data { dev_info_t **hash_table; - dev_info_t *smallest; - int nr_zones; + sector_t hash_spacing; + int preshift; /* shift before dividing by hash_spacing */ dev_info_t disks[0]; }; |