twx-linux/include/uapi/linux
bstroesser@ts.fujitsu.com 6c3796d130 scsi: target: tcmu: add read length support
Generally target core and TCMUser seem to work fine for tape devices and
media changers.  But there is at least one situation where TCMUser is not
able to support sequential access device emulation correctly.

The situation is when an initiator sends a SCSI READ CDB with a length that
is greater than the length of the tape block to read. We can distinguish
two subcases:

A) The initiator sent the READ CDB with the SILI bit being set.

   In this case the sequential access device has to transfer the data from
   the tape block (only the length of the tape block) and transmit a good
   status.  The current interface between TCMUser and the userspace does
   not support reduction of the read data size by the userspace program.

   The patch below fixes this subcase by allowing the userspace program to
   specify a reduced data size in read direction.

B) The initiator sent the READ CDB with the SILI bit not being set.

   In this case the sequential access device has to transfer the data from
   the tape block as in A), but additionally has to transmit CHECK
   CONDITION with the ILI bit set and NO SENSE in the sensebytes. The
   information field in the sensebytes must contain the residual count.

   With the below patch a user space program can specify the real read data
   length and appropriate sensebytes.  TCMUser then uses the se_cmd flag
   SCF_TREAT_READ_AS_NORMAL, to force target core to transmit the real data
   size and the sensebytes.  Note: the flag SCF_TREAT_READ_AS_NORMAL is
   introduced by Lee Duncan's patch "[PATCH v4] target: transport should
   handle st FM/EOM/ILI reads" from Tue, 15 May 2018 18:25:24 -0700.

