mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-03-18 05:04:04 +00:00
block: move bio_integrity_{intervals,bytes} into blkdev.h
This allows bio_integrity_bytes() to be called from drivers instead of open coding it. Acked-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: Greg Edwards <gedwards@ddn.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
d3df0ac096
commit
359f642700
2 changed files with 34 additions and 22 deletions
|
@ -159,28 +159,6 @@ int bio_integrity_add_page(struct bio *bio, struct page *page,
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(bio_integrity_add_page);
|
EXPORT_SYMBOL(bio_integrity_add_page);
|
||||||
|
|
||||||
/**
|
|
||||||
* bio_integrity_intervals - Return number of integrity intervals for a bio
|
|
||||||
* @bi: blk_integrity profile for device
|
|
||||||
* @sectors: Size of the bio in 512-byte sectors
|
|
||||||
*
|
|
||||||
* Description: The block layer calculates everything in 512 byte
|
|
||||||
* sectors but integrity metadata is done in terms of the data integrity
|
|
||||||
* interval size of the storage device. Convert the block layer sectors
|
|
||||||
* to the appropriate number of integrity intervals.
|
|
||||||
*/
|
|
||||||
static inline unsigned int bio_integrity_intervals(struct blk_integrity *bi,
|
|
||||||
unsigned int sectors)
|
|
||||||
{
|
|
||||||
return sectors >> (bi->interval_exp - 9);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline unsigned int bio_integrity_bytes(struct blk_integrity *bi,
|
|
||||||
unsigned int sectors)
|
|
||||||
{
|
|
||||||
return bio_integrity_intervals(bi, sectors) * bi->tuple_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* bio_integrity_process - Process integrity metadata for a bio
|
* bio_integrity_process - Process integrity metadata for a bio
|
||||||
* @bio: bio to generate/verify integrity metadata for
|
* @bio: bio to generate/verify integrity metadata for
|
||||||
|
|
|
@ -1865,6 +1865,28 @@ static inline bool integrity_req_gap_front_merge(struct request *req,
|
||||||
bip_next->bip_vec[0].bv_offset);
|
bip_next->bip_vec[0].bv_offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* bio_integrity_intervals - Return number of integrity intervals for a bio
|
||||||
|
* @bi: blk_integrity profile for device
|
||||||
|
* @sectors: Size of the bio in 512-byte sectors
|
||||||
|
*
|
||||||
|
* Description: The block layer calculates everything in 512 byte
|
||||||
|
* sectors but integrity metadata is done in terms of the data integrity
|
||||||
|
* interval size of the storage device. Convert the block layer sectors
|
||||||
|
* to the appropriate number of integrity intervals.
|
||||||
|
*/
|
||||||
|
static inline unsigned int bio_integrity_intervals(struct blk_integrity *bi,
|
||||||
|
unsigned int sectors)
|
||||||
|
{
|
||||||
|
return sectors >> (bi->interval_exp - 9);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline unsigned int bio_integrity_bytes(struct blk_integrity *bi,
|
||||||
|
unsigned int sectors)
|
||||||
|
{
|
||||||
|
return bio_integrity_intervals(bi, sectors) * bi->tuple_size;
|
||||||
|
}
|
||||||
|
|
||||||
#else /* CONFIG_BLK_DEV_INTEGRITY */
|
#else /* CONFIG_BLK_DEV_INTEGRITY */
|
||||||
|
|
||||||
struct bio;
|
struct bio;
|
||||||
|
@ -1938,6 +1960,18 @@ static inline bool integrity_req_gap_front_merge(struct request *req,
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline unsigned int bio_integrity_intervals(struct blk_integrity *bi,
|
||||||
|
unsigned int sectors)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline unsigned int bio_integrity_bytes(struct blk_integrity *bi,
|
||||||
|
unsigned int sectors)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* CONFIG_BLK_DEV_INTEGRITY */
|
#endif /* CONFIG_BLK_DEV_INTEGRITY */
|
||||||
|
|
||||||
struct block_device_operations {
|
struct block_device_operations {
|
||||||
|
|
Loading…
Add table
Reference in a new issue