mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 12:43:29 +02:00
Merge tag 'for-6.5/block-2023-06-23' of git://git.kernel.dk/linux
Pull block updates from Jens Axboe: - NVMe pull request via Keith: - Various cleanups all around (Irvin, Chaitanya, Christophe) - Better struct packing (Christophe JAILLET) - Reduce controller error logs for optional commands (Keith) - Support for >=64KiB block sizes (Daniel Gomez) - Fabrics fixes and code organization (Max, Chaitanya, Daniel Wagner) - bcache updates via Coly: - Fix a race at init time (Mingzhe Zou) - Misc fixes and cleanups (Andrea, Thomas, Zheng, Ye) - use page pinning in the block layer for dio (David) - convert old block dio code to page pinning (David, Christoph) - cleanups for pktcdvd (Andy) - cleanups for rnbd (Guoqing) - use the unchecked __bio_add_page() for the initial single page additions (Johannes) - fix overflows in the Amiga partition handling code (Michael) - improve mq-deadline zoned device support (Bart) - keep passthrough requests out of the IO schedulers (Christoph, Ming) - improve support for flush requests, making them less special to deal with (Christoph) - add bdev holder ops and shutdown methods (Christoph) - fix the name_to_dev_t() situation and use cases (Christoph) - decouple the block open flags from fmode_t (Christoph) - ublk updates and cleanups, including adding user copy support (Ming) - BFQ sanity checking (Bart) - convert brd from radix to xarray (Pankaj) - constify various structures (Thomas, Ivan) - more fine grained persistent reservation ioctl capability checks (Jingbo) - misc fixes and cleanups (Arnd, Azeem, Demi, Ed, Hengqi, Hou, Jan, Jordy, Li, Min, Yu, Zhong, Waiman) * tag 'for-6.5/block-2023-06-23' of git://git.kernel.dk/linux: (266 commits) scsi/sg: don't grab scsi host module reference ext4: Fix warning in blkdev_put() block: don't return -EINVAL for not found names in devt_from_devname cdrom: Fix spectre-v1 gadget block: Improve kernel-doc headers blk-mq: don't insert passthrough request into sw queue bsg: make bsg_class a static const structure ublk: make ublk_chr_class a static const structure aoe: make aoe_class a static const structure block/rnbd: make all 'class' structures const block: fix the exclusive open mask in disk_scan_partitions block: add overflow checks for Amiga partition support block: change all __u32 annotations to __be32 in affs_hardblocks.h block: fix signed int overflow in Amiga partition support block: add capacity validation in bdev_add_partition() block: fine-granular CAP_SYS_ADMIN for Persistent Reservation block: disallow Persistent Reservation on partitions reiserfs: fix blkdev_put() warning from release_journal_dev() block: fix wrong mode for blkdev_get_by_dev() from disk_scan_partitions() block: document the holder argument to blkdev_get_by_path ...
This commit is contained in:
@@ -7,42 +7,42 @@
|
||||
/* Just the needed definitions for the RDB of an Amiga HD. */
|
||||
|
||||
struct RigidDiskBlock {
|
||||
__u32 rdb_ID;
|
||||
__be32 rdb_ID;
|
||||
__be32 rdb_SummedLongs;
|
||||
__s32 rdb_ChkSum;
|
||||
__u32 rdb_HostID;
|
||||
__be32 rdb_ChkSum;
|
||||
__be32 rdb_HostID;
|
||||
__be32 rdb_BlockBytes;
|
||||
__u32 rdb_Flags;
|
||||
__u32 rdb_BadBlockList;
|
||||
__be32 rdb_Flags;
|
||||
__be32 rdb_BadBlockList;
|
||||
__be32 rdb_PartitionList;
|
||||
__u32 rdb_FileSysHeaderList;
|
||||
__u32 rdb_DriveInit;
|
||||
__u32 rdb_Reserved1[6];
|
||||
__u32 rdb_Cylinders;
|
||||
__u32 rdb_Sectors;
|
||||
__u32 rdb_Heads;
|
||||
__u32 rdb_Interleave;
|
||||
__u32 rdb_Park;
|
||||
__u32 rdb_Reserved2[3];
|
||||
__u32 rdb_WritePreComp;
|
||||
__u32 rdb_ReducedWrite;
|
||||
__u32 rdb_StepRate;
|
||||
__u32 rdb_Reserved3[5];
|
||||
__u32 rdb_RDBBlocksLo;
|
||||
__u32 rdb_RDBBlocksHi;
|
||||
__u32 rdb_LoCylinder;
|
||||
__u32 rdb_HiCylinder;
|
||||
__u32 rdb_CylBlocks;
|
||||
__u32 rdb_AutoParkSeconds;
|
||||
__u32 rdb_HighRDSKBlock;
|
||||
__u32 rdb_Reserved4;
|
||||
__be32 rdb_FileSysHeaderList;
|
||||
__be32 rdb_DriveInit;
|
||||
__be32 rdb_Reserved1[6];
|
||||
__be32 rdb_Cylinders;
|
||||
__be32 rdb_Sectors;
|
||||
__be32 rdb_Heads;
|
||||
__be32 rdb_Interleave;
|
||||
__be32 rdb_Park;
|
||||
__be32 rdb_Reserved2[3];
|
||||
__be32 rdb_WritePreComp;
|
||||
__be32 rdb_ReducedWrite;
|
||||
__be32 rdb_StepRate;
|
||||
__be32 rdb_Reserved3[5];
|
||||
__be32 rdb_RDBBlocksLo;
|
||||
__be32 rdb_RDBBlocksHi;
|
||||
__be32 rdb_LoCylinder;
|
||||
__be32 rdb_HiCylinder;
|
||||
__be32 rdb_CylBlocks;
|
||||
__be32 rdb_AutoParkSeconds;
|
||||
__be32 rdb_HighRDSKBlock;
|
||||
__be32 rdb_Reserved4;
|
||||
char rdb_DiskVendor[8];
|
||||
char rdb_DiskProduct[16];
|
||||
char rdb_DiskRevision[4];
|
||||
char rdb_ControllerVendor[8];
|
||||
char rdb_ControllerProduct[16];
|
||||
char rdb_ControllerRevision[4];
|
||||
__u32 rdb_Reserved5[10];
|
||||
__be32 rdb_Reserved5[10];
|
||||
};
|
||||
|
||||
#define IDNAME_RIGIDDISK 0x5244534B /* "RDSK" */
|
||||
@@ -50,16 +50,16 @@ struct RigidDiskBlock {
|
||||
struct PartitionBlock {
|
||||
__be32 pb_ID;
|
||||
__be32 pb_SummedLongs;
|
||||
__s32 pb_ChkSum;
|
||||
__u32 pb_HostID;
|
||||
__be32 pb_ChkSum;
|
||||
__be32 pb_HostID;
|
||||
__be32 pb_Next;
|
||||
__u32 pb_Flags;
|
||||
__u32 pb_Reserved1[2];
|
||||
__u32 pb_DevFlags;
|
||||
__be32 pb_Flags;
|
||||
__be32 pb_Reserved1[2];
|
||||
__be32 pb_DevFlags;
|
||||
__u8 pb_DriveName[32];
|
||||
__u32 pb_Reserved2[15];
|
||||
__be32 pb_Reserved2[15];
|
||||
__be32 pb_Environment[17];
|
||||
__u32 pb_EReserved[15];
|
||||
__be32 pb_EReserved[15];
|
||||
};
|
||||
|
||||
#define IDNAME_PARTITION 0x50415254 /* "PART" */
|
||||
|
@@ -16,6 +16,7 @@
|
||||
#include <linux/types.h>
|
||||
|
||||
/*
|
||||
* UNUSED:
|
||||
* 1 for normal debug messages, 2 is very verbose. 0 to turn it off.
|
||||
*/
|
||||
#define PACKET_DEBUG 1
|
||||
|
@@ -47,6 +47,14 @@
|
||||
_IOWR('u', UBLK_CMD_END_USER_RECOVERY, struct ublksrv_ctrl_cmd)
|
||||
#define UBLK_U_CMD_GET_DEV_INFO2 \
|
||||
_IOR('u', UBLK_CMD_GET_DEV_INFO2, struct ublksrv_ctrl_cmd)
|
||||
#define UBLK_U_CMD_GET_FEATURES \
|
||||
_IOR('u', 0x13, struct ublksrv_ctrl_cmd)
|
||||
|
||||
/*
|
||||
* 64bits are enough now, and it should be easy to extend in case of
|
||||
* running out of feature flags
|
||||
*/
|
||||
#define UBLK_FEATURES_LEN 8
|
||||
|
||||
/*
|
||||
* IO commands, issued by ublk server, and handled by ublk driver.
|
||||
@@ -93,9 +101,29 @@
|
||||
#define UBLKSRV_CMD_BUF_OFFSET 0
|
||||
#define UBLKSRV_IO_BUF_OFFSET 0x80000000
|
||||
|
||||
/* tag bit is 12bit, so at most 4096 IOs for each queue */
|
||||
/* tag bit is 16bit, so far limit at most 4096 IOs for each queue */
|
||||
#define UBLK_MAX_QUEUE_DEPTH 4096
|
||||
|
||||
/* single IO buffer max size is 32MB */
|
||||
#define UBLK_IO_BUF_OFF 0
|
||||
#define UBLK_IO_BUF_BITS 25
|
||||
#define UBLK_IO_BUF_BITS_MASK ((1ULL << UBLK_IO_BUF_BITS) - 1)
|
||||
|
||||
/* so at most 64K IOs for each queue */
|
||||
#define UBLK_TAG_OFF UBLK_IO_BUF_BITS
|
||||
#define UBLK_TAG_BITS 16
|
||||
#define UBLK_TAG_BITS_MASK ((1ULL << UBLK_TAG_BITS) - 1)
|
||||
|
||||
/* max 4096 queues */
|
||||
#define UBLK_QID_OFF (UBLK_TAG_OFF + UBLK_TAG_BITS)
|
||||
#define UBLK_QID_BITS 12
|
||||
#define UBLK_QID_BITS_MASK ((1ULL << UBLK_QID_BITS) - 1)
|
||||
|
||||
#define UBLK_MAX_NR_QUEUES (1U << UBLK_QID_BITS)
|
||||
|
||||
#define UBLKSRV_IO_BUF_TOTAL_BITS (UBLK_QID_OFF + UBLK_QID_BITS)
|
||||
#define UBLKSRV_IO_BUF_TOTAL_SIZE (1ULL << UBLKSRV_IO_BUF_TOTAL_BITS)
|
||||
|
||||
/*
|
||||
* zero copy requires 4k block size, and can remap ublk driver's io
|
||||
* request into ublksrv's vm space
|
||||
@@ -145,6 +173,9 @@
|
||||
/* use ioctl encoding for uring command */
|
||||
#define UBLK_F_CMD_IOCTL_ENCODE (1UL << 6)
|
||||
|
||||
/* Copy between request and user buffer by pread()/pwrite() */
|
||||
#define UBLK_F_USER_COPY (1UL << 7)
|
||||
|
||||
/* device state */
|
||||
#define UBLK_S_DEV_DEAD 0
|
||||
#define UBLK_S_DEV_LIVE 1
|
||||
|
Reference in New Issue
Block a user