Signed-off-by: Bodo Stroesser <bstroesser@ts.fujitsu.com>
Acked-by: Mike Christie <mchristi@redhat.com>
Reviewed-by: Lee Duncan <lduncan@suse.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2018-06-18 21:02:52 -04:00
..
android
byteorder
caif
can
cifs
dvb
genwqe
hdlc
hsi
iio
isdn
mmc
netfilter netfilter: nft_dynset: do not reject set updates with NFT_SET_EVAL 2018-06-12 19:12:48 +02:00
netfilter_arp
netfilter_bridge netfilter: ebtables: add ebt_get_target and ebt_get_target_c 2018-04-24 10:29:18 +02:00
netfilter_ipv4
netfilter_ipv6 netfilter: ip6t_srh: extend SRH matching for previous, next and last SID 2018-05-06 23:33:03 +02:00
nfsd
raid
sched
spi
sunrpc
tc_act
tc_ematch
usb sound fixes for 4.18-rc1 2018-06-15 17:24:40 +09:00
wimax
a.out.h
acct.h
adb.h
adfs_fs.h
affs_hardblocks.h
agpgart.h
aio_abi.h aio: mark __aio_sigset::sigmask const 2018-06-14 20:06:19 -04:00
am437x-vpfe.h
apm_bios.h
arcfb.h
arm_sdei.h
aspeed-lpc-ctrl.h
atalk.h
atm_eni.h
atm_he.h
atm_idt77105.h
atm_nicstar.h
atm_tcp.h
atm_zatm.h
atm.h
atmapi.h
atmarp.h
atmbr2684.h
atmclip.h
atmdev.h
atmioc.h
atmlec.h
atmmpc.h
atmppp.h
atmsap.h
atmsvc.h
audit.h Merge branch 'next-integrity' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security 2018-06-07 15:40:37 -07:00
auto_dev-ioctl.h
auto_fs4.h autofs4: merge auto_fs.h and auto_fs4.h 2018-06-07 17:34:39 -07:00
auto_fs.h autofs4: merge auto_fs.h and auto_fs4.h 2018-06-07 17:34:39 -07:00
auxvec.h
ax25.h
b1lli.h
batadv_packet.h
batman_adv.h
baycom.h
bcache.h
bcm933xx_hcs.h
bfs_fs.h
binfmts.h
blkpg.h
blktrace_api.h blktrace: fix comment in blktrace_api.h 2018-03-30 14:16:24 -06:00
blkzoned.h
bpf_common.h
bpf_perf_event.h
bpf.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next 2018-06-05 12:42:19 -04:00
bpfilter.h net: add skeleton of bpfilter kernel module 2018-05-23 13:23:40 -04:00
bpqether.h
bsg.h
bt-bmc.h
btf.h bpf: btf: Remove unused bits from uapi/linux/btf.h 2018-05-23 12:03:32 +02:00
btrfs_tree.h
btrfs.h btrfs: Add unprivileged version of ino_lookup ioctl 2018-05-31 11:35:24 +02:00
can.h
capability.h
capi.h
cciss_defs.h
cciss_ioctl.h
cdrom.h
cec-funcs.h
cec.h
cgroupstats.h
chio.h
cm4000_cs.h
cn_proc.h connector: add parent pid and tgid to coredump and exit events 2018-05-01 14:25:37 -04:00
coda_psdev.h
coda.h
coff.h
connector.h
const.h linux/const.h: refactor _BITUL and _BITULL a bit 2018-04-11 10:28:38 -07:00
coresight-stm.h
cramfs_fs.h
cryptouser.h
cuda.h
cyclades.h
cycx_cfm.h
dcbnl.h net/dcb: Add dcbnl buffer attribute 2018-05-24 14:22:59 -07:00
dccp.h
devlink.h devlink: extend attrs_set for setting port flavours 2018-05-19 16:30:39 -04:00
dlm_device.h
dlm_netlink.h
dlm_plock.h
dlm.h
dlmconstants.h
dm-ioctl.h dm: hold DM table for duration of ioctl rather than use blkdev_get 2018-04-04 12:12:38 -04:00
dm-log-userspace.h
dma-buf.h
dn.h
dqblk_xfs.h
edd.h
efs_fs_sb.h
elf-em.h
elf-fdpic.h
elf.h vmcore: add API to collect hardware dump in second kernel 2018-05-14 13:46:04 -04:00
elfcore.h
errno.h
errqueue.h
erspan.h
ethtool.h ethtool: Add support for configuring PFC stall prevention in ethtool 2018-03-26 13:46:46 -07:00
eventpoll.h
fadvise.h
falloc.h
fanotify.h
fb.h
fcntl.h
fd.h
fdreg.h
fib_rules.h
fiemap.h
filter.h
firewire-cdev.h
firewire-constants.h
flat.h
fou.h
fs.h Add bunch of cleanups, and add support for the Speck128/256 2018-06-05 15:15:32 -07:00
fsl_hypervisor.h
fsmap.h
fuse.h
futex.h
gameport.h
gen_stats.h
genetlink.h
gfs2_ondisk.h
gigaset_dev.h
gpio.h
gsmmux.h
gtp.h
hash_info.h
hdlc.h
hdlcdrv.h
hdreg.h
hid.h
hiddev.h
hidraw.h
hpet.h
hsr_netlink.h
hw_breakpoint.h
hyperv.h
hysdn_if.h
i2c-dev.h
i2c.h
i2o-dev.h
i8k.h
icmp.h
icmpv6.h
if_addr.h net: Add IFA_RT_PRIORITY address attribute 2018-05-29 10:12:45 -04:00
if_addrlabel.h
if_alg.h
if_arcnet.h
if_arp.h
if_bonding.h
if_bridge.h
if_cablemodem.h
if_eql.h
if_ether.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-03-23 11:31:58 -04:00
if_fc.h
if_fddi.h
if_frad.h
if_hippi.h
if_infiniband.h uapi: Fix SPDX tags for files referring to the 'OpenIB.org' license 2018-04-23 11:10:33 -04:00
if_link.h net: bridge: add support for port isolation 2018-05-25 14:37:20 -04:00
if_ltalk.h
if_macsec.h
if_packet.h
if_phonet.h
if_plip.h
if_ppp.h
if_pppol2tp.h
if_pppox.h
if_slip.h
if_team.h
if_tun.h
if_tunnel.h
if_vlan.h
if_x25.h
if_xdp.h xsk: Fix umem fill/completion queue mmap on 32-bit 2018-06-08 00:18:02 +02:00
if.h
ife.h
igmp.h
ila.h
in6.h
in_route.h
in.h
inet_diag.h
inotify.h
input-event-codes.h
input.h
ioctl.h
ip6_tunnel.h
ip_vs.h
ip.h
ipc.h
ipmi_bmc.h
ipmi_msgdefs.h
ipmi.h
ipsec.h
ipv6_route.h
ipv6.h
ipx.h
irqnr.h
isdn_divertif.h
isdn_ppp.h
isdn.h
isdnif.h
iso_fs.h
ivtv.h
ivtvfb.h
jffs2.h
joystick.h
Kbuild
kcm.h
kcmp.h
kcov.h
kd.h
kdev_t.h
kernel-page-flags.h mm: mark pages in use for page tables 2018-06-07 17:34:37 -07:00
kernel.h
kernelcapi.h
kexec.h
keyboard.h
keyctl.h
kfd_ioctl.h
kvm_para.h
kvm.h kvm: fix typo in flag name 2018-06-12 15:06:35 +02:00
l2tp.h
libc-compat.h
lightnvm.h
limits.h
lirc.h media: rc: add ioctl to get the current timeout 2018-04-20 09:15:18 -04:00
llc.h
loop.h
lp.h
lwtunnel.h
magic.h
major.h
map_to_7segment.h
matroxfb.h
max2175.h
mdio.h
media-bus-format.h
media.h
mei.h
membarrier.h
memfd.h
mempolicy.h
meye.h
mic_common.h
mic_ioctl.h
mii.h
minix_fs.h
mman.h
mmtimer.h
module.h
mpls_iptunnel.h
mpls.h
mqueue.h
mroute6.h
mroute.h
msdos_fs.h
msg.h ipc/msg: introduce msgctl(MSG_STAT_ANY) 2018-04-11 10:28:37 -07:00
mtio.h
n_r3964.h
nbd-netlink.h
nbd.h
ncsi.h
ndctl.h
neighbour.h
net_dropmon.h
net_namespace.h
net_tstamp.h
net.h
netconf.h
netdevice.h
netfilter_arp.h
netfilter_bridge.h
netfilter_decnet.h
netfilter_ipv4.h
netfilter_ipv6.h
netfilter.h
netlink_diag.h
netlink.h
netrom.h
nfc.h
nfs2.h
nfs3.h
nfs4_mount.h
nfs4.h
nfs_fs.h
nfs_idmap.h
nfs_mount.h
nfs.h
nfsacl.h
nilfs2_api.h
nilfs2_ondisk.h
nl80211.h nl80211: fix some kernel doc tag mistakes 2018-06-15 13:01:31 +02:00
nsfs.h
nubus.h
nvme_ioctl.h
nvram.h
omap3isp.h media: omap3isp: support 64-bit version of omap3isp_stat_data 2018-05-09 16:37:05 -04:00
omapfb.h
oom.h
openvswitch.h openvswitch: Add conntrack limit netlink definition 2018-05-25 16:45:19 -04:00
packet_diag.h
param.h
parport.h
patchkey.h
pci_regs.h pci-v4.18-changes 2018-06-07 12:45:58 -07:00
pci.h
pcitest.h
perf_event.h perf/core: Store context switch out type in PERF_RECORD_SWITCH[_CPU_WIDE] 2018-04-17 09:47:39 -03:00
personality.h
pfkeyv2.h
pg.h
phantom.h
phonet.h
pkt_cls.h sched: cls: enable verbose logging 2018-05-14 16:18:27 -04:00
pkt_sched.h
pktcdvd.h
pmu.h
poll.h
posix_acl_xattr.h
posix_acl.h
posix_types.h
ppdev.h
ppp_defs.h
ppp-comp.h
ppp-ioctl.h ppp: remove the PPPIOCDETACH ioctl 2018-05-24 22:55:07 -04:00
pps.h
pr.h
prctl.h docs: Fix some broken references 2018-06-15 18:10:01 -03:00
psample.h
psci.h
psp-sev.h crypto: ccp - Add GET_ID SEV command 2018-05-31 00:13:56 +08:00
ptp_clock.h
ptrace.h
qemu_fw_cfg.h
qnx4_fs.h
qnxtypes.h
qrtr.h
quota.h
radeonfb.h
random.h random: add new ioctl RNDRESEEDCRNG 2018-04-14 11:59:31 -04:00
raw.h
rds.h uapi: Fix SPDX tags for files referring to the 'OpenIB.org' license 2018-04-23 11:10:33 -04:00
reboot.h
reiserfs_fs.h
reiserfs_xattr.h
resource.h
rfkill.h
rio_cm_cdev.h
rio_mport_cdev.h
romfs_fs.h
rose.h
route.h
rpmsg.h rpmsg: char: Switch to SPDX license identifier 2018-06-03 17:37:16 -07:00
rseq.h rseq: Introduce restartable sequences system call 2018-06-06 11:58:31 +02:00
rtc.h
rtnetlink.h rtnetlink: Add more well known protocol values 2018-05-31 15:25:10 -04:00
rxrpc.h
scc.h
sched.h
scif_ioctl.h
screen_info.h
sctp.h selinux/stable-4.17 PR 20180403 2018-04-06 15:39:26 -07:00
sdla.h
seccomp.h seccomp: Add filter flag to opt-out of SSB mitigation 2018-05-05 00:51:44 +02:00
securebits.h
sed-opal.h
seg6_genl.h
seg6_hmac.h
seg6_iptunnel.h
seg6_local.h ipv6: sr: Add seg6local action End.BPF 2018-05-24 11:57:36 +02:00
seg6.h
selinux_netlink.h
sem.h ipc/sem: introduce semctl(SEM_STAT_ANY) 2018-04-11 10:28:37 -07:00
serial_core.h
serial_reg.h
serial.h
serio.h
shm.h ipc/shm: introduce shmctl(SHM_STAT_ANY) 2018-04-11 10:28:37 -07:00
signal.h
signalfd.h signal/signalfd: Add support for SIGSYS 2018-04-26 19:51:12 -05:00
smc_diag.h
smc.h
smiapp.h
snmp.h tcp: add TCPAckCompressed SNMP counter 2018-05-18 11:40:27 -04:00
sock_diag.h
socket.h
sockios.h
sonet.h
sonypi.h
sound.h
soundcard.h
stat.h
stddef.h
stm.h stm class: Make dummy's master/channel ranges configurable 2018-03-28 18:47:18 +03:00
string.h
suspend_ioctls.h
swab.h
switchtec_ioctl.h
sync_file.h
synclink.h
sysctl.h staging: irda: remove remaining remants of irda code removal 2018-04-16 11:26:49 +02:00
sysinfo.h
target_core_user.h scsi: target: tcmu: add read length support 2018-06-18 21:02:52 -04:00
taskstats.h
tcp_metrics.h
tcp.h tcp: send in-queue bytes in cmsg upon read 2018-05-01 18:56:29 -04:00
tee.h
termios.h
thermal.h
time.h Merge branch 'timers/urgent' into timers/core 2018-05-02 16:11:12 +02:00
timerfd.h
times.h
timex.h
tiocl.h
tipc_config.h tipc: set default MTU for UDP media 2018-04-20 11:04:05 -04:00
tipc_netlink.h tipc: implement configuration of UDP media MTU 2018-04-20 11:04:05 -04:00
tipc_sockets_diag.h tipc: implement socket diagnostics for AF_TIPC 2018-03-22 14:43:35 -04:00
tipc.h tipc: introduce ioctl for fetching node identity 2018-04-27 11:05:41 -04:00
tls.h uapi: Fix SPDX tags for files referring to the 'OpenIB.org' license 2018-04-23 11:10:33 -04:00
toshiba.h
tty_flags.h tty: fix typo in ASYNCB_FOURPORT comment 2018-05-24 18:38:51 +02:00
tty.h
types_32_64.h uapi/headers: Provide types_32_64.h 2018-06-06 11:58:31 +02:00
types.h uapi: turn __poll_t sparse checks on by default 2018-05-26 09:16:44 +02:00
udf_fs_i.h
udp.h udp: generate gso with UDP_SEGMENT 2018-04-26 15:08:04 -04:00
uhid.h
uinput.h
uio.h
uleds.h
ultrasound.h
un.h
unistd.h
unix_diag.h
usbdevice_fs.h
usbip.h
userfaultfd.h
userio.h
utime.h
utsname.h
uuid.h
uvcvideo.h
v4l2-common.h
v4l2-controls.h media: v4l2: Add v4l2 control IDs for HEVC encoder 2018-03-22 06:32:15 -04:00
v4l2-dv-timings.h
v4l2-mediabus.h
v4l2-subdev.h
vbox_err.h
vbox_vmmdev_types.h
vboxguest.h
veth.h
vfio_ccw.h
vfio.h vfio/pci: Add ioeventfd support 2018-03-26 13:22:58 -06:00
vhost.h
videodev2.h media: videodev2.h: Add v4l2 definition for HEVC 2018-03-22 06:26:05 -04:00
virtio_9p.h
virtio_balloon.h virtio_balloon: add array of stat names 2018-04-24 21:44:01 +03:00
virtio_blk.h
virtio_config.h virtio: update the comments for transport features 2018-06-12 04:59:29 +03:00
virtio_console.h
virtio_crypto.h
virtio_gpu.h drm/virtio: add define for second capset to the virgl code. 2018-05-14 11:01:29 +02:00
virtio_ids.h
virtio_input.h
virtio_mmio.h
virtio_net.h virtio_net: Introduce VIRTIO_NET_F_STANDBY feature bit 2018-05-28 22:59:54 -04:00
virtio_pci.h
virtio_ring.h
virtio_rng.h
virtio_scsi.h
virtio_types.h
virtio_vsock.h
vm_sockets_diag.h
vm_sockets.h
vmcore.h vmcore: add API to collect hardware dump in second kernel 2018-05-14 13:46:04 -04:00
vsockmon.h
vt.h
vtpm_proxy.h
wait.h
wanrouter.h
watchdog.h
wimax.h
wireless.h
wmi.h
x25.h
xattr.h
xfrm.h
xilinx-v4l2-controls.h
zorro_ids.h
zorro.h