Message ID | 1579880839-31466-3-git-send-email-aleksandar.markovic@rt-rk.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | linux-user: Add support for fs and fd ioctls | expand |
Le 24/01/2020 à 16:47, Aleksandar Markovic a écrit : > From: Aleksandar Markovic <amarkovic@wavecomp.com> > > FITRIM ioctl accepts a pointer to the structure > > struct fstrim_range { > __u64 start; > __u64 len; > __u64 minlen; > }; > > as its third argument. > > All ioctls in this group (FI* ioctl) are guarded with "#ifdef", so the > guards are used in this implementation too for consistency (however, > many of ioctls in FI* group became old enough that their #ifdef guards > could be removed, bit this is out of the scope of this patch). > > Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com> > --- > linux-user/ioctls.h | 3 +++ > linux-user/syscall_defs.h | 1 + > linux-user/syscall_types.h | 5 +++++ > 3 files changed, 9 insertions(+) > > diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h > index 9fb9d6f..944fbeb 100644 > --- a/linux-user/ioctls.h > +++ b/linux-user/ioctls.h > @@ -152,6 +152,9 @@ > #ifdef FIBMAP > IOCTL(FIBMAP, IOC_W | IOC_R, MK_PTR(TYPE_LONG)) > #endif > +#ifdef FITRIM > + IOCTL(FITRIM, IOC_W | IOC_R, MK_PTR(MK_STRUCT(STRUCT_fstrim_range))) > +#endif > #ifdef FICLONE > IOCTL(FICLONE, IOC_W, TYPE_INT) > IOCTL(FICLONERANGE, IOC_W, MK_PTR(MK_STRUCT(STRUCT_file_clone_range))) > diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h > index ed5068f..8761841 100644 > --- a/linux-user/syscall_defs.h > +++ b/linux-user/syscall_defs.h > @@ -950,6 +950,7 @@ struct target_rtc_pll_info { > #define TARGET_FIBMAP TARGET_IO(0x00,1) /* bmap access */ > #define TARGET_FIGETBSZ TARGET_IO(0x00,2) /* get the block size used for bmap */ > > +#define TARGET_FITRIM TARGET_IOWR('X', 121, struct fstrim_range) > #define TARGET_FICLONE TARGET_IOW(0x94, 9, int) > #define TARGET_FICLONERANGE TARGET_IOW(0x94, 13, struct file_clone_range) > > diff --git a/linux-user/syscall_types.h b/linux-user/syscall_types.h > index 5ba4155..dfd7608 100644 > --- a/linux-user/syscall_types.h > +++ b/linux-user/syscall_types.h > @@ -226,6 +226,11 @@ STRUCT(dm_target_versions, > STRUCT(dm_target_msg, > TYPE_ULONGLONG) /* sector */ > > +STRUCT(fstrim_range, > + TYPE_LONGLONG, /* start */ > + TYPE_LONGLONG, /* len */ > + TYPE_LONGLONG) /* minlen */ they are __u64, use TYPE_ULONGLONG. With that changed, you can add my: Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Le 18/02/2020 à 21:53, Laurent Vivier a écrit : > Le 24/01/2020 à 16:47, Aleksandar Markovic a écrit : >> From: Aleksandar Markovic <amarkovic@wavecomp.com> >> >> FITRIM ioctl accepts a pointer to the structure >> >> struct fstrim_range { >> __u64 start; >> __u64 len; >> __u64 minlen; >> }; >> >> as its third argument. >> >> All ioctls in this group (FI* ioctl) are guarded with "#ifdef", so the >> guards are used in this implementation too for consistency (however, >> many of ioctls in FI* group became old enough that their #ifdef guards >> could be removed, bit this is out of the scope of this patch). >> >> Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com> >> --- >> linux-user/ioctls.h | 3 +++ >> linux-user/syscall_defs.h | 1 + >> linux-user/syscall_types.h | 5 +++++ >> 3 files changed, 9 insertions(+) >> >> diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h >> index 9fb9d6f..944fbeb 100644 >> --- a/linux-user/ioctls.h >> +++ b/linux-user/ioctls.h >> @@ -152,6 +152,9 @@ >> #ifdef FIBMAP >> IOCTL(FIBMAP, IOC_W | IOC_R, MK_PTR(TYPE_LONG)) >> #endif >> +#ifdef FITRIM >> + IOCTL(FITRIM, IOC_W | IOC_R, MK_PTR(MK_STRUCT(STRUCT_fstrim_range))) >> +#endif >> #ifdef FICLONE >> IOCTL(FICLONE, IOC_W, TYPE_INT) >> IOCTL(FICLONERANGE, IOC_W, MK_PTR(MK_STRUCT(STRUCT_file_clone_range))) >> diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h >> index ed5068f..8761841 100644 >> --- a/linux-user/syscall_defs.h >> +++ b/linux-user/syscall_defs.h >> @@ -950,6 +950,7 @@ struct target_rtc_pll_info { >> #define TARGET_FIBMAP TARGET_IO(0x00,1) /* bmap access */ >> #define TARGET_FIGETBSZ TARGET_IO(0x00,2) /* get the block size used for bmap */ >> >> +#define TARGET_FITRIM TARGET_IOWR('X', 121, struct fstrim_range) You need also the "#ifdef" that is in the next patch. >> #define TARGET_FICLONE TARGET_IOW(0x94, 9, int) >> #define TARGET_FICLONERANGE TARGET_IOW(0x94, 13, struct file_clone_range) >> >> diff --git a/linux-user/syscall_types.h b/linux-user/syscall_types.h >> index 5ba4155..dfd7608 100644 >> --- a/linux-user/syscall_types.h >> +++ b/linux-user/syscall_types.h >> @@ -226,6 +226,11 @@ STRUCT(dm_target_versions, >> STRUCT(dm_target_msg, >> TYPE_ULONGLONG) /* sector */ >> >> +STRUCT(fstrim_range, >> + TYPE_LONGLONG, /* start */ >> + TYPE_LONGLONG, /* len */ >> + TYPE_LONGLONG) /* minlen */ > > they are __u64, use TYPE_ULONGLONG. > > With that changed, you can add my: > > Reviewed-by: Laurent Vivier <laurent@vivier.eu> > >
diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h index 9fb9d6f..944fbeb 100644 --- a/linux-user/ioctls.h +++ b/linux-user/ioctls.h @@ -152,6 +152,9 @@ #ifdef FIBMAP IOCTL(FIBMAP, IOC_W | IOC_R, MK_PTR(TYPE_LONG)) #endif +#ifdef FITRIM + IOCTL(FITRIM, IOC_W | IOC_R, MK_PTR(MK_STRUCT(STRUCT_fstrim_range))) +#endif #ifdef FICLONE IOCTL(FICLONE, IOC_W, TYPE_INT) IOCTL(FICLONERANGE, IOC_W, MK_PTR(MK_STRUCT(STRUCT_file_clone_range))) diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index ed5068f..8761841 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -950,6 +950,7 @@ struct target_rtc_pll_info { #define TARGET_FIBMAP TARGET_IO(0x00,1) /* bmap access */ #define TARGET_FIGETBSZ TARGET_IO(0x00,2) /* get the block size used for bmap */ +#define TARGET_FITRIM TARGET_IOWR('X', 121, struct fstrim_range) #define TARGET_FICLONE TARGET_IOW(0x94, 9, int) #define TARGET_FICLONERANGE TARGET_IOW(0x94, 13, struct file_clone_range) diff --git a/linux-user/syscall_types.h b/linux-user/syscall_types.h index 5ba4155..dfd7608 100644 --- a/linux-user/syscall_types.h +++ b/linux-user/syscall_types.h @@ -226,6 +226,11 @@ STRUCT(dm_target_versions, STRUCT(dm_target_msg, TYPE_ULONGLONG) /* sector */ +STRUCT(fstrim_range, + TYPE_LONGLONG, /* start */ + TYPE_LONGLONG, /* len */ + TYPE_LONGLONG) /* minlen */ + STRUCT(file_clone_range, TYPE_LONGLONG, /* src_fd */ TYPE_ULONGLONG, /* src_offset */