twx-linux/include/uapi/linux
Linus Torvalds 725737e7c2 STATX_DIOALIGN for 6.1
Make statx() support reporting direct I/O (DIO) alignment information.
 This provides a generic interface for userspace programs to determine
 whether a file supports DIO, and if so with what alignment restrictions.
 Specifically, STATX_DIOALIGN works on block devices, and on regular
 files when their containing filesystem has implemented support.
 
 An interface like this has been requested for years, since the
 conditions for when DIO is supported in Linux have gotten increasingly
 complex over time.  Today, DIO support and alignment requirements can be
 affected by various filesystem features such as multi-device support,
 data journalling, inline data, encryption, verity, compression,
 checkpoint disabling, log-structured mode, etc.  Further complicating
 things, Linux v6.0 relaxed the traditional rule of DIO needing to be
 aligned to the block device's logical block size; now user buffers (but
 not file offsets) only need to be aligned to the DMA alignment.
 
 The approach of uplifting the XFS specific ioctl XFS_IOC_DIOINFO was
 discarded in favor of creating a clean new interface with statx().
 
 For more information, see the individual commits and the man page update
 https://lore.kernel.org/r/20220722074229.148925-1-ebiggers@kernel.org.
 -----BEGIN PGP SIGNATURE-----
 
 iIoEABYIADIWIQSacvsUNc7UX4ntmEPzXCl4vpKOKwUCYzpV2xQcZWJpZ2dlcnNA
 Z29vZ2xlLmNvbQAKCRDzXCl4vpKOKwF1AQDetPX5hyuq0/mwikOywLTTJsoHgGY5
 euO+dISqjH/InwD9HAQqfPRkdM1j4ml82BjjkAfrhzZXOOWPKJm0zOhMIQg=
 =0Oav
 -----END PGP SIGNATURE-----

Merge tag 'statx-dioalign-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiggers/linux

Pull STATX_DIOALIGN support from Eric Biggers:
 "Make statx() support reporting direct I/O (DIO) alignment information.

  This provides a generic interface for userspace programs to determine
  whether a file supports DIO, and if so with what alignment
  restrictions. Specifically, STATX_DIOALIGN works on block devices, and
  on regular files when their containing filesystem has implemented
  support.

  An interface like this has been requested for years, since the
  conditions for when DIO is supported in Linux have gotten increasingly
  complex over time. Today, DIO support and alignment requirements can
  be affected by various filesystem features such as multi-device
  support, data journalling, inline data, encryption, verity,
  compression, checkpoint disabling, log-structured mode, etc.

  Further complicating things, Linux v6.0 relaxed the traditional rule
  of DIO needing to be aligned to the block device's logical block size;
  now user buffers (but not file offsets) only need to be aligned to the
  DMA alignment.

  The approach of uplifting the XFS specific ioctl XFS_IOC_DIOINFO was
  discarded in favor of creating a clean new interface with statx().

  For more information, see the individual commits and the man page
  update[1]"

Link: https://lore.kernel.org/r/20220722074229.148925-1-ebiggers@kernel.org [1]

* tag 'statx-dioalign-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiggers/linux:
  xfs: support STATX_DIOALIGN
  f2fs: support STATX_DIOALIGN
  f2fs: simplify f2fs_force_buffered_io()
  f2fs: move f2fs_force_buffered_io() into file.c
  ext4: support STATX_DIOALIGN
  fscrypt: change fscrypt_dio_supported() to prepare for STATX_DIOALIGN
  vfs: support STATX_DIOALIGN on block devices
  statx: add direct I/O alignment information
