Blame view
drivers/md/dm-bio-record.h
1.59 KB
1da177e4c Linux-2.6.12-rc2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
/* * Copyright (C) 2004-2005 Red Hat, Inc. All rights reserved. * * This file is released under the GPL. */ #ifndef DM_BIO_RECORD_H #define DM_BIO_RECORD_H #include <linux/bio.h> /* * There are lots of mutable fields in the bio struct that get * changed by the lower levels of the block layer. Some targets, * such as multipath, may wish to resubmit a bio on error. The * functions in this file help the target record and restore the * original bio state. */ |
a920f6b3a dm: preserve bi_i... |
19 20 21 22 23 24 25 26 27 28 |
struct dm_bio_vec_details { #if PAGE_SIZE < 65536 __u16 bv_len; __u16 bv_offset; #else unsigned bv_len; unsigned bv_offset; #endif }; |
1da177e4c Linux-2.6.12-rc2 |
29 30 31 32 33 34 |
struct dm_bio_details { sector_t bi_sector; struct block_device *bi_bdev; unsigned int bi_size; unsigned short bi_idx; unsigned long bi_flags; |
a920f6b3a dm: preserve bi_i... |
35 |
struct dm_bio_vec_details bi_io_vec[BIO_MAX_PAGES]; |
1da177e4c Linux-2.6.12-rc2 |
36 37 38 39 |
}; static inline void dm_bio_record(struct dm_bio_details *bd, struct bio *bio) { |
a920f6b3a dm: preserve bi_i... |
40 |
unsigned i; |
1da177e4c Linux-2.6.12-rc2 |
41 42 43 44 45 |
bd->bi_sector = bio->bi_sector; bd->bi_bdev = bio->bi_bdev; bd->bi_size = bio->bi_size; bd->bi_idx = bio->bi_idx; bd->bi_flags = bio->bi_flags; |
a920f6b3a dm: preserve bi_i... |
46 47 48 49 50 |
for (i = 0; i < bio->bi_vcnt; i++) { bd->bi_io_vec[i].bv_len = bio->bi_io_vec[i].bv_len; bd->bi_io_vec[i].bv_offset = bio->bi_io_vec[i].bv_offset; } |
1da177e4c Linux-2.6.12-rc2 |
51 52 53 54 |
} static inline void dm_bio_restore(struct dm_bio_details *bd, struct bio *bio) { |
a920f6b3a dm: preserve bi_i... |
55 |
unsigned i; |
1da177e4c Linux-2.6.12-rc2 |
56 57 58 59 60 |
bio->bi_sector = bd->bi_sector; bio->bi_bdev = bd->bi_bdev; bio->bi_size = bd->bi_size; bio->bi_idx = bd->bi_idx; bio->bi_flags = bd->bi_flags; |
a920f6b3a dm: preserve bi_i... |
61 62 63 64 65 |
for (i = 0; i < bio->bi_vcnt; i++) { bio->bi_io_vec[i].bv_len = bd->bi_io_vec[i].bv_len; bio->bi_io_vec[i].bv_offset = bd->bi_io_vec[i].bv_offset; } |
1da177e4c Linux-2.6.12-rc2 |
66 67 68 |
} #endif |