4
4
#include <sys/types.h>
5
5
#include <sys/ioctl.h>
6
#ifdef HAVE_SYS_IOCCOM_H
7
# include <sys/ioccom.h> /* for _IO macro on e.g. Solaris */
13
# include <sys/mkdev.h> /* major and minor on Solaris */
9
16
#define DEFAULT_SECTOR_SIZE 512
11
/* open() retries when errno is ENOMEDIUM */
12
#define CRDOM_NOMEDIUM_RETRIES 5
14
#if !defined(BLKROSET) && defined(__linux__)
16
#define BLKROSET _IO(0x12,93) /* set device read-only (0 = read-write) */
17
#define BLKROGET _IO(0x12,94) /* get read-only status (0 = read_write) */
18
#define BLKRRPART _IO(0x12,95) /* re-read partition table */
19
#define BLKGETSIZE _IO(0x12,96) /* return device size /512 (long *arg) */
20
#define BLKFLSBUF _IO(0x12,97) /* flush buffer cache */
21
#define BLKRASET _IO(0x12,98) /* set read ahead for block device */
22
#define BLKRAGET _IO(0x12,99) /* get current read ahead setting */
23
#define BLKFRASET _IO(0x12,100)/* set filesystem (mm/filemap.c) read-ahead */
24
#define BLKFRAGET _IO(0x12,101)/* get filesystem (mm/filemap.c) read-ahead */
25
#define BLKSECTSET _IO(0x12,102)/* set max sectors per request (ll_rw_blk.c) */
26
#define BLKSECTGET _IO(0x12,103)/* get max sectors per request (ll_rw_blk.c) */
27
#define BLKSSZGET _IO(0x12,104)/* get block device sector size */
19
/* very basic ioclts, should be available everywhere */
21
# define BLKROSET _IO(0x12,93) /* set device read-only (0 = read-write) */
22
# define BLKROGET _IO(0x12,94) /* get read-only status (0 = read_write) */
23
# define BLKRRPART _IO(0x12,95) /* re-read partition table */
24
# define BLKGETSIZE _IO(0x12,96) /* return device size /512 (long *arg) */
25
# define BLKFLSBUF _IO(0x12,97) /* flush buffer cache */
26
# define BLKRASET _IO(0x12,98) /* set read ahead for block device */
27
# define BLKRAGET _IO(0x12,99) /* get current read ahead setting */
28
# define BLKFRASET _IO(0x12,100) /* set filesystem (mm/filemap.c) read-ahead */
29
# define BLKFRAGET _IO(0x12,101) /* get filesystem (mm/filemap.c) read-ahead */
30
# define BLKSECTSET _IO(0x12,102) /* set max sectors per request (ll_rw_blk.c) */
31
# define BLKSECTGET _IO(0x12,103) /* get max sectors per request (ll_rw_blk.c) */
32
# define BLKSSZGET _IO(0x12,104) /* get block device sector size */
29
34
/* ioctls introduced in 2.2.16, removed in 2.5.58 */
30
#define BLKELVGET _IOR(0x12,106,size_t) /* elevator get */
31
#define BLKELVSET _IOW(0x12,107,size_t) /* elevator set */
33
#define BLKBSZGET _IOR(0x12,112,size_t)
34
#define BLKBSZSET _IOW(0x12,113,size_t)
35
#define BLKGETSIZE64 _IOR(0x12,114,size_t) /* return device size in bytes (u64 *arg) */
39
/* block device topology ioctls, introduced in 2.6.32 */
41
#define BLKIOMIN _IO(0x12,120)
42
#define BLKIOOPT _IO(0x12,121)
43
#define BLKALIGNOFF _IO(0x12,122)
44
#define BLKPBSZGET _IO(0x12,123)
35
# define BLKELVGET _IOR(0x12,106,size_t) /* elevator get */
36
# define BLKELVSET _IOW(0x12,107,size_t) /* elevator set */
38
# define BLKBSZGET _IOR(0x12,112,size_t)
39
# define BLKBSZSET _IOW(0x12,113,size_t)
40
# endif /* !BLKROSET */
43
# define BLKGETSIZE64 _IOR(0x12,114,size_t) /* return device size in bytes (u64 *arg) */
46
/* block device topology ioctls, introduced in 2.6.32 (commit ac481c20) */
48
# define BLKIOMIN _IO(0x12,120)
49
# define BLKIOOPT _IO(0x12,121)
50
# define BLKALIGNOFF _IO(0x12,122)
51
# define BLKPBSZGET _IO(0x12,123)
54
/* discard zeroes support, introduced in 2.6.33 (commit 98262f27) */
55
# ifndef BLKDISCARDZEROES
56
# define BLKDISCARDZEROES _IO(0x12,124)
59
/* filesystem freeze, introduced in 2.6.29 (commit fcccf502) */
61
# define FIFREEZE _IOWR('X', 119, int) /* Freeze */
62
# define FITHAW _IOWR('X', 120, int) /* Thaw */
68
# define BLKGETSIZE DKIOCGETBLOCKCOUNT32
47
71
#ifndef HDIO_GETGEO