root/drivers/md/dm-bio-record.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. dm_bio_record
  2. dm_bio_restore

   1 /*
   2  * Copyright (C) 2004-2005 Red Hat, Inc. All rights reserved.
   3  *
   4  * This file is released under the GPL.
   5  */
   6 
   7 #ifndef DM_BIO_RECORD_H
   8 #define DM_BIO_RECORD_H
   9 
  10 #include <linux/bio.h>
  11 
  12 /*
  13  * There are lots of mutable fields in the bio struct that get
  14  * changed by the lower levels of the block layer.  Some targets,
  15  * such as multipath, may wish to resubmit a bio on error.  The
  16  * functions in this file help the target record and restore the
  17  * original bio state.
  18  */
  19 
  20 struct dm_bio_details {
  21         struct gendisk *bi_disk;
  22         u8 bi_partno;
  23         int __bi_remaining;
  24         unsigned long bi_flags;
  25         struct bvec_iter bi_iter;
  26         bio_end_io_t *bi_end_io;
  27 #if defined(CONFIG_BLK_DEV_INTEGRITY)
  28         struct bio_integrity_payload *bi_integrity;
  29 #endif
  30 };
  31 
  32 static inline void dm_bio_record(struct dm_bio_details *bd, struct bio *bio)
  33 {
  34         bd->bi_disk = bio->bi_disk;
  35         bd->bi_partno = bio->bi_partno;
  36         bd->bi_flags = bio->bi_flags;
  37         bd->bi_iter = bio->bi_iter;
  38         bd->__bi_remaining = atomic_read(&bio->__bi_remaining);
  39         bd->bi_end_io = bio->bi_end_io;
  40 #if defined(CONFIG_BLK_DEV_INTEGRITY)
  41         bd->bi_integrity = bio_integrity(bio);
  42 #endif
  43 }
  44 
  45 static inline void dm_bio_restore(struct dm_bio_details *bd, struct bio *bio)
  46 {
  47         bio->bi_disk = bd->bi_disk;
  48         bio->bi_partno = bd->bi_partno;
  49         bio->bi_flags = bd->bi_flags;
  50         bio->bi_iter = bd->bi_iter;
  51         atomic_set(&bio->__bi_remaining, bd->__bi_remaining);
  52         bio->bi_end_io = bd->bi_end_io;
  53 #if defined(CONFIG_BLK_DEV_INTEGRITY)
  54         bio->bi_integrity = bd->bi_integrity;
  55 #endif
  56 }
  57 
  58 #endif

/* [<][>][^][v][top][bottom][index][help] */