On Wed, Aug 19, 2026 at 05:57:20PM +0300, Vladimir Sementsov-Ogievskiy wrote:
> On 17.08.26 21:49, Peter Xu wrote:
> > On Mon, Aug 17, 2026 at 09:15:17PM +0300, Vladimir Sementsov-Ogievskiy 
> > wrote:
> > > > We only need to touch migration_capabilities_and_transport_compatible()?
> > > > It should work for both, and fail QMP commands directly might also be
> > > > slightly better.
> > > 
> > > 
> > > Hm. Actually, migration_capabilities_and_transport_compatible() only sees
> > > the parsed MigrationAddress, before any QIOChannel is created. At that
> > > point we can't call qio_channel_has_feature(ioc, 
> > > QIO_CHANNEL_FEATURE_FD_PASS),
> > > because there is no ioc yet..
> > > 
> > > So, at least, we can't check, is passed from user fd is a UNIX socket
> > > for SOCKET_ADDRESS_TYPE_FD case.
> > 
> > Maybe have one extra step for FD with socket_sockaddr_to_address()?
> > 
> 
> For this we need an fd itself, but we don't have it at the moment, we
> get it from monitof_fd_param() later (and we can't call it twice, as
> it removes the fd from the list).
> 
> Now I think, correct place to check FD case is migration_fd_valid()
> function, which also called both for outgoing and incoming paths.
> 
> So, check that we use either UNIX socket or FD in
> migration_capabilities_and_transport_compatible(), and later check
> for fd to be UNIX socket in migration_fd_valid().
> 
> Will do in v21, if no better ideas.

Sounds good.  When at it, we could comment in
migration_capabilities_and_transport_compatible() too mentioning that fd
type will be checked later (after fetching the fd handle).

-- 
Peter Xu


Reply via email to