[Samba] {Device Timeout} The I/O operation specified in %hs was not completed before the timeout period expired

Rowland Penny rpenny at samba.org
Thu Jan 18 08:32:03 UTC 2024


On Wed, 17 Jan 2024 17:57:31 -0300
Elias Pereira <empbilly at gmail.com> wrote:

> >
> > samba-tool drs replicate dc2 dc3
> > DC=ForestDnsZones,DC=campus,DC=sertao,DC=ifrs,DC=edu,DC=br
> > --async-op -d10 It should complete without the error.
> 
> 
> My question is whether it will actually run without any errors. I
> checked all the logs
> in the /var/log/samba folder, and nothing is saved about the
> execution with the --async-op option.
> 
> If it runs in the background, it might open a fork of the samba root
> process. Could this be the case?
> Excuse my insistence, but how can I be sure that there really wasn't
> an error in the command execution process?
> 

As I understand it, the only error you had was that your logs were
getting filled with the message in the subject line and everything was
working correctly.

Adding '--async-op' to the command seems to have fixed it, so how did I
come up with that option ?

I read the python code for the drs replicate command, were I found this:

class cmd_drs_replicate(Command):
    """Replicate a naming context between two DCs."""

Amongst its options is this:

Option("--async-op", help="use ASYNC_OP for the replication",
action="store_true"),

Which if it is isn't used is set to False:

    def run(self, DEST_DC, SOURCE_DC, NC,
            add_ref=False, sync_forced=False, sync_all=False, full_sync=False,
            local=False, local_online=False, async_op=False, single_object=False,
            sambaopts=None, credopts=None, versionopts=None):

Which leads to this piece of code being run:

        if not async_op:
            # Give the sync replication 5 minutes time
            server_bind.request_timeout = 5 * 60

But if it is used, this code is used:

        req_options = 0
        ..............
        if async_op:
            req_options |= drsuapi.DRSUAPI_DRS_ASYNC_OP

so 'DRSUAPI_DRS_ASYNC_OP' is set to 'something' but what ?

You can find that here:

librpc/idl/drsuapi.idl:20:		DRSUAPI_DRS_ASYNC_OP
        = 0x00000001,

It is being set to '1', but what does that do ?

If you read the release notes for 4.5.0 , you will find this:

samba-tool drs replicate with new options
-----------------------------------------

'samba-tool drs replicate' got two new options:

The option '--local-online' will do the DsReplicaSync() via IRPC
to the local dreplsrv service.

The option '--async-op' will add DRSUAPI_DRS_ASYNC_OP to the
DsReplicaSync(), which won't wait for the replication result.


It would seem that, whilst the replication was/is working correctly, a
requested reply wasn't received in time, so you got that error message.

Rowland



More information about the samba mailing list