diff options
author | Thomas Bertschinger <tahbertschinger@gmail.com> | 2024-01-15 23:41:02 -0700 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2024-01-16 01:47:05 -0500 |
commit | f5baaf48e3e82b1caf9f5cd1207d4d6feba3a2e5 (patch) | |
tree | 59f7b0e4667df7a9d3d5a45725f2aaab3e79b4c5 /include/linux/blk_types.h | |
parent | fb35dbfdc5a9446fbb856dae5542b23963e28b89 (diff) |
move Rust sources to top level, C sources into c_src
This moves the Rust sources out of rust_src/ and into the top level.
Running the bcachefs executable out of the development tree is now:
$ ./target/release/bcachefs command
or
$ cargo run --profile release -- command
instead of "./bcachefs command".
Building and installing is still:
$ make && make install
Signed-off-by: Thomas Bertschinger <tahbertschinger@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'include/linux/blk_types.h')
-rw-r--r-- | include/linux/blk_types.h | 247 |
1 files changed, 0 insertions, 247 deletions
diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h deleted file mode 100644 index 80560ab6..00000000 --- a/include/linux/blk_types.h +++ /dev/null @@ -1,247 +0,0 @@ -/* - * Block data types and constants. Directly include this file only to - * break include dependency loop. - */ -#ifndef __LINUX_BLK_TYPES_H -#define __LINUX_BLK_TYPES_H - -#include <linux/atomic.h> -#include <linux/types.h> -#include <linux/bvec.h> -#include <linux/kobject.h> - -struct bio_set; -struct bio; -typedef void (bio_end_io_t) (struct bio *); - -#define BDEVNAME_SIZE 32 - -struct request_queue { - struct backing_dev_info *backing_dev_info; -}; - -struct gendisk { - struct backing_dev_info *bdi; - struct backing_dev_info __bdi; -}; - -struct hd_struct { - struct kobject kobj; -}; - -struct block_device { - struct kobject kobj; - dev_t bd_dev; - char name[BDEVNAME_SIZE]; - struct inode *bd_inode; - struct request_queue queue; - void *bd_holder; - struct gendisk * bd_disk; - struct gendisk __bd_disk; - int bd_fd; -}; - -#define bdev_kobj(_bdev) (&((_bdev)->kobj)) - -/* - * Block error status values. See block/blk-core:blk_errors for the details. - */ -typedef u8 __bitwise blk_status_t; -#define BLK_STS_OK 0 -#define BLK_STS_NOTSUPP ((__force blk_status_t)1) -#define BLK_STS_TIMEOUT ((__force blk_status_t)2) -#define BLK_STS_NOSPC ((__force blk_status_t)3) -#define BLK_STS_TRANSPORT ((__force blk_status_t)4) -#define BLK_STS_TARGET ((__force blk_status_t)5) -#define BLK_STS_NEXUS ((__force blk_status_t)6) -#define BLK_STS_MEDIUM ((__force blk_status_t)7) -#define BLK_STS_PROTECTION ((__force blk_status_t)8) -#define BLK_STS_RESOURCE ((__force blk_status_t)9) -#define BLK_STS_IOERR ((__force blk_status_t)10) - -/* hack for device mapper, don't use elsewhere: */ -#define BLK_STS_DM_REQUEUE ((__force blk_status_t)11) - -#define BLK_STS_AGAIN ((__force blk_status_t)12) - -#define BIO_INLINE_VECS 4 - -/* - * main unit of I/O for the block layer and lower layers (ie drivers and - * stacking drivers) - */ -struct bio { - struct bio *bi_next; /* request queue link */ - struct block_device *bi_bdev; - blk_status_t bi_status; - unsigned int bi_opf; /* bottom bits req flags, - * top bits REQ_OP. Use - * accessors. - */ - unsigned short bi_flags; /* status, command, etc */ - unsigned short bi_ioprio; - - struct bvec_iter bi_iter; - - atomic_t __bi_remaining; - - bio_end_io_t *bi_end_io; - void *bi_private; - - unsigned short bi_vcnt; /* how many bio_vec's */ - - /* - * Everything starting with bi_max_vecs will be preserved by bio_reset() - */ - - unsigned short bi_max_vecs; /* max bvl_vecs we can hold */ - - atomic_t __bi_cnt; /* pin count */ - - struct bio_vec *bi_io_vec; /* the actual vec list */ - - struct bio_set *bi_pool; - - /* - * We can inline a number of vecs at the end of the bio, to avoid - * double allocations for a small number of bio_vecs. This member - * MUST obviously be kept at the very end of the bio. - */ - struct bio_vec bi_inline_vecs[0]; -}; - -#define BIO_RESET_BYTES offsetof(struct bio, bi_max_vecs) - -/* - * bio flags - */ -#define BIO_SEG_VALID 1 /* bi_phys_segments valid */ -#define BIO_CLONED 2 /* doesn't own data */ -#define BIO_BOUNCED 3 /* bio is a bounce bio */ -#define BIO_USER_MAPPED 4 /* contains user pages */ -#define BIO_NULL_MAPPED 5 /* contains invalid user pages */ -#define BIO_QUIET 6 /* Make BIO Quiet */ -#define BIO_CHAIN 7 /* chained bio, ->bi_remaining in effect */ -#define BIO_REFFED 8 /* bio has elevated ->bi_cnt */ - -/* - * Flags starting here get preserved by bio_reset() - this includes - * BVEC_POOL_IDX() - */ -#define BIO_RESET_BITS 10 - -/* - * We support 6 different bvec pools, the last one is magic in that it - * is backed by a mempool. - */ -#define BVEC_POOL_NR 6 -#define BVEC_POOL_MAX (BVEC_POOL_NR - 1) - -/* - * Top 4 bits of bio flags indicate the pool the bvecs came from. We add - * 1 to the actual index so that 0 indicates that there are no bvecs to be - * freed. - */ -#define BVEC_POOL_BITS (4) -#define BVEC_POOL_OFFSET (16 - BVEC_POOL_BITS) -#define BVEC_POOL_IDX(bio) ((bio)->bi_flags >> BVEC_POOL_OFFSET) - -/* - * Operations and flags common to the bio and request structures. - * We use 8 bits for encoding the operation, and the remaining 24 for flags. - * - * The least significant bit of the operation number indicates the data - * transfer direction: - * - * - if the least significant bit is set transfers are TO the device - * - if the least significant bit is not set transfers are FROM the device - * - * If a operation does not transfer data the least significant bit has no - * meaning. - */ -#define REQ_OP_BITS 8 -#define REQ_OP_MASK ((1 << REQ_OP_BITS) - 1) -#define REQ_FLAG_BITS 24 - -enum req_opf { - /* read sectors from the device */ - REQ_OP_READ = 0, - /* write sectors to the device */ - REQ_OP_WRITE = 1, - /* flush the volatile write cache */ - REQ_OP_FLUSH = 2, - /* discard sectors */ - REQ_OP_DISCARD = 3, - /* get zone information */ - REQ_OP_ZONE_REPORT = 4, - /* securely erase sectors */ - REQ_OP_SECURE_ERASE = 5, - /* seset a zone write pointer */ - REQ_OP_ZONE_RESET = 6, - /* write the same sector many times */ - REQ_OP_WRITE_SAME = 7, - /* write the zero filled sector many times */ - REQ_OP_WRITE_ZEROES = 8, - - /* SCSI passthrough using struct scsi_request */ - REQ_OP_SCSI_IN = 32, - REQ_OP_SCSI_OUT = 33, - /* Driver private requests */ - REQ_OP_DRV_IN = 34, - REQ_OP_DRV_OUT = 35, - - REQ_OP_LAST, -}; - -enum req_flag_bits { - __REQ_FAILFAST_DEV = /* no driver retries of device errors */ - REQ_OP_BITS, - __REQ_FAILFAST_TRANSPORT, /* no driver retries of transport errors */ - __REQ_FAILFAST_DRIVER, /* no driver retries of driver errors */ - __REQ_SYNC, /* request is sync (sync write or read) */ - __REQ_META, /* metadata io request */ - __REQ_PRIO, /* boost priority in cfq */ - __REQ_NOMERGE, /* don't touch this for merging */ - __REQ_IDLE, /* anticipate more IO after this one */ - __REQ_INTEGRITY, /* I/O includes block integrity payload */ - __REQ_FUA, /* forced unit access */ - __REQ_PREFLUSH, /* request for cache flush */ - __REQ_RAHEAD, /* read ahead, can fail anytime */ - __REQ_BACKGROUND, /* background IO */ - __REQ_NR_BITS, /* stops here */ -}; - -#define REQ_SYNC (1ULL << __REQ_SYNC) -#define REQ_META (1ULL << __REQ_META) -#define REQ_PRIO (1ULL << __REQ_PRIO) - -#define REQ_NOMERGE_FLAGS (REQ_PREFLUSH | REQ_FUA) - -#define bio_op(bio) \ - ((bio)->bi_opf & REQ_OP_MASK) - -static inline void bio_set_op_attrs(struct bio *bio, unsigned op, - unsigned op_flags) -{ - bio->bi_opf = op | op_flags; -} - -#define REQ_RAHEAD (1ULL << __REQ_RAHEAD) -#define REQ_THROTTLED (1ULL << __REQ_THROTTLED) - -#define REQ_FUA (1ULL << __REQ_FUA) -#define REQ_PREFLUSH (1ULL << __REQ_PREFLUSH) - -#define RW_MASK REQ_OP_WRITE - -#define READ REQ_OP_READ -#define WRITE REQ_OP_WRITE - -#define READ_SYNC REQ_SYNC -#define WRITE_SYNC (REQ_SYNC) -#define WRITE_ODIRECT REQ_SYNC -#define WRITE_FLUSH (REQ_SYNC | REQ_PREFLUSH) -#define WRITE_FUA (REQ_SYNC | REQ_FUA) -#define WRITE_FLUSH_FUA (REQ_SYNC | REQ_PREFLUSH | REQ_FUA) - -#endif /* __LINUX_BLK_TYPES_H */ |