cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

dm-bio-record.h (1453B)


      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#include <linux/blk-integrity.h>
     12
     13/*
     14 * There are lots of mutable fields in the bio struct that get
     15 * changed by the lower levels of the block layer.  Some targets,
     16 * such as multipath, may wish to resubmit a bio on error.  The
     17 * functions in this file help the target record and restore the
     18 * original bio state.
     19 */
     20
     21struct dm_bio_details {
     22	struct block_device *bi_bdev;
     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
     32static inline void dm_bio_record(struct dm_bio_details *bd, struct bio *bio)
     33{
     34	bd->bi_bdev = bio->bi_bdev;
     35	bd->bi_flags = bio->bi_flags;
     36	bd->bi_iter = bio->bi_iter;
     37	bd->__bi_remaining = atomic_read(&bio->__bi_remaining);
     38	bd->bi_end_io = bio->bi_end_io;
     39#if defined(CONFIG_BLK_DEV_INTEGRITY)
     40	bd->bi_integrity = bio_integrity(bio);
     41#endif
     42}
     43
     44static inline void dm_bio_restore(struct dm_bio_details *bd, struct bio *bio)
     45{
     46	bio->bi_bdev = bd->bi_bdev;
     47	bio->bi_flags = bd->bi_flags;
     48	bio->bi_iter = bd->bi_iter;
     49	atomic_set(&bio->__bi_remaining, bd->__bi_remaining);
     50	bio->bi_end_io = bd->bi_end_io;
     51#if defined(CONFIG_BLK_DEV_INTEGRITY)
     52	bio->bi_integrity = bd->bi_integrity;
     53#endif
     54}
     55
     56#endif