On May 17 17:52, Changqi Lu wrote:
> This commit enables the rescap function in the
> namespace by detecting the supported reservation
> function in the backend driver.
>
> Signed-off-by: Changqi Lu <luchangqi.123@bytedance.com>
> Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
> ---
> hw/nvme/ns.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/hw/nvme/ns.c b/hw/nvme/ns.c
> index ea8db175db..bb09117f4b 100644
> --- a/hw/nvme/ns.c
> +++ b/hw/nvme/ns.c
> @@ -20,6 +20,7 @@
> #include "qemu/bitops.h"
> #include "sysemu/sysemu.h"
> #include "sysemu/block-backend.h"
> +#include "block/block_int.h"
>
> #include "nvme.h"
> #include "trace.h"
> @@ -55,6 +56,13 @@ void nvme_ns_init_format(NvmeNamespace *ns)
> }
>
> id_ns->npda = id_ns->npdg = npdg - 1;
> +
> + /*
> + * The persistent reservation capacities of block
> + * and nvme are currently defined the same.
> + * If there are subsequent changes, this part needs to be changed.
> + */
> + id_ns->rescap = blk_bs(ns->blkconf.blk)->file->bs->bl.pr_cap;
This is very brittle. I see that you have an enum for both th eblock
layer and nvme. It is tricky to remember to update this if it changes in
the block layer.
> }
>
> static int nvme_ns_init(NvmeNamespace *ns, Error **errp)
> --
> 2.20.1
>
--
One of us - No more doubt, silence or taboo about mental illness.