linux-user: implement more loop ioctls

LOOP_CONFIGURE is now used by losetup, and it cannot cope with ENOSYS.

Signed-off-by: Andreas Schwab <schwab@suse.de>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Message-Id: <mvmtug4mbfx.fsf_-_@suse.de>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
This commit is contained in:
Andreas Schwab 2021-11-22 16:56:02 +01:00 committed by Laurent Vivier
parent e750c10167
commit 0a761ce303
4 changed files with 16 additions and 0 deletions

View File

@ -637,6 +637,10 @@
IOCTL(LOOP_SET_STATUS64, IOC_W, MK_PTR(MK_STRUCT(STRUCT_loop_info64))) IOCTL(LOOP_SET_STATUS64, IOC_W, MK_PTR(MK_STRUCT(STRUCT_loop_info64)))
IOCTL(LOOP_GET_STATUS64, IOC_R, MK_PTR(MK_STRUCT(STRUCT_loop_info64))) IOCTL(LOOP_GET_STATUS64, IOC_R, MK_PTR(MK_STRUCT(STRUCT_loop_info64)))
IOCTL(LOOP_CHANGE_FD, 0, TYPE_INT) IOCTL(LOOP_CHANGE_FD, 0, TYPE_INT)
IOCTL(LOOP_SET_CAPACITY, 0, TYPE_INT)
IOCTL(LOOP_SET_DIRECT_IO, 0, TYPE_INT)
IOCTL(LOOP_SET_BLOCK_SIZE, 0, TYPE_INT)
IOCTL(LOOP_CONFIGURE, IOC_W, MK_PTR(MK_STRUCT(STRUCT_loop_config)))
IOCTL(LOOP_CTL_ADD, 0, TYPE_INT) IOCTL(LOOP_CTL_ADD, 0, TYPE_INT)
IOCTL(LOOP_CTL_REMOVE, 0, TYPE_INT) IOCTL(LOOP_CTL_REMOVE, 0, TYPE_INT)

View File

@ -96,6 +96,8 @@ struct loop_info64 {
#define LOOP_CHANGE_FD 0x4C06 #define LOOP_CHANGE_FD 0x4C06
#define LOOP_SET_CAPACITY 0x4C07 #define LOOP_SET_CAPACITY 0x4C07
#define LOOP_SET_DIRECT_IO 0x4C08 #define LOOP_SET_DIRECT_IO 0x4C08
#define LOOP_SET_BLOCK_SIZE 0x4C09
#define LOOP_CONFIGURE 0x4C0A
/* /dev/loop-control interface */ /* /dev/loop-control interface */
#define LOOP_CTL_ADD 0x4C80 #define LOOP_CTL_ADD 0x4C80

View File

@ -1219,6 +1219,10 @@ struct target_rtc_pll_info {
#define TARGET_LOOP_SET_STATUS64 0x4C04 #define TARGET_LOOP_SET_STATUS64 0x4C04
#define TARGET_LOOP_GET_STATUS64 0x4C05 #define TARGET_LOOP_GET_STATUS64 0x4C05
#define TARGET_LOOP_CHANGE_FD 0x4C06 #define TARGET_LOOP_CHANGE_FD 0x4C06
#define TARGET_LOOP_SET_CAPACITY 0x4C07
#define TARGET_LOOP_SET_DIRECT_IO 0x4C08
#define TARGET_LOOP_SET_BLOCK_SIZE 0x4C09
#define TARGET_LOOP_CONFIGURE 0x4C0A
#define TARGET_LOOP_CTL_ADD 0x4C80 #define TARGET_LOOP_CTL_ADD 0x4C80
#define TARGET_LOOP_CTL_REMOVE 0x4C81 #define TARGET_LOOP_CTL_REMOVE 0x4C81

View File

@ -201,6 +201,12 @@ STRUCT(loop_info64,
MK_ARRAY(TYPE_CHAR, 32), /* lo_encrypt_key */ MK_ARRAY(TYPE_CHAR, 32), /* lo_encrypt_key */
MK_ARRAY(TYPE_ULONGLONG, 2)) /* lo_init */ MK_ARRAY(TYPE_ULONGLONG, 2)) /* lo_init */
STRUCT(loop_config,
TYPE_INT, /* fd */
TYPE_INT, /* block_size */
MK_STRUCT(STRUCT_loop_info64), /* info */
MK_ARRAY(TYPE_ULONGLONG, 8)) /* __reserved */
/* mag tape ioctls */ /* mag tape ioctls */
STRUCT(mtop, TYPE_SHORT, TYPE_INT) STRUCT(mtop, TYPE_SHORT, TYPE_INT)
STRUCT(mtget, TYPE_LONG, TYPE_LONG, TYPE_LONG, TYPE_LONG, TYPE_LONG, STRUCT(mtget, TYPE_LONG, TYPE_LONG, TYPE_LONG, TYPE_LONG, TYPE_LONG,