oxidecomputer / oxidecomputer/omicron

illumos-utils Snapshot::full_path can return invalid paths

Open
#8,023 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
572
Forks
97
Avg merge
2d 12h
Merged PRs (30d)
96

Description

There are a few scenarios where the Zfs::Snapshot::full_path function can return invalid data. For example consider the following two scenarios

BRM42220009 # zfs get -Ho value name /var/tmp
rpool/ROOT/ramdisk
BRM42220009 # zfs get -Ho value mountpoint rpool/ROOT/ramdisk
legacy
BRM42220009 # zfs get -Ho value mountpoint oxi_43b21587-4614-45dc-a4c7-89f7ebc203c2/swap
-

Both of these datasets would result in paths that look like legacy/.zfs/snapshot/<SNAP_NAME> and -/.zfs/snapshot/<SNAP_NAME>

We could improve this logic by possibly looking in /etc/mnttab like we are doing for the sled-diagnostics crate which would mean that this function should return a Result<Option<_>, Error>

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at the Zfs::Snapshot::full_path function and inspect how it obtains the dataset name and mountpoint. Compare the existing /etc/mnttab lookup in the sled-diagnostics crate, then define behavior for legacy and '-' mountpoints, including the proposed Result<Option<_>, Error> API; done means these cases no longer produce invalid paths.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.