SambaにINTERNAL_ERRORされた

ついうっかりSambaを更新したら、Firefoxでファイルをダウンロードしたときに失敗するようになってしまった。

ネットワークからの取得は終わっていて.partファイルはちゃんとできている。しかし、その後.partファイルから本来のファイルに差し替えるところで失敗しているように見える。
あとに残るのは .zip.part みたいなファイル(中身はOK)と、0バイトな .zip ファイル。

うんうん唸りながらログを集めていたところ、Sambaがrenameに対してINTERNAL_ERRORを返しているのを見つけた。
前後のログからどうもoplockが怪しい、ということで oplock = no を指定したら解消した。
少なくとも、20回やって毎回失敗していたのが成功して、続けて2件のダウンロードも成功したので、大丈夫であろう。

oplockを有効にすると30%ほどもパフォーマンスが上がるよ!とあるが、失敗するのでは話にならないので、とりあえずこれで。

Wiresharkで見た様子:

log.smbdの様子: (↑とは違うタイミング)

[2023/02/11 12:49:27.186686,  5, pid=63759, effective(1001, 0), real(0, 0), class=locking] ../../lib/dbwrap/dbwrap.c:180(dbwrap_lock_order_unlock)
  dbwrap_lock_order_unlock: release lock order 1 for /var/db/samba4/locking.tdb
[2023/02/11 12:49:27.186922, 10, pid=63759, effective(1001, 0), real(0, 0), class=locking] ../../source3/lib/dbwrap/dbwrap_watch.c:1027(dbwrap_watched_watch_state_destructor_fn)
  dbwrap_watched_watch_state_destructor_fn: Watcher 63759:6 not found
[2023/02/11 12:49:27.187162,  3, pid=63759, effective(1001, 0), real(0, 0), class=smb2] ../../source3/smbd/smb2_server.c:3957(smbd_smb2_request_error_ex)
  smbd_smb2_request_error_ex: smbd_smb2_request_error_ex: idx[5] status[NT_STATUS_INTERNAL_ERROR] || at ../../source3/smbd/smb2_server.c:2053
[2023/02/11 12:49:27.187387, 10, pid=63759, effective(1001, 0), real(0, 0), class=smb2] ../../source3/smbd/smb2_server.c:3849(smbd_smb2_request_done_ex)
  smbd_smb2_request_done_ex: mid [5705] idx[5] status[NT_STATUS_INTERNAL_ERROR] body[8] dyn[yes:1] at ../../source3/smbd/smb2_server.c:4005