dm-bio-record.h 936 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. /*
  2. * Copyright (C) 2004-2005 Red Hat, Inc. All rights reserved.
  3. *
  4. * This file is released under the GPL.
  5. */
  6. #ifndef DM_BIO_RECORD_H
  7. #define DM_BIO_RECORD_H
  8. #include <linux/bio.h>
  9. /*
  10. * There are lots of mutable fields in the bio struct that get
  11. * changed by the lower levels of the block layer. Some targets,
  12. * such as multipath, may wish to resubmit a bio on error. The
  13. * functions in this file help the target record and restore the
  14. * original bio state.
  15. */
  16. struct dm_bio_details {
  17. struct block_device *bi_bdev;
  18. unsigned long bi_flags;
  19. struct bvec_iter bi_iter;
  20. };
  21. static inline void dm_bio_record(struct dm_bio_details *bd, struct bio *bio)
  22. {
  23. bd->bi_bdev = bio->bi_bdev;
  24. bd->bi_flags = bio->bi_flags;
  25. bd->bi_iter = bio->bi_iter;
  26. }
  27. static inline void dm_bio_restore(struct dm_bio_details *bd, struct bio *bio)
  28. {
  29. bio->bi_bdev = bd->bi_bdev;
  30. bio->bi_flags = bd->bi_flags;
  31. bio->bi_iter = bd->bi_iter;
  32. }
  33. #endif