2022-10-03 20:33:41 -07:00
..
android Binder: add TF_UPDATE_TXN to replace outdated txn 2022-06-27 16:16:30 +02:00
byteorder
caif
can Networking changes for 6.0. 2022-08-03 16:29:08 -07:00
cifs
dvb
genwqe
hdlc
hsi
iio
isdn
misc
mmc treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
netfilter SPDX changes for 6.0-rc1 2022-08-04 12:12:54 -07:00
netfilter_arp treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
netfilter_bridge treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
netfilter_ipv4 treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
netfilter_ipv6 netfilter: ip6t_LOG: Fix a typo in a comment 2022-08-09 19:51:05 +02:00
nfsd
raid treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
sched
spi
sunrpc
surface_aggregator
tc_act
tc_ematch
usb USB / Thunderbolt changes for 6.0-rc1 2022-08-04 11:41:28 -07:00
a.out.h
acct.h
acrn.h
adb.h
adfs_fs.h
affs_hardblocks.h
agpgart.h
aio_abi.h
am437x-vpfe.h
amt.h
apm_bios.h
arcfb.h
arm_sdei.h
aspeed-lpc-ctrl.h
aspeed-p2a-ctrl.h
atalk.h
atm_eni.h
atm_he.h
atm_idt77105.h
atm_nicstar.h
atm_tcp.h
atm_zatm.h net: atm: bring back zatm uAPI 2022-08-11 10:31:19 -07:00
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
auto_dev-ioctl.h
auto_fs4.h
auto_fs.h
auxvec.h
ax25.h
batadv_packet.h
batman_adv.h
baycom.h
bcm933xx_hcs.h
bfs_fs.h
binfmts.h
blkpg.h
blktrace_api.h
blkzoned.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
bpf_common.h
bpf_perf_event.h
bpf.h bpf: Partially revert flexible-array member replacement 2022-08-17 23:45:47 +02:00
bpfilter.h
bpqether.h
bsg.h
bt-bmc.h
btf.h
btrfs_tree.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
btrfs.h for-5.20-tag 2022-08-03 14:54:52 -07:00
cachefiles.h
can.h
capability.h
capi.h
cciss_defs.h
cciss_ioctl.h
ccs.h
cdrom.h
cec-funcs.h
cec.h
cfm_bridge.h
cgroupstats.h
chio.h
close_range.h
cm4000_cs.h
cn_proc.h
coda.h
coff.h
comedi.h
connector.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
const.h
coresight-stm.h
counter.h
cramfs_fs.h
cryptouser.h
cuda.h
cxl_mem.h
cyclades.h
cycx_cfm.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
dcbnl.h
dccp.h
devlink.h devlink: introduce framework for selftests 2022-07-28 21:56:53 -07:00
dlm_device.h
dlm_netlink.h
dlm_plock.h
dlm.h fs: dlm: remove DLM_LSFL_FS from uapi 2022-08-23 14:54:54 -05:00
dlmconstants.h
dm-ioctl.h flexible-array transformations in UAPI for 6.0-rc1 2022-08-02 19:50:47 -07:00
dm-log-userspace.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
dma-buf.h Merge drm/drm-next into drm-misc-next 2022-06-20 18:21:25 +02:00
dma-heap.h
dn.h
dns_resolver.h
dqblk_xfs.h
edd.h
efs_fs_sb.h
elf-em.h
elf-fdpic.h
elf.h s390: add ELF note type for encrypted CPU state of a PV VCPU 2022-07-28 18:05:24 +02:00
errno.h
errqueue.h
erspan.h
ethtool_netlink.h
ethtool.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
eventpoll.h
f2fs.h f2fs: revive F2FS_IOC_ABORT_VOLATILE_WRITE 2022-08-05 04:17:57 -07:00
fadvise.h
falloc.h
fanotify.h flexible-array transformations in UAPI for 6.0-rc1 2022-08-02 19:50:47 -07:00
fb.h
fcntl.h
fd.h
fdreg.h
fib_rules.h
fiemap.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
filter.h
firewire-cdev.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
firewire-constants.h
fou.h
fpga-dfl.h
fs.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
fscrypt.h
fsi.h
fsl_hypervisor.h
fsl_mc.h
fsmap.h
fsverity.h
fuse.h
futex.h
gameport.h
gen_stats.h
genetlink.h genetlink: correct uAPI defines 2022-08-10 13:49:50 +01:00
gfs2_ondisk.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
i2c-dev.h
i2c.h
i2o-dev.h
i8k.h
icmp.h
icmpv6.h
idxd.h dmaengine: idxd: Correct IAX operation code names 2022-07-21 18:10:43 +05:30
if_addr.h
if_addrlabel.h
if_alg.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
if_arcnet.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
if_arp.h
if_bonding.h
if_bridge.h
if_cablemodem.h
if_eql.h
if_ether.h net: dsa: add Renesas RZ/N1 switch tag driver 2022-06-27 11:37:55 +01:00
if_fc.h
if_fddi.h
if_hippi.h
if_infiniband.h
if_link.h Bonding: add per-port priority for failover re-selection 2022-06-24 11:27:59 +01: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 treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
if_slip.h
if_team.h
if_tun.h tun: support not enabling carrier in TUNSETIFF 2022-09-23 12:02:03 +01:00
if_tunnel.h
if_vlan.h
if_x25.h
if_xdp.h
if.h
ife.h
igmp.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
ila.h
in6.h
in_route.h
in.h
inet_diag.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
inotify.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
input-event-codes.h
input.h Input updates for v5.19-rc6 2022-07-17 07:52:46 -07:00
io_uring.h io_uring/net: simplify zerocopy send user API 2022-09-01 09:13:33 -06:00
ioam6_genl.h
ioam6_iptunnel.h
ioam6.h
ioctl.h
iommu.h
ioprio.h
ip6_tunnel.h
ip_vs.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
ip.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
ipc.h
ipmi_bmc.h
ipmi_msgdefs.h
ipmi.h
ipsec.h
ipv6_route.h
ipv6.h
irqnr.h
iso_fs.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
isst_if.h
ivtv.h
ivtvfb.h
jffs2.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
joystick.h
kcm.h
kcmp.h
kcov.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
kd.h
kdev_t.h
kernel-page-flags.h
kernel.h
kernelcapi.h
kexec.h
keyboard.h
keyctl.h
kfd_ioctl.h drm/amdkfd: bump KFD version for unified ctx save/restore memory 2022-07-12 16:50:44 -04:00
kfd_sysfs.h
kvm_para.h
kvm.h ARM: 2022-08-04 14:59:54 -07:00
l2tp.h
landlock.h
libc-compat.h
limits.h
lirc.h
llc.h
loadpin.h LoadPin: Enable loading from trusted dm-verity devices 2022-07-08 10:46:53 -07:00
loop.h
lp.h
lwtunnel.h
magic.h mm: Convert all PageMovable users to movable_operations 2022-08-02 12:34:03 -04:00
major.h
map_to_7segment.h
map_to_14segment.h
matroxfb.h
max2175.h
mctp.h
mdio.h
media-bus-format.h media: uapi: Add some RGB bus formats for i.MX8qm/qxp pixel combiner 2022-06-20 21:15:04 +02:00
media.h
mei.h
membarrier.h
memfd.h
mempolicy.h
meye.h
mii.h
minix_fs.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
mman.h
mmtimer.h
module.h
mount.h
mpls_iptunnel.h
mpls.h
mptcp.h mptcp: fix conflict with <netinet/in.h> 2022-06-28 20:45:43 -07:00
mqueue.h
mroute6.h
mroute.h
mrp_bridge.h
msdos_fs.h
msg.h
mtio.h
nbd-netlink.h
nbd.h
ncsi.h
ndctl.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
neighbour.h net, neigh: introduce interval_probe_time_ms for periodic probe 2022-06-30 13:14:35 +02:00
net_dropmon.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
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
nexthop.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
nitro_enclaves.h
nl80211-vnd-intel.h
nl80211.h wifi: nl80211: add MLO link ID to the NL80211_CMD_FRAME TX API 2022-07-22 14:28:33 +02:00
nsfs.h
nubus.h
nvme_ioctl.h
nvram.h
omap3isp.h
omapfb.h
oom.h
openat2.h
openvswitch.h
packet_diag.h
param.h
parport.h
patchkey.h
pci_regs.h PCI/DOE: Add DOE mailbox support functions 2022-07-19 15:38:04 -07:00
pci.h
pcitest.h
perf_event.h flexible-array transformations in UAPI for 6.0-rc1 2022-08-02 19:50:47 -07:00
personality.h
pfkeyv2.h
pfrut.h
pg.h
phantom.h
phonet.h
pidfd.h
pkt_cls.h Networking changes for 6.0. 2022-08-03 16:29:08 -07: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
pps.h
pr.h
prctl.h
psample.h
psci.h
psp-sev.h
ptp_clock.h
ptrace.h
qemu_fw_cfg.h
qnx4_fs.h
qnxtypes.h
qrtr.h
quota.h
radeonfb.h
random.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
rds.h
reboot.h
reiserfs_fs.h
reiserfs_xattr.h
remoteproc_cdev.h
resource.h
rfkill.h
rio_cm_cdev.h
rio_mport_cdev.h
rkisp1-config.h
romfs_fs.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
rose.h
route.h
rpl_iptunnel.h
rpl.h
rpmsg_types.h
rpmsg.h
rseq.h
rtc.h
rtnetlink.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
rxrpc.h
scc.h
sched.h
scif_ioctl.h
screen_info.h
sctp.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
seccomp.h
securebits.h
sed-opal.h
seg6_genl.h
seg6_hmac.h
seg6_iptunnel.h Networking changes for 6.0. 2022-08-03 16:29:08 -07:00
seg6_local.h
seg6.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
selinux_netlink.h
sem.h
serial_core.h serial: remove VR41XX serial driver 2022-07-16 08:16:01 +02:00
serial_reg.h serial: Use bits for UART_LSR_BRK_ERROR_BITS/MSR_ANY_DELTA 2022-06-27 14:41:31 +02:00
serial.h serial: Support for RS-485 multipoint addresses 2022-06-27 14:44:20 +02:00
serio.h
sev-guest.h
shm.h
signal.h
signalfd.h
smc_diag.h
smc.h net/smc: Extend SMC-R link group netlink attribute 2022-07-18 11:19:17 +01:00
smiapp.h
snmp.h tls: rx: add counter for NoPad violations 2022-07-11 19:48:33 -07:00
sock_diag.h
socket.h
sockios.h
sonet.h
sonypi.h
sound.h
soundcard.h
stat.h statx: add direct I/O alignment information 2022-09-11 19:47:04 -05:00
stddef.h
stm.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
string.h
suspend_ioctls.h
swab.h
switchtec_ioctl.h
sync_file.h
synclink.h
sysctl.h net, neigh: introduce interval_probe_time_ms for periodic probe 2022-06-30 13:14:35 +02:00
sysinfo.h
target_core_user.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
taskstats.h
tcp_metrics.h
tcp.h
tee.h
termios.h
thermal.h
time_types.h
time.h
timerfd.h
times.h
timex.h
tiocl.h
tipc_config.h
tipc_netlink.h
tipc_sockets_diag.h
tipc.h
tls.h tls: rx: add sockopt for enabling optimistic decrypt with TLS 1.3 2022-07-06 12:56:35 +01:00
toshiba.h
tty_flags.h
tty.h tty: Add N_CAN327 line discipline ID for ELM327 based CAN driver 2022-06-27 16:25:41 +02:00
types.h
ublk_cmd.h ublk_cmd.h: add one new ublk command: UBLK_IO_NEED_GET_DATA 2022-08-02 21:13:40 -06:00
udf_fs_i.h
udmabuf.h
udp.h
uhid.h
uinput.h
uio.h
uleds.h
ultrasound.h
um_timetravel.h
un.h
unistd.h
unix_diag.h
usbdevice_fs.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
usbip.h
userfaultfd.h
userio.h
utime.h
utsname.h
uuid.h
uvcvideo.h
v4l2-common.h
v4l2-controls.h media: uapi: move HEVC stateless controls out of staging 2022-07-15 17:36:58 +01:00
v4l2-dv-timings.h
v4l2-mediabus.h
v4l2-subdev.h
vbox_err.h
vbox_vmmdev_types.h
vboxguest.h
vdpa.h
vduse.h vduse: Support querying information of IOVA regions 2022-08-11 04:26:08 -04:00
veth.h
vfio_ccw.h
vfio_zdev.h vfio-pci/zdev: different maxstbl for interpreted devices 2022-07-11 09:54:37 +02:00
vfio.h
vhost_types.h virtio: fatures, fixes 2022-08-12 09:50:34 -07:00
vhost.h vhost-vdpa: uAPI to suspend the device 2022-08-11 04:31:15 -04:00
videodev2.h media: Add P010 tiled format 2022-07-17 10:58:06 +01:00
virtio_9p.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
virtio_balloon.h
virtio_blk.h
virtio_bt.h
virtio_config.h virtio: queue_reset: add VIRTIO_F_RING_RESET 2022-08-11 04:06:40 -04:00
virtio_console.h
virtio_crypto.h
virtio_fs.h
virtio_gpio.h
virtio_gpu.h
virtio_i2c.h
virtio_ids.h
virtio_input.h
virtio_iommu.h
virtio_mem.h
virtio_mmio.h
virtio_net.h net: virtio_net: fix notification coalescing comments 2022-08-30 22:44:25 -07:00
virtio_pci.h virtio_pci: struct virtio_pci_common_cfg add queue_reset 2022-08-11 04:06:40 -04:00
virtio_pcidev.h
virtio_pmem.h
virtio_ring.h virtio: kerneldocs fixes and enhancements 2022-08-16 01:40:24 -04:00
virtio_rng.h
virtio_scmi.h
virtio_scsi.h
virtio_snd.h
virtio_types.h
virtio_vsock.h
vm_sockets_diag.h
vm_sockets.h
vmcore.h
vsockmon.h
vt.h
vtpm_proxy.h
wait.h
watch_queue.h
watchdog.h
wireguard.h
wireless.h
wmi.h
wwan.h
x25.h
xattr.h
xdp_diag.h
xfrm.h Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec 2022-08-24 12:51:50 +01:00
xilinx-v4l2-controls.h
zorro_ids.h
zorro.h