Message ID | 20241029162402.21400-5-anuj20.g@samsung.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Read/Write with meta/integrity | expand |
On Tue, Oct 29, 2024 at 09:53:56PM +0530, Anuj Gupta wrote: > +/* flags for integrity meta */ > +typedef __u16 __bitwise uio_meta_flags_t; > + > +struct uio_meta { > + uio_meta_flags_t flags; .. this is a bitwise type > +/* flags for integrity meta */ > +#define IO_INTEGRITY_CHK_GUARD (1U << 0) /* enforce guard check */ > +#define IO_INTEGRITY_CHK_REFTAG (1U << 1) /* enforce ref check */ > +#define IO_INTEGRITY_CHK_APPTAG (1U << 2) /* enforce app check */ .. but these aren't. Leading to warnings like: CHECK block/bio-integrity.c block/bio-integrity.c:371:17: warning: restricted uio_meta_flags_t degrades to integer block/bio-integrity.c:373:17: warning: restricted uio_meta_flags_t degrades to integer block/bio-integrity.c:375:17: warning: restricted uio_meta_flags_t degrades to integer block/bio-integrity.c:402:33: warning: restricted uio_meta_flags_t degrades to integer from sparse. Given that the flags are uapi, the it's probably best to just drop the __bitwise annotation.
On 10/30/2024 10:33 AM, Christoph Hellwig wrote: > .. but these aren't. Leading to warnings like: > > CHECK block/bio-integrity.c > block/bio-integrity.c:371:17: warning: restricted uio_meta_flags_t degrades to integer For some reasons this does not show up in my setup. But that only means setup needs to be fixed. Apart from dropping the __bitwise.
diff --git a/include/linux/uio.h b/include/linux/uio.h index 853f9de5aa05..eb3eee957a7d 100644 --- a/include/linux/uio.h +++ b/include/linux/uio.h @@ -82,6 +82,16 @@ struct iov_iter { }; }; +/* flags for integrity meta */ +typedef __u16 __bitwise uio_meta_flags_t; + +struct uio_meta { + uio_meta_flags_t flags; + u16 app_tag; + u64 seed; + struct iov_iter iter; +}; + static inline const struct iovec *iter_iov(const struct iov_iter *iter) { if (iter->iter_type == ITER_UBUF) diff --git a/include/uapi/linux/fs.h b/include/uapi/linux/fs.h index 753971770733..9070ef19f0a3 100644 --- a/include/uapi/linux/fs.h +++ b/include/uapi/linux/fs.h @@ -40,6 +40,15 @@ #define BLOCK_SIZE_BITS 10 #define BLOCK_SIZE (1<<BLOCK_SIZE_BITS) +/* flags for integrity meta */ +#define IO_INTEGRITY_CHK_GUARD (1U << 0) /* enforce guard check */ +#define IO_INTEGRITY_CHK_REFTAG (1U << 1) /* enforce ref check */ +#define IO_INTEGRITY_CHK_APPTAG (1U << 2) /* enforce app check */ + +#define IO_INTEGRITY_VALID_FLAGS (IO_INTEGRITY_CHK_GUARD | \ + IO_INTEGRITY_CHK_REFTAG | \ + IO_INTEGRITY_CHK_APPTAG) + #define SEEK_SET 0 /* seek relative to beginning of file */ #define SEEK_CUR 1 /* seek relative to current file position */ #define SEEK_END 2 /* seek relative to end of file */