Skip to content

[9.2.0] linux-sandbox: Retry remount-ro on EBUSY (https://github.com/bazelbuild/bazel/pull/29433)#29662

Merged
iancha1992 merged 1 commit into
bazelbuild:release-9.2.0from
bazel-io:cp29433-9.2.0-133732
Jun 10, 2026
Merged

[9.2.0] linux-sandbox: Retry remount-ro on EBUSY (https://github.com/bazelbuild/bazel/pull/29433)#29662
iancha1992 merged 1 commit into
bazelbuild:release-9.2.0from
bazel-io:cp29433-9.2.0-133732

Conversation

@bazel-io

Copy link
Copy Markdown
Member

Description

MakeFilesystemMostlyReadOnly issues MS_BIND|MS_REMOUNT|MS_RDONLY for every entry in /proc/self/mounts. On busy mounts (notably "/") this races with concurrent symlink path lookups: pick_link() in fs/namei.c calls touch_atime(), which holds the per-mount writer counter via mnt_get_write_access() across the inode update. mnt_hold_writers() in the remount path returns -EBUSY if the counter is non-zero, causing the sandbox setup to die.

The race window is short (a single update_time call), so a brief backoff-and-retry resolves it cleanly. Use the same constants runc has shipped since 2014 (5 attempts, 100 ms apart).

This is my proposal for #29424.

Motivation

Fixes #29424.

Build API Changes

No

Checklist

  • I have added tests for the new use cases (if any).
  • I have updated the documentation (if applicable).

Release Notes

RELNOTES: None

Closes #29433.

PiperOrigin-RevId: 922094350
Change-Id: I7ff8b1b5ad7992f164b44a6742c4f70cadb18f00

Commit d84b24d

### Description
MakeFilesystemMostlyReadOnly issues MS_BIND|MS_REMOUNT|MS_RDONLY for every entry in /proc/self/mounts. On busy mounts (notably "/") this races with concurrent symlink path lookups: pick_link() in fs/namei.c calls touch_atime(), which holds the per-mount writer counter via mnt_get_write_access() across the inode update. mnt_hold_writers() in the remount path returns -EBUSY if the counter is non-zero, causing the sandbox setup to die.

The race window is short (a single update_time call), so a brief backoff-and-retry resolves it cleanly. Use the same constants runc has shipped since 2014 (5 attempts, 100 ms apart).

This is my proposal for bazelbuild#29424.

### Motivation
Fixes bazelbuild#29424.

### Build API Changes
No

### Checklist

- [x] I have added tests for the new use cases (if any).
- [x] I have updated the documentation (if applicable).

### Release Notes

RELNOTES: None

Closes bazelbuild#29433.

PiperOrigin-RevId: 922094350
Change-Id: I7ff8b1b5ad7992f164b44a6742c4f70cadb18f00
@bazel-io bazel-io requested a review from a team as a code owner May 27, 2026 13:38
@bazel-io bazel-io added team-Local-Exec Issues and PRs for the Execution (Local) team awaiting-review PR is awaiting review from an assigned reviewer labels May 27, 2026
@bazel-io bazel-io requested review from fmeum and tjgq May 27, 2026 13:38
@iancha1992 iancha1992 enabled auto-merge May 27, 2026 18:03
@iancha1992 iancha1992 removed the request for review from fmeum May 27, 2026 18:03
@iancha1992 iancha1992 added this pull request to the merge queue Jun 10, 2026
Merged via the queue into bazelbuild:release-9.2.0 with commit ca13883 Jun 10, 2026
46 checks passed
@github-actions github-actions Bot removed the awaiting-review PR is awaiting review from an assigned reviewer label Jun 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

team-Local-Exec Issues and PRs for the Execution (Local) team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants