Home | History | Annotate | Download | only in linux
      1 # Copyright 2018 syzkaller project authors. All rights reserved.
      2 # Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
      3 
      4 include <uapi/linux/fs.h>
      5 include <uapi/linux/blktrace_api.h>
      6 include <uapi/linux/blkzoned.h>
      7 include <uapi/linux/pr.h>
      8 include <uapi/linux/hdreg.h>
      9 include <uapi/linux/blkpg.h>
     10 
     11 resource fd_block_trace[fd]
     12 resource fd_block[fd_block_trace]
     13 
     14 openat$nullb(fd const[AT_FDCWD], file ptr[in, string["/dev/nullb0"]], flags flags[open_flags], mode const[0]) fd_block
     15 openat$md(fd const[AT_FDCWD], file ptr[in, string["/dev/md0"]], flags flags[open_flags], mode const[0]) fd_block
     16 
     17 ioctl$BLKTRACESETUP(fd fd_block_trace, cmd const[BLKTRACESETUP], arg ptr[in, blk_user_trace_setup])
     18 ioctl$BLKTRACESTART(fd fd_block_trace, cmd const[BLKTRACESTART], arg const[0])
     19 ioctl$BLKTRACESTOP(fd fd_block_trace, cmd const[BLKTRACESTOP], arg const[0])
     20 ioctl$BLKTRACETEARDOWN(fd fd_block_trace, cmd const[BLKTRACETEARDOWN], arg const[0])
     21 
     22 ioctl$BLKFLSBUF(fd fd_block, cmd const[BLKFLSBUF], arg ptr[in, intptr])
     23 ioctl$BLKROSET(fd fd_block, cmd const[BLKROSET], arg ptr[in, intptr])
     24 ioctl$BLKDISCARD(fd fd_block, cmd const[BLKDISCARD], arg ptr[in, intptr])
     25 ioctl$BLKSECDISCARD(fd fd_block, cmd const[BLKSECDISCARD], arg ptr[in, intptr])
     26 ioctl$BLKZEROOUT(fd fd_block, cmd const[BLKZEROOUT], arg ptr[in, blk_zone_range])
     27 ioctl$BLKREPORTZONE(fd fd_block, cmd const[BLKREPORTZONE], arg ptr[in, blk_zone_report])
     28 ioctl$BLKRESETZONE(fd fd_block, cmd const[BLKRESETZONE], arg ptr[in, blk_zone_range])
     29 ioctl$BLKRAGET(fd fd_block, cmd const[BLKRAGET], arg ptr[out, intptr])
     30 ioctl$BLKROGET(fd fd_block, cmd const[BLKROGET], arg ptr[out, intptr])
     31 ioctl$BLKBSZGET(fd fd_block, cmd const[BLKBSZGET], arg ptr[out, intptr])
     32 ioctl$BLKPBSZGET(fd fd_block, cmd const[BLKPBSZGET], arg ptr[out, intptr])
     33 ioctl$BLKIOMIN(fd fd_block, cmd const[BLKIOMIN], arg ptr[out, intptr])
     34 ioctl$BLKIOOPT(fd fd_block, cmd const[BLKIOOPT], arg ptr[out, intptr])
     35 ioctl$BLKALIGNOFF(fd fd_block, cmd const[BLKALIGNOFF], arg ptr[out, intptr])
     36 ioctl$BLKSECTGET(fd fd_block, cmd const[BLKSECTGET], arg ptr[out, intptr])
     37 ioctl$BLKROTATIONAL(fd fd_block, cmd const[BLKROTATIONAL], arg ptr[out, intptr])
     38 ioctl$BLKFRASET(fd fd_block, cmd const[BLKFRASET], arg ptr[in, intptr])
     39 ioctl$BLKBSZSET(fd fd_block, cmd const[BLKBSZSET], arg ptr[in, intptr])
     40 ioctl$BLKPG(fd fd_block, cmd const[BLKPG], arg ptr[in, blkpg_ioctl_arg])
     41 ioctl$BLKRRPART(fd fd_block, cmd const[BLKRRPART], arg const[0])
     42 ioctl$BLKGETSIZE(fd fd_block, cmd const[BLKGETSIZE], arg ptr[out, intptr])
     43 ioctl$BLKGETSIZE64(fd fd_block, cmd const[BLKGETSIZE64], arg ptr[out, int64])
     44 
     45 ioctl$HDIO_GETGEO(fd fd_block, cmd const[HDIO_GETGEO], arg ptr[out, hd_geometry])
     46 
     47 ioctl$IOC_PR_REGISTER(fd fd_block, cmd const[IOC_PR_REGISTER], arg ptr[in, pr_registration])
     48 ioctl$IOC_PR_RESERVE(fd fd_block, cmd const[IOC_PR_RESERVE], arg ptr[in, pr_reservation])
     49 ioctl$IOC_PR_RELEASE(fd fd_block, cmd const[IOC_PR_RELEASE], arg ptr[in, pr_reservation])
     50 ioctl$IOC_PR_PREEMPT(fd fd_block, cmd const[IOC_PR_PREEMPT], arg ptr[in, pr_preempt])
     51 ioctl$IOC_PR_PREEMPT_ABORT(fd fd_block, cmd const[IOC_PR_PREEMPT_ABORT], arg ptr[in, pr_preempt])
     52 ioctl$IOC_PR_CLEAR(fd fd_block, cmd const[IOC_PR_CLEAR], arg ptr[in, pr_clear])
     53 
     54 blk_zone_report {
     55 	sector		int64
     56 	nr_zones	len[zones, int32]
     57 	reserved	const[0, int32]
     58 	zones		array[blk_zone]
     59 } [packed]
     60 
     61 blk_zone {
     62 	start		int64
     63 	len		int64
     64 	wp		int64
     65 	type		int8
     66 	cond		int8
     67 	non_seq		int8
     68 	reset		int8
     69 	reserved	array[const[0, int8], 36]
     70 }
     71 
     72 blk_zone_range {
     73 	sector		int64
     74 	nr_sectors	int64
     75 }
     76 
     77 hd_geometry {
     78 	heads		int8
     79 	sectors		int8
     80 	cylinders	int16
     81 	start		intptr
     82 }
     83 
     84 blkpg_ioctl_arg {
     85 	op	int32
     86 	flags	int32
     87 	datalen	bytesize[data, int32]
     88 	data	ptr[in, array[int8]]
     89 }
     90 
     91 blk_user_trace_setup {
     92 	name		array[const[0, int8], BLKTRACE_BDEV_SIZE]
     93 	act_mask	int16
     94 	buf_size	int32
     95 	buf_nr		int32
     96 	start_lba	int64
     97 	end_lba		int64
     98 	pid		pid
     99 }
    100 
    101 pr_registration {
    102 	old_key	int64
    103 	new_key	int64
    104 	flags	bool32
    105 	pad	const[0, int32]
    106 }
    107 
    108 pr_reservation {
    109 	key	int64
    110 	type	int32
    111 	flags	bool32
    112 }
    113 
    114 pr_preempt {
    115 	old_key	int64
    116 	new_key	int64
    117 	type	int32
    118 	flags	int32
    119 }
    120 
    121 pr_clear {
    122 	key	int64
    123 	flags	const[0, int32]
    124 	pad	const[0, int32]
    125 }
    126