From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 87BC8C001DF for ; Thu, 3 Aug 2023 00:08:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230280AbjHCAIO (ORCPT ); Wed, 2 Aug 2023 20:08:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53804 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230085AbjHCAHt (ORCPT ); Wed, 2 Aug 2023 20:07:49 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8767F272B for ; Wed, 2 Aug 2023 17:06:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1691021188; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=E4JlhFPikF+sSc4TfuvT2iSqBvcIXhfFcOmWT8+LXOA=; b=Jm0DJbCe8KNATUcFtyborOcUk+PgPCyjjKQ5S0RpBenCDyzx1YtdRTV4Xw37BRzXowclgZ P2OBrnCf4RZFsYfAhB1v8iJ4rk7Sfz8bA7hjOo1W0bNqW+visiJPh0Czp1TIrLrFKn1zM/ PeQd1gM976dSw+d2pGhHRVK0OhnCyDc= Received: from mimecast-mx02.redhat.com (66.187.233.73 [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-30-y-ZaeKMtPM2ckAmg_G7-VA-1; Wed, 02 Aug 2023 20:06:25 -0400 X-MC-Unique: y-ZaeKMtPM2ckAmg_G7-VA-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id A16441C0782A; Thu, 3 Aug 2023 00:06:24 +0000 (UTC) Received: from fedora (unknown [10.72.120.3]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 86EBC112132D; Thu, 3 Aug 2023 00:06:06 +0000 (UTC) Date: Thu, 3 Aug 2023 08:06:00 +0800 From: Ming Lei To: "Andreas Hindborg (Samsung)" Cc: Niklas Cassel , Matias =?iso-8859-1?Q?Bj=F8rling?= , open list , Damien Le Moal , Jens Axboe , "gost.dev@samsung.com" , "hch@infradead.org" , Johannes Thumshirn , Aravind Ramesh , "open list:BLOCK LAYER" , Hans Holmberg , Minwoo Im Subject: Re: [PATCH v9 2/2] ublk: enable zoned storage support Message-ID: References: <20230714072510.47770-1-nmi@metaspace.dk> <20230714072510.47770-3-nmi@metaspace.dk> <87il9zot9c.fsf@metaspace.dk> <87a5v9pzx7.fsf@metaspace.dk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <87a5v9pzx7.fsf@metaspace.dk> X-Scanned-By: MIMEDefang 3.1 on 10.11.54.3 Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org On Wed, Aug 02, 2023 at 11:09:56AM +0200, Andreas Hindborg (Samsung) wrote: > > Ming Lei writes: > > > On Tue, Aug 01, 2023 at 02:11:56PM +0200, Andreas Hindborg (Samsung) wrote: > >> > >> Niklas Cassel writes: > >> > >> > On Fri, Jul 14, 2023 at 09:25:10AM +0200, Andreas Hindborg wrote: > >> >> From: Andreas Hindborg > >> > > >> > Hello Andreas! > >> > > >> > >> > >> > >> >> /* for READ request, writing data in iod->addr to rq buffers */ > >> >> @@ -1120,6 +1404,11 @@ static void ublk_commit_completion(struct ublk_device *ub, > >> >> /* find the io request and complete */ > >> >> req = blk_mq_tag_to_rq(ub->tag_set.tags[qid], tag); > >> >> > >> >> + if (io->flags & UBLK_IO_FLAG_ZONE_APPEND) { > >> > > >> > Do we really need to introduce a completely new flag just for this? > >> > > >> > if (req_op(req) == REQ_OP_ZONE_APPEND) > >> > > >> > should work just as well, no? > >> > >> Makes sense, thanks. > > > > The above one can be replaced with req_op(). > > > > But extra cost is added when retrieving request for the check in > > __ublk_ch_uring_cmd(). > > > > How about this (diff to v9): > > @@ -1709,7 +1702,7 @@ static int __ublk_ch_uring_cmd(struct io_uring_cmd *cmd, > goto out; > > if (ublk_support_user_copy(ubq) && > - !(io->flags & UBLK_IO_FLAG_ZONE_APPEND) && ub_cmd->addr) { > + _IOC_NR(cmd_op) != UBLK_IO_COMMIT_AND_FETCH_REQ && ub_cmd->addr) { > ret = -EINVAL; > goto out; > } Let's merge the above original user_copy check into 'case UBLK_IO_FETCH_REQ' & 'case UBLK_IO_COMMIT_AND_FETCH_REQ' first, then this patch can be cleaner, which can be done as one prep change for zoned support. > @@ -1751,6 +1744,12 @@ static int __ublk_ch_uring_cmd(struct io_uring_cmd *cmd, > if (!(io->flags & UBLK_IO_FLAG_OWNED_BY_SRV)) > goto out; > > + if (ublk_support_user_copy(ubq) && > + req_op(req) != REQ_OP_ZONE_APPEND && ub_cmd->addr) { > + ret = -EINVAL; > + goto out; > + } > + Given request is available for UBLK_IO_COMMIT_AND_FETCH_REQ, this approach is good, and UBLK_IO_FETCH_REQ cmd doesn't have OP. Thanks, Ming