Message ID | 20230112140412.667308-9-niklas.cassel@wdc.com |
---|---|
State | Superseded |
Headers | show |
Series | Add Command Duration Limits support | expand |
On 1/12/23 15:03, Niklas Cassel wrote: > From: Damien Le Moal <damien.lemoal@opensource.wdc.com> > > Introduce the new block IO status BLK_STS_DURATION_LIMIT for LLDDs to > report command that failed due to a command duration limit being > exceeded. This new status is mapped to the ETIME error code to allow > users to differentiate "soft" duration limit failures from other more > serious hardware related errors. > > Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com> > Co-developed-by: Niklas Cassel <niklas.cassel@wdc.com> > Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com> > --- > block/blk-core.c | 3 +++ > include/linux/blk_types.h | 6 ++++++ > 2 files changed, 9 insertions(+) > > diff --git a/block/blk-core.c b/block/blk-core.c > index b5098355d8b2..67b0b24aa171 100644 > --- a/block/blk-core.c > +++ b/block/blk-core.c > @@ -170,6 +170,9 @@ static const struct { > [BLK_STS_ZONE_OPEN_RESOURCE] = { -ETOOMANYREFS, "open zones exceeded" }, > [BLK_STS_ZONE_ACTIVE_RESOURCE] = { -EOVERFLOW, "active zones exceeded" }, > > + /* Command duration limit device-side timeout */ > + [BLK_STS_DURATION_LIMIT] = { -ETIME, "duration limit exceeded" }, > + > /* everything else not covered above: */ > [BLK_STS_IOERR] = { -EIO, "I/O" }, > }; > diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h > index 99be590f952f..cde997590765 100644 > --- a/include/linux/blk_types.h > +++ b/include/linux/blk_types.h > @@ -166,6 +166,12 @@ typedef u16 blk_short_t; > */ > #define BLK_STS_OFFLINE ((__force blk_status_t)17) > > +/* > + * BLK_STS_DURATION_LIMIT is returned from the driver when the target device > + * aborted the command because it exceeded one of its Command Duration Limits. > + */ > +#define BLK_STS_DURATION_LIMIT ((__force blk_status_t)18) > + > /** > * blk_path_error - returns true if error may be path related > * @error: status the request was completed with Reviewed-by: Hannes Reinecke <hare@suse.de> Cheers, Hannes
Looks good:
Reviewed-by: Christoph Hellwig <hch@lst.de>
diff --git a/block/blk-core.c b/block/blk-core.c index b5098355d8b2..67b0b24aa171 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -170,6 +170,9 @@ static const struct { [BLK_STS_ZONE_OPEN_RESOURCE] = { -ETOOMANYREFS, "open zones exceeded" }, [BLK_STS_ZONE_ACTIVE_RESOURCE] = { -EOVERFLOW, "active zones exceeded" }, + /* Command duration limit device-side timeout */ + [BLK_STS_DURATION_LIMIT] = { -ETIME, "duration limit exceeded" }, + /* everything else not covered above: */ [BLK_STS_IOERR] = { -EIO, "I/O" }, }; diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h index 99be590f952f..cde997590765 100644 --- a/include/linux/blk_types.h +++ b/include/linux/blk_types.h @@ -166,6 +166,12 @@ typedef u16 blk_short_t; */ #define BLK_STS_OFFLINE ((__force blk_status_t)17) +/* + * BLK_STS_DURATION_LIMIT is returned from the driver when the target device + * aborted the command because it exceeded one of its Command Duration Limits. + */ +#define BLK_STS_DURATION_LIMIT ((__force blk_status_t)18) + /** * blk_path_error - returns true if error may be path related * @error: status the request was completed with