From mboxrd@z Thu Jan  1 00:00:00 1970
Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.47])
	(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
	(No client certificate requested)
	by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9C0EA14831E
	for <io-uring@vger.kernel.org>; Fri,  4 Apr 2025 21:37:21 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.47
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
	t=1743802643; cv=none; b=nhpBr5bVFJVu1JwbIGxyf6xds5Pprx1M5b8mkrvPi1W6Vmc5DuZIWfXXf3HBFtlcrSOn9EKoWvaXokOWYpVbfZ7GunvWUT43Bb1w0PbyXQU2fqFNSZmSk3/mXik74Gmv6XBtm6btw26WGMkhbNfq9r7rQtbRT7Kyx03PUkemH5A=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
	s=arc-20240116; t=1743802643; c=relaxed/simple;
	bh=0DCKlxMd4WOSG3ftUZ4Ctz+cXJGkOENPvlIM5sFV9LY=;
	h=Message-ID:Date:MIME-Version:Subject:To:References:From:
	 In-Reply-To:Content-Type; b=TeDqy3fxsxpuz4Zz9ZjNGeCPx4lj1pQwFg6jbCn3l2EzK2qvUKepBmk/0uPua4dkkyIp1j+H0MbklNeFGVQNUM6tMok87lDRXtqCbzhAE51SrFwoxYKXVB/0KRQThXgYa1fw55EYq5F+T5FVm3FlrgAHMXD0Ji4xnu/Ptqh9Lyk=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Zf3WbOYs; arc=none smtp.client-ip=209.85.208.47
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Authentication-Results: smtp.subspace.kernel.org;
	dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Zf3WbOYs"
Received: by mail-ed1-f47.google.com with SMTP id 4fb4d7f45d1cf-5e6194e9d2cso4549097a12.2
        for <io-uring@vger.kernel.org>; Fri, 04 Apr 2025 14:37:21 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1743802640; x=1744407440; darn=vger.kernel.org;
        h=content-transfer-encoding:in-reply-to:from:content-language
         :references:to:subject:user-agent:mime-version:date:message-id:from
         :to:cc:subject:date:message-id:reply-to;
        bh=8lptF9nYhOxbBQOhHpjYCkU2eHVven7AZKBE9Gu59kE=;
        b=Zf3WbOYs4+P9WVwDdq35X8g8HR3ihSLmkVo62H+BoJxkU4GEduZKQsXuFlmxkMPjiD
         WLY4slzNlVUR9KDThVjvyDQ/RGMs5UqzGyv7IqSGQdI72ZLl2iaJD0y5WcAjICs3DlJg
         THnt4WRahDYe5mTGyjtEmL7xDAD2lvPViVu21fXUrTVvq+GRQ9AAeGbs144bv8Tr1qG3
         mzl6ik7ArIFkIKlZxm/8ocQVk4lqKOF88LiTJSr8zNcrxmVu9aDj8HyYCRdvOyRABd1T
         2xgy/5im1kQoHbAkJ33imXNcuE+0TRazOzgq1ub4AZDOg9iyz/bgqUXtywVLDKc9jzHd
         Hb3Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1743802640; x=1744407440;
        h=content-transfer-encoding:in-reply-to:from:content-language
         :references:to:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=8lptF9nYhOxbBQOhHpjYCkU2eHVven7AZKBE9Gu59kE=;
        b=JxZQCKir8qGdn+q22U/TJJD1WYwQ/yMACYuSsLKXrw5IVuCKlet3v+tIaYCeB1KUw2
         3xYED1zPwT65pdI9vpaNllbvD9zgyWXLqmVoCWDpSEHHTiwm89vTCk1JoeLxwPBzcd1/
         +LowZWbvbqfjcHt9oU91nPwZU/F0ZokJe1t+ooCjs11WvI2xQmwgvrshTJjdPuflNwg+
         A2bCPfkmkUykcrUe75i3NfQ6QAM60g7Nnzp/A+gRL0uhJD4QsVxeASZ0Y0F3vFL0SfV9
         CTcZR5ZbEqcGpIKBrDR1BzdL5ZxoajMk6oA/9w78PZB7lw3ieXF2pqRpKQSO79xYQcr2
         ARVg==
X-Forwarded-Encrypted: i=1; AJvYcCU45VuQi/JPzKAY7IqvAoK4m7owcmkUMe9WyoYCCZ6engYUEcbcC8soyeG5wgyyhVuDz3Kon9mMxg==@vger.kernel.org
X-Gm-Message-State: AOJu0YzPRcJ2cB+kOrdSfy32T8LNnc4KdXD/n3YKZEWmSMwOzzzfXwH+
	UtpmSnC6rKPs7Sk+NGG/aMFJSseZcxI3bForUk9z/nwY+YEiaaDw
X-Gm-Gg: ASbGncsD17DLK96qb1hiRAu05Ur3fHxtkrZqoSdFEfGQvj64YaW+/J/X3cnV86aUmxq
	DgQlUzdbiFJIHgLpZyNtbzWbR8IdXo6kWkuy82s2eUuMQmdqdd+52TpGPy8kGmuThRvXWh0k7f9
	xfxWlA0V750u9djxYWr6TeOBs8O/F1lvFnmS37IwicSVtHwC2k90s1Zzn8CyxgqLvICrSFuQvqy
	6ysX7XDVbrMTx8GW8xahr6uL9gXxR93+QjFdAS2IO5MThuoU4OjH8vzsJPypxItP0/sjvIHkJNM
	8gQ5m0yY4Nas3BPkaj2CD4l4W/t/nSeYnWHiEt43zskz+/zQ9vGyLJQ=
X-Google-Smtp-Source: AGHT+IFYEamDMF1AoiHh+63jf15w1or0kXtTJ6yPtK8tN8RItY4b+yds/qYXmdrfg/BVtA/h3MqdRQ==
X-Received: by 2002:a05:6402:40c9:b0:5e5:b572:a6d6 with SMTP id 4fb4d7f45d1cf-5f0b3b98ac6mr3577549a12.10.1743802639672;
        Fri, 04 Apr 2025 14:37:19 -0700 (PDT)
Received: from [192.168.8.100] ([148.252.128.155])
        by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5f087f0d6bbsm3036217a12.46.2025.04.04.14.37.18
        (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
        Fri, 04 Apr 2025 14:37:18 -0700 (PDT)
Message-ID: <609ff085-34a2-4b3d-a984-57ab2f9fcad6@gmail.com>
Date: Fri, 4 Apr 2025 22:38:33 +0100
Precedence: bulk
X-Mailing-List: io-uring@vger.kernel.org
List-Id: <io-uring.vger.kernel.org>
List-Subscribe: <mailto:io-uring+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:io-uring+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 4/4] io_uring: reuse buffer updates for registration
To: Jens Axboe <axboe@kernel.dk>, io-uring@vger.kernel.org
References: <cover.1743783348.git.asml.silence@gmail.com>
 <8996ffd533db8bd12c84cdc2ccef1fddbbb3da27.1743783348.git.asml.silence@gmail.com>
 <1f12d9bc-b20f-4228-af96-a5c885f255ee@kernel.dk>
Content-Language: en-US
From: Pavel Begunkov <asml.silence@gmail.com>
In-Reply-To: <1f12d9bc-b20f-4228-af96-a5c885f255ee@kernel.dk>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 4/4/25 17:38, Jens Axboe wrote:
> On 4/4/25 10:22 AM, Pavel Begunkov wrote:
>> @@ -316,17 +318,26 @@ static int __io_sqe_buffers_update(struct io_ring_ctx *ctx,
>>   			err = PTR_ERR(node);
>>   			break;
>>   		}
>> -		i = array_index_nospec(up->offset + done, ctx->buf_table.nr);
>> -		io_reset_rsrc_node(ctx, &ctx->buf_table, i);
>> -		ctx->buf_table.nodes[i] = node;
>> +		i = array_index_nospec(up->offset + done, buf_table->nr);
>> +		io_reset_rsrc_node(ctx, buf_table, i);
>> +		buf_table->nodes[i] = node;
>>   		if (ctx->compat)
>>   			user_data += sizeof(struct compat_iovec);
>>   		else
>>   			user_data += sizeof(struct iovec);
>>   	}
>> +	if (last_error)
>> +		*last_error = err;
>>   	return done ? done : err;
>>   }
>>   
>> +static int __io_sqe_buffers_update(struct io_ring_ctx *ctx,
>> +				   struct io_uring_rsrc_update2 *up,
>> +				   unsigned int nr_args)
>> +{
>> +	return io_buffer_table_update(ctx, &ctx->buf_table, up, nr_args, NULL);
>> +}
> 
> Minor style preference, but just do:
> 
> 	unsigned last_err;
> 	return io_buffer_table_update(ctx, &ctx->buf_table, up, nr_args, &last_err);
> 
> and skip that last_error could be conditionally set?

I can't say I see how that's better though

-- 
Pavel Begunkov