On Fri, Sep 29, 2023 at 10:27:06AM +0000, John Garry wrote: > From: Himanshu Madhani <himanshu.madhani@xxxxxxxxxx> > > Add the following limits: > - atomic_write_boundary_bytes > - atomic_write_max_bytes > - atomic_write_unit_max_bytes > - atomic_write_unit_min_bytes > > All atomic writes limits are initialised to 0 to indicate no atomic write > support. Stacked devices are just not supported either for now. > > Signed-off-by: Himanshu Madhani <himanshu.madhani@xxxxxxxxxx> > #jpg: Heavy rewrite > Signed-off-by: John Garry <john.g.garry@xxxxxxxxxx> > --- > Documentation/ABI/stable/sysfs-block | 42 +++++++++++++++++++ > block/blk-settings.c | 60 ++++++++++++++++++++++++++++ > block/blk-sysfs.c | 33 +++++++++++++++ > include/linux/blkdev.h | 33 +++++++++++++++ > 4 files changed, 168 insertions(+) > > diff --git a/Documentation/ABI/stable/sysfs-block b/Documentation/ABI/stable/sysfs-block > index 1fe9a553c37b..05df7f74cbc1 100644 > --- a/Documentation/ABI/stable/sysfs-block > +++ b/Documentation/ABI/stable/sysfs-block > @@ -21,6 +21,48 @@ Description: > device is offset from the internal allocation unit's > natural alignment. > > +What: /sys/block/<disk>/atomic_write_max_bytes > +Date: May 2023 > +Contact: Himanshu Madhani <himanshu.madhani@xxxxxxxxxx> > +Description: > + [RO] This parameter specifies the maximum atomic write > + size reported by the device. An atomic write operation > + must not exceed this number of bytes. > +What: /sys/block/<disk>/atomic_write_unit_max_bytes > +Date: January 2023 > +Contact: Himanshu Madhani <himanshu.madhani@xxxxxxxxxx> > +Description: > + [RO] This parameter defines the largest block which can be > + written atomically with an atomic write operation. This > + value must be a multiple of atomic_write_unit_min and must > + be a power-of-two. What is the difference between these two values? > +Date: May 2023 > +Contact: Himanshu Madhani <himanshu.madhani@xxxxxxxxxx> > +Description: > + [RO] This parameter specifies the smallest block which can > + be written atomically with an atomic write operation. All > + atomic write operations must begin at a > + atomic_write_unit_min boundary and must be multiples of > + atomic_write_unit_min. This value must be a power-of-two. How can the minimum unit be anythіng but one logical block? > +extern void blk_queue_atomic_write_max_bytes(struct request_queue *q, > + unsigned int bytes); Please don't add pointless externs to prototypes in headers. > +static inline unsigned int queue_atomic_write_unit_max_bytes(const struct request_queue *q) .. and please avoid the overly long lines.