Skip to content

feat(transfer): wire --info=MOUNT emission (3.4.1 parity)#4116

Merged
oferchen merged 1 commit into
masterfrom
feat/info-mount-emission-2162
May 16, 2026
Merged

feat(transfer): wire --info=MOUNT emission (3.4.1 parity)#4116
oferchen merged 1 commit into
masterfrom
feat/info-mount-emission-2162

Conversation

@oferchen
Copy link
Copy Markdown
Owner

Closes #2162

MOUNT sits at upstream's `INFO_GTE(MOUNT, 1)` gate but is not part of
any `info_verbosity[]` level, so it only fires when explicitly enabled
via `--info=MOUNT`. Upstream emits
`"[%s] skipping mount-point dir %s"` from `flist.c:1319` inside
`send_file_list()` once `--one-file-system` (`-xx`) prunes a directory
that crosses a mount boundary.

oc-rsync had the flag wired through CLI parsing but no producer. The
audit doc flagged this as "Stub" with the note: "Our --one-file-system
traversal does not log mount-skip events under any info gate."

Wire two emission sites that cover both skip paths:

1. crates/engine/src/local_copy/executor/directory/recursive/entry.rs
   ::process_planned_entry - the recursive walk path. When the planner
   classifies a child directory as `EntryAction::SkipMountPoint`, emit
   the upstream-format notice via `info_log!(Mount, 1, ...)` before
   recording the skip event.

2. crates/engine/src/local_copy/executor/sources/orchestration.rs
   ::process_single_source - the root-level `-xx` path. When a source
   directory crosses its parent's device boundary, emit the same
   notice before returning early.

Both sites format the message as
`skipping mount-point dir <path>`; the `[sender]` role prefix is added
downstream by the renderer (mirroring upstream's `who_am_i()` wrapper).

The receiver-side `cannot delete mount point` notice
(`generator.c:325`) is not yet mirrored because `FLAG_MOUNT_DIR` is
not propagated through our flist; the audit row records this as a
follow-up.

Two new unit tests assert byte-for-byte upstream wording and confirm
that the notice is suppressed when MOUNT is left at its default 0
level. The audit doc rolls MOUNT from Stub to Match.

Closes #2162.
@github-actions github-actions Bot added the enhancement New feature or request label May 16, 2026
@oferchen oferchen merged commit 5236a47 into master May 16, 2026
19 checks passed
@oferchen oferchen deleted the feat/info-mount-emission-2162 branch May 16, 2026 02:10
@oferchen oferchen mentioned this pull request May 16, 2026
oferchen added a commit that referenced this pull request May 18, 2026
MOUNT sits at upstream's `INFO_GTE(MOUNT, 1)` gate but is not part of
any `info_verbosity[]` level, so it only fires when explicitly enabled
via `--info=MOUNT`. Upstream emits
`"[%s] skipping mount-point dir %s"` from `flist.c:1319` inside
`send_file_list()` once `--one-file-system` (`-xx`) prunes a directory
that crosses a mount boundary.

oc-rsync had the flag wired through CLI parsing but no producer. The
audit doc flagged this as "Stub" with the note: "Our --one-file-system
traversal does not log mount-skip events under any info gate."

Wire two emission sites that cover both skip paths:

1. crates/engine/src/local_copy/executor/directory/recursive/entry.rs
   ::process_planned_entry - the recursive walk path. When the planner
   classifies a child directory as `EntryAction::SkipMountPoint`, emit
   the upstream-format notice via `info_log!(Mount, 1, ...)` before
   recording the skip event.

2. crates/engine/src/local_copy/executor/sources/orchestration.rs
   ::process_single_source - the root-level `-xx` path. When a source
   directory crosses its parent's device boundary, emit the same
   notice before returning early.

Both sites format the message as
`skipping mount-point dir <path>`; the `[sender]` role prefix is added
downstream by the renderer (mirroring upstream's `who_am_i()` wrapper).

The receiver-side `cannot delete mount point` notice
(`generator.c:325`) is not yet mirrored because `FLAG_MOUNT_DIR` is
not propagated through our flist; the audit row records this as a
follow-up.

Two new unit tests assert byte-for-byte upstream wording and confirm
that the notice is suppressed when MOUNT is left at its default 0
level. The audit doc rolls MOUNT from Stub to Match.

Closes #2162.
oferchen added a commit that referenced this pull request May 18, 2026
MOUNT sits at upstream's `INFO_GTE(MOUNT, 1)` gate but is not part of
any `info_verbosity[]` level, so it only fires when explicitly enabled
via `--info=MOUNT`. Upstream emits
`"[%s] skipping mount-point dir %s"` from `flist.c:1319` inside
`send_file_list()` once `--one-file-system` (`-xx`) prunes a directory
that crosses a mount boundary.

oc-rsync had the flag wired through CLI parsing but no producer. The
audit doc flagged this as "Stub" with the note: "Our --one-file-system
traversal does not log mount-skip events under any info gate."

Wire two emission sites that cover both skip paths:

1. crates/engine/src/local_copy/executor/directory/recursive/entry.rs
   ::process_planned_entry - the recursive walk path. When the planner
   classifies a child directory as `EntryAction::SkipMountPoint`, emit
   the upstream-format notice via `info_log!(Mount, 1, ...)` before
   recording the skip event.

2. crates/engine/src/local_copy/executor/sources/orchestration.rs
   ::process_single_source - the root-level `-xx` path. When a source
   directory crosses its parent's device boundary, emit the same
   notice before returning early.

Both sites format the message as
`skipping mount-point dir <path>`; the `[sender]` role prefix is added
downstream by the renderer (mirroring upstream's `who_am_i()` wrapper).

The receiver-side `cannot delete mount point` notice
(`generator.c:325`) is not yet mirrored because `FLAG_MOUNT_DIR` is
not propagated through our flist; the audit row records this as a
follow-up.

Two new unit tests assert byte-for-byte upstream wording and confirm
that the notice is suppressed when MOUNT is left at its default 0
level. The audit doc rolls MOUNT from Stub to Match.

Closes #2162.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant