Skip to content

Commit 9ef314e

Browse files
author
Evan Lezar
committed
Merge branch 'rename-root-flag' into 'main'
Rename root to driverRoot for CDI generation See merge request nvidia/container-toolkit/container-toolkit!284
2 parents 03cdf3b + 95f8591 commit 9ef314e

File tree

14 files changed

+81
-80
lines changed

14 files changed

+81
-80
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
## v1.12.0-rc.6
44

5+
* Rename `nvidia cdi generate` `--root` flag to `--driver-root` to better indicate intent
56
* [libnvidia-container] Add nvcubins.bin to DriverStore components under WSL2
67

78
## v1.12.0-rc.5

cmd/nvidia-ctk/cdi/generate/common.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,14 @@ import (
2727

2828
// NewCommonDiscoverer returns a discoverer for entities that are not associated with a specific CDI device.
2929
// This includes driver libraries and meta devices, for example.
30-
func NewCommonDiscoverer(logger *logrus.Logger, root string, nvidiaCTKPath string, nvmllib nvml.Interface) (discover.Discover, error) {
30+
func NewCommonDiscoverer(logger *logrus.Logger, driverRoot string, nvidiaCTKPath string, nvmllib nvml.Interface) (discover.Discover, error) {
3131
metaDevices := discover.NewDeviceDiscoverer(
3232
logger,
3333
lookup.NewCharDeviceLocator(
3434
lookup.WithLogger(logger),
35-
lookup.WithRoot(root),
35+
lookup.WithRoot(driverRoot),
3636
),
37-
root,
37+
driverRoot,
3838
[]string{
3939
"/dev/nvidia-modeset",
4040
"/dev/nvidia-uvm-tools",
@@ -43,12 +43,12 @@ func NewCommonDiscoverer(logger *logrus.Logger, root string, nvidiaCTKPath strin
4343
},
4444
)
4545

46-
graphicsMounts, err := discover.NewGraphicsMountsDiscoverer(logger, root)
46+
graphicsMounts, err := discover.NewGraphicsMountsDiscoverer(logger, driverRoot)
4747
if err != nil {
4848
return nil, fmt.Errorf("error constructing discoverer for graphics mounts: %v", err)
4949
}
5050

51-
driverFiles, err := NewDriverDiscoverer(logger, root, nvidiaCTKPath, nvmllib)
51+
driverFiles, err := NewDriverDiscoverer(logger, driverRoot, nvidiaCTKPath, nvmllib)
5252
if err != nil {
5353
return nil, fmt.Errorf("failed to create discoverer for driver files: %v", err)
5454
}

cmd/nvidia-ctk/cdi/generate/device-folder-permissions.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import (
2626

2727
type deviceFolderPermissions struct {
2828
logger *logrus.Logger
29-
root string
29+
driverRoot string
3030
nvidiaCTKPath string
3131
folders []string
3232
}
@@ -39,7 +39,7 @@ var _ discover.Discover = (*deviceFolderPermissions)(nil)
3939
// The nested devices that are applicable to the NVIDIA GPU devices are:
4040
// - DRM devices at /dev/dri/*
4141
// - NVIDIA Caps devices at /dev/nvidia-caps/*
42-
func NewDeviceFolderPermissionHookDiscoverer(logger *logrus.Logger, root string, nvidiaCTKPath string, deviceSpecs []specs.Device) (discover.Discover, error) {
42+
func NewDeviceFolderPermissionHookDiscoverer(logger *logrus.Logger, driverRoot string, nvidiaCTKPath string, deviceSpecs []specs.Device) (discover.Discover, error) {
4343
var folders []string
4444
seen := make(map[string]bool)
4545
for _, device := range deviceSpecs {
@@ -66,7 +66,7 @@ func NewDeviceFolderPermissionHookDiscoverer(logger *logrus.Logger, root string,
6666

6767
d := &deviceFolderPermissions{
6868
logger: logger,
69-
root: root,
69+
driverRoot: driverRoot,
7070
nvidiaCTKPath: nvidiaCTKPath,
7171
folders: folders,
7272
}

cmd/nvidia-ctk/cdi/generate/driver.go

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -30,20 +30,20 @@ import (
3030

3131
// NewDriverDiscoverer creates a discoverer for the libraries and binaries associated with a driver installation.
3232
// The supplied NVML Library is used to query the expected driver version.
33-
func NewDriverDiscoverer(logger *logrus.Logger, root string, nvidiaCTKPath string, nvmllib nvml.Interface) (discover.Discover, error) {
33+
func NewDriverDiscoverer(logger *logrus.Logger, driverRoot string, nvidiaCTKPath string, nvmllib nvml.Interface) (discover.Discover, error) {
3434
version, r := nvmllib.SystemGetDriverVersion()
3535
if r != nvml.SUCCESS {
3636
return nil, fmt.Errorf("failed to determine driver version: %v", r)
3737
}
3838

39-
libraries, err := NewDriverLibraryDiscoverer(logger, root, nvidiaCTKPath, version)
39+
libraries, err := NewDriverLibraryDiscoverer(logger, driverRoot, nvidiaCTKPath, version)
4040
if err != nil {
4141
return nil, fmt.Errorf("failed to create discoverer for driver libraries: %v", err)
4242
}
4343

44-
firmwares := NewDriverFirmwareDiscoverer(logger, root, version)
44+
firmwares := NewDriverFirmwareDiscoverer(logger, driverRoot, version)
4545

46-
binaries := NewDriverBinariesDiscoverer(logger, root)
46+
binaries := NewDriverBinariesDiscoverer(logger, driverRoot)
4747

4848
d := discover.Merge(
4949
libraries,
@@ -55,8 +55,8 @@ func NewDriverDiscoverer(logger *logrus.Logger, root string, nvidiaCTKPath strin
5555
}
5656

5757
// NewDriverLibraryDiscoverer creates a discoverer for the libraries associated with the specified driver version.
58-
func NewDriverLibraryDiscoverer(logger *logrus.Logger, root string, nvidiaCTKPath string, version string) (discover.Discover, error) {
59-
libraryPaths, err := getVersionLibs(logger, root, version)
58+
func NewDriverLibraryDiscoverer(logger *logrus.Logger, driverRoot string, nvidiaCTKPath string, version string) (discover.Discover, error) {
59+
libraryPaths, err := getVersionLibs(logger, driverRoot, version)
6060
if err != nil {
6161
return nil, fmt.Errorf("failed to get libraries for driver version: %v", err)
6262
}
@@ -65,14 +65,14 @@ func NewDriverLibraryDiscoverer(logger *logrus.Logger, root string, nvidiaCTKPat
6565
logger,
6666
lookup.NewFileLocator(
6767
lookup.WithLogger(logger),
68-
lookup.WithRoot(root),
68+
lookup.WithRoot(driverRoot),
6969
),
70-
root,
70+
driverRoot,
7171
libraryPaths,
7272
)
7373

7474
cfg := &discover.Config{
75-
Root: root,
75+
DriverRoot: driverRoot,
7676
NvidiaCTKPath: nvidiaCTKPath,
7777
}
7878
hooks, _ := discover.NewLDCacheUpdateHook(logger, libraries, cfg)
@@ -86,25 +86,25 @@ func NewDriverLibraryDiscoverer(logger *logrus.Logger, root string, nvidiaCTKPat
8686
}
8787

8888
// NewDriverFirmwareDiscoverer creates a discoverer for GSP firmware associated with the specified driver version.
89-
func NewDriverFirmwareDiscoverer(logger *logrus.Logger, root string, version string) discover.Discover {
89+
func NewDriverFirmwareDiscoverer(logger *logrus.Logger, driverRoot string, version string) discover.Discover {
9090
gspFirmwarePath := filepath.Join("/lib/firmware/nvidia", version, "gsp.bin")
9191
return discover.NewMounts(
9292
logger,
9393
lookup.NewFileLocator(
9494
lookup.WithLogger(logger),
95-
lookup.WithRoot(root),
95+
lookup.WithRoot(driverRoot),
9696
),
97-
root,
97+
driverRoot,
9898
[]string{gspFirmwarePath},
9999
)
100100
}
101101

102102
// NewDriverBinariesDiscoverer creates a discoverer for GSP firmware associated with the GPU driver.
103-
func NewDriverBinariesDiscoverer(logger *logrus.Logger, root string) discover.Discover {
103+
func NewDriverBinariesDiscoverer(logger *logrus.Logger, driverRoot string) discover.Discover {
104104
return discover.NewMounts(
105105
logger,
106-
lookup.NewExecutableLocator(logger, root),
107-
root,
106+
lookup.NewExecutableLocator(logger, driverRoot),
107+
driverRoot,
108108
[]string{
109109
"nvidia-smi", /* System management interface */
110110
"nvidia-debugdump", /* GPU coredump utility */
@@ -116,12 +116,12 @@ func NewDriverBinariesDiscoverer(logger *logrus.Logger, root string) discover.Di
116116
}
117117

118118
// getVersionLibs checks the LDCache for libraries ending in the specified driver version.
119-
// Although the ldcache at the specified root is queried, the paths are returned relative to this root.
119+
// Although the ldcache at the specified driverRoot is queried, the paths are returned relative to this driverRoot.
120120
// This allows the standard mount location logic to be used for resolving the mounts.
121-
func getVersionLibs(logger *logrus.Logger, root string, version string) ([]string, error) {
121+
func getVersionLibs(logger *logrus.Logger, driverRoot string, version string) ([]string, error) {
122122
logger.Infof("Using driver version %v", version)
123123

124-
cache, err := ldcache.New(logger, root)
124+
cache, err := ldcache.New(logger, driverRoot)
125125
if err != nil {
126126
return nil, fmt.Errorf("failed to load ldcache: %v", err)
127127
}
@@ -143,13 +143,13 @@ func getVersionLibs(logger *logrus.Logger, root string, version string) ([]strin
143143
}
144144
}
145145

146-
if root == "/" || root == "" {
146+
if driverRoot == "/" || driverRoot == "" {
147147
return libs, nil
148148
}
149149

150150
var relative []string
151151
for _, l := range libs {
152-
relative = append(relative, strings.TrimPrefix(l, root))
152+
relative = append(relative, strings.TrimPrefix(l, driverRoot))
153153
}
154154

155155
return relative, nil

cmd/nvidia-ctk/cdi/generate/full-gpu.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,15 @@ import (
3232
// byPathHookDiscoverer discovers the entities required for injecting by-path DRM device links
3333
type byPathHookDiscoverer struct {
3434
logger *logrus.Logger
35-
root string
35+
driverRoot string
3636
nvidiaCTKPath string
3737
pciBusID string
3838
}
3939

4040
var _ discover.Discover = (*byPathHookDiscoverer)(nil)
4141

4242
// NewFullGPUDiscoverer creates a discoverer for the full GPU defined by the specified device.
43-
func NewFullGPUDiscoverer(logger *logrus.Logger, root string, nvidiaCTKPath string, d device.Device) (discover.Discover, error) {
43+
func NewFullGPUDiscoverer(logger *logrus.Logger, driverRoot string, nvidiaCTKPath string, d device.Device) (discover.Discover, error) {
4444
// TODO: The functionality to get device paths should be integrated into the go-nvlib/pkg/device.Device interface.
4545
// This will allow reuse here and in other code where the paths are queried such as the NVIDIA device plugin.
4646
minor, ret := d.GetMinorNumber()
@@ -65,12 +65,12 @@ func NewFullGPUDiscoverer(logger *logrus.Logger, root string, nvidiaCTKPath stri
6565
deviceNodes := discover.NewCharDeviceDiscoverer(
6666
logger,
6767
deviceNodePaths,
68-
root,
68+
driverRoot,
6969
)
7070

7171
byPathHooks := &byPathHookDiscoverer{
7272
logger: logger,
73-
root: root,
73+
driverRoot: driverRoot,
7474
nvidiaCTKPath: nvidiaCTKPath,
7575
pciBusID: pciBusID,
7676
}
@@ -127,7 +127,7 @@ func (d *byPathHookDiscoverer) deviceNodeLinks() ([]string, error) {
127127

128128
var links []string
129129
for _, c := range candidates {
130-
linkPath := filepath.Join(d.root, c)
130+
linkPath := filepath.Join(d.driverRoot, c)
131131
device, err := os.Readlink(linkPath)
132132
if err != nil {
133133
d.logger.Warningf("Failed to evaluate symlink %v; ignoring", linkPath)

cmd/nvidia-ctk/cdi/generate/generate.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ type config struct {
4747
output string
4848
format string
4949
deviceNameStrategy string
50-
root string
50+
driverRoot string
5151
nvidiaCTKPath string
5252
}
5353

@@ -94,9 +94,9 @@ func (m command) build() *cli.Command {
9494
Destination: &cfg.deviceNameStrategy,
9595
},
9696
&cli.StringFlag{
97-
Name: "root",
98-
Usage: "Specify the root to use when discovering the entities that should be included in the CDI specification.",
99-
Destination: &cfg.root,
97+
Name: "driver-root",
98+
Usage: "Specify the NVIDIA GPU driver root to use when discovering the entities that should be included in the CDI specification.",
99+
Destination: &cfg.driverRoot,
100100
},
101101
&cli.StringFlag{
102102
Name: "nvidia-ctk-path",
@@ -132,7 +132,7 @@ func (m command) run(c *cli.Context, cfg *config) error {
132132
}
133133

134134
spec, err := m.generateSpec(
135-
cfg.root,
135+
cfg.driverRoot,
136136
discover.FindNvidiaCTK(m.logger, cfg.nvidiaCTKPath),
137137
deviceNamer,
138138
)
@@ -214,7 +214,7 @@ func writeToOutput(format string, data []byte, output io.Writer) error {
214214
return nil
215215
}
216216

217-
func (m command) generateSpec(root string, nvidiaCTKPath string, namer deviceNamer) (*specs.Spec, error) {
217+
func (m command) generateSpec(driverRoot string, nvidiaCTKPath string, namer deviceNamer) (*specs.Spec, error) {
218218
nvmllib := nvml.New()
219219
if r := nvmllib.Init(); r != nvml.SUCCESS {
220220
return nil, r
@@ -223,7 +223,7 @@ func (m command) generateSpec(root string, nvidiaCTKPath string, namer deviceNam
223223

224224
devicelib := device.New(device.WithNvml(nvmllib))
225225

226-
deviceSpecs, err := m.generateDeviceSpecs(devicelib, root, nvidiaCTKPath, namer)
226+
deviceSpecs, err := m.generateDeviceSpecs(devicelib, driverRoot, nvidiaCTKPath, namer)
227227
if err != nil {
228228
return nil, fmt.Errorf("failed to create device CDI specs: %v", err)
229229
}
@@ -234,7 +234,7 @@ func (m command) generateSpec(root string, nvidiaCTKPath string, namer deviceNam
234234

235235
allEdits := edits.NewContainerEdits()
236236

237-
ipcs, err := NewIPCDiscoverer(m.logger, root)
237+
ipcs, err := NewIPCDiscoverer(m.logger, driverRoot)
238238
if err != nil {
239239
return nil, fmt.Errorf("failed to create discoverer for IPC sockets: %v", err)
240240
}
@@ -250,12 +250,12 @@ func (m command) generateSpec(root string, nvidiaCTKPath string, namer deviceNam
250250

251251
allEdits.Append(ipcEdits)
252252

253-
common, err := NewCommonDiscoverer(m.logger, root, nvidiaCTKPath, nvmllib)
253+
common, err := NewCommonDiscoverer(m.logger, driverRoot, nvidiaCTKPath, nvmllib)
254254
if err != nil {
255255
return nil, fmt.Errorf("failed to create discoverer for common entities: %v", err)
256256
}
257257

258-
deviceFolderPermissionHooks, err := NewDeviceFolderPermissionHookDiscoverer(m.logger, root, nvidiaCTKPath, deviceSpecs)
258+
deviceFolderPermissionHooks, err := NewDeviceFolderPermissionHookDiscoverer(m.logger, driverRoot, nvidiaCTKPath, deviceSpecs)
259259
if err != nil {
260260
return nil, fmt.Errorf("failed to generated permission hooks for device nodes: %v", err)
261261
}
@@ -286,7 +286,7 @@ func (m command) generateSpec(root string, nvidiaCTKPath string, namer deviceNam
286286
return &spec, nil
287287
}
288288

289-
func (m command) generateDeviceSpecs(devicelib device.Interface, root string, nvidiaCTKPath string, namer deviceNamer) ([]specs.Device, error) {
289+
func (m command) generateDeviceSpecs(devicelib device.Interface, driverRoot string, nvidiaCTKPath string, namer deviceNamer) ([]specs.Device, error) {
290290
var deviceSpecs []specs.Device
291291

292292
err := devicelib.VisitDevices(func(i int, d device.Device) error {
@@ -297,7 +297,7 @@ func (m command) generateDeviceSpecs(devicelib device.Interface, root string, nv
297297
if isMigEnabled {
298298
return nil
299299
}
300-
device, err := NewFullGPUDiscoverer(m.logger, root, nvidiaCTKPath, d)
300+
device, err := NewFullGPUDiscoverer(m.logger, driverRoot, nvidiaCTKPath, d)
301301
if err != nil {
302302
return fmt.Errorf("failed to create device: %v", err)
303303
}

cmd/nvidia-ctk/cdi/generate/ipc.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@ import (
2323
)
2424

2525
// NewIPCDiscoverer creats a discoverer for NVIDIA IPC sockets.
26-
func NewIPCDiscoverer(logger *logrus.Logger, root string) (discover.Discover, error) {
26+
func NewIPCDiscoverer(logger *logrus.Logger, driverRoot string) (discover.Discover, error) {
2727
d := discover.NewMounts(
2828
logger,
2929
lookup.NewFileLocator(
3030
lookup.WithLogger(logger),
31-
lookup.WithRoot(root),
31+
lookup.WithRoot(driverRoot),
3232
),
33-
root,
33+
driverRoot,
3434
[]string{
3535
"/var/run/nvidia-persistenced/socket",
3636
"/var/run/nvidia-fabricmanager/socket",

cmd/nvidia-ctk/cdi/generate/mig-device.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import (
2727
)
2828

2929
// NewMigDeviceDiscoverer creates a discoverer for the specified mig device and its parent.
30-
func NewMigDeviceDiscoverer(logger *logrus.Logger, root string, parent device.Device, d device.MigDevice) (discover.Discover, error) {
30+
func NewMigDeviceDiscoverer(logger *logrus.Logger, driverRoot string, parent device.Device, d device.MigDevice) (discover.Discover, error) {
3131
minor, ret := parent.GetMinorNumber()
3232
if ret != nvml.SUCCESS {
3333
return nil, fmt.Errorf("error getting GPU device minor number: %v", ret)
@@ -68,7 +68,7 @@ func NewMigDeviceDiscoverer(logger *logrus.Logger, root string, parent device.De
6868
giCapDevicePath,
6969
ciCapDevicePath,
7070
},
71-
root,
71+
driverRoot,
7272
)
7373

7474
return deviceNodes, nil

0 commit comments

Comments
 (0)