btrfs: raid56: make btrfs_raid_bio more compact
There are a lot of members using much larger type in btrfs_raid_bio than necessary, like nr_pages which represents the total number of a full stripe. Instead of int (which is at least 32bits), u16 is already enough (max stripe length will be 256MiB, already beyond current RAID56 device number limit). So this patch will reduce the width of the following members: - stripe_len to u32 - nr_pages to u16 - nr_data to u8 - real_stripes to u8 - scrubp to u8 - faila/b to s8 As -1 is used to indicate no corruption This will slightly reduce the size of btrfs_raid_bio from 272 bytes to 256 bytes, reducing 16 bytes usage. But please note that, when using btrfs_raid_bio, we allocate extra space for it to cover various pointer array, so the reduce memory is not really a big saving overall. As we're here modifying the comments already, update existing comments to current code standard. Signed-off-by: Qu Wenruo <wqu@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
843de58b3e
commit
29b068382c
|
@ -101,15 +101,6 @@ struct btrfs_raid_bio {
|
||||||
*/
|
*/
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
/* size of each individual stripe on disk */
|
|
||||||
int stripe_len;
|
|
||||||
|
|
||||||
/* number of data stripes (no p/q) */
|
|
||||||
int nr_data;
|
|
||||||
|
|
||||||
int real_stripes;
|
|
||||||
|
|
||||||
int stripe_npages;
|
|
||||||
/*
|
/*
|
||||||
* set if we're doing a parity rebuild
|
* set if we're doing a parity rebuild
|
||||||
* for a read from higher up, which is handled
|
* for a read from higher up, which is handled
|
||||||
|
@ -118,18 +109,29 @@ struct btrfs_raid_bio {
|
||||||
*/
|
*/
|
||||||
enum btrfs_rbio_ops operation;
|
enum btrfs_rbio_ops operation;
|
||||||
|
|
||||||
/* first bad stripe */
|
/* Size of each individual stripe on disk */
|
||||||
int faila;
|
u32 stripe_len;
|
||||||
|
|
||||||
/* second bad stripe (for raid6 use) */
|
/* How many pages there are for the full stripe including P/Q */
|
||||||
int failb;
|
u16 nr_pages;
|
||||||
|
|
||||||
int scrubp;
|
/* Number of data stripes (no p/q) */
|
||||||
/*
|
u8 nr_data;
|
||||||
* number of pages needed to represent the full
|
|
||||||
* stripe
|
/* Numer of all stripes (including P/Q) */
|
||||||
*/
|
u8 real_stripes;
|
||||||
int nr_pages;
|
|
||||||
|
/* How many pages there are for each stripe */
|
||||||
|
u8 stripe_npages;
|
||||||
|
|
||||||
|
/* First bad stripe, -1 means no corruption */
|
||||||
|
s8 faila;
|
||||||
|
|
||||||
|
/* Second bad stripe (for RAID6 use) */
|
||||||
|
s8 failb;
|
||||||
|
|
||||||
|
/* Stripe number that we're scrubbing */
|
||||||
|
u8 scrubp;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* size of all the bios in the bio_list. This
|
* size of all the bios in the bio_list. This
|
||||||
|
|
Loading…
Reference in New Issue