mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-11-22 14:20:19 +00:00
rbd: check for nbd cookie support
Change checkRbdNbdTools() to setRbdNbdToolFeatures() Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
This commit is contained in:
parent
b95f3cdcbc
commit
793b22cf27
@ -67,10 +67,13 @@ const (
|
|||||||
setNbdIOTimeout = "io-timeout"
|
setNbdIOTimeout = "io-timeout"
|
||||||
)
|
)
|
||||||
|
|
||||||
var hasNBD = false
|
var (
|
||||||
|
hasNBD = true
|
||||||
|
hasNBDCookieSupport = false
|
||||||
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
hasNBD = checkRbdNbdTools()
|
setRbdNbdToolFeatures()
|
||||||
}
|
}
|
||||||
|
|
||||||
// rbdDeviceInfo strongly typed JSON spec for rbd device list output (of type krbd).
|
// rbdDeviceInfo strongly typed JSON spec for rbd device list output (of type krbd).
|
||||||
@ -193,27 +196,30 @@ func waitForPath(ctx context.Context, pool, namespace, image string, maxRetries
|
|||||||
return "", false
|
return "", false
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if rbd-nbd tools are installed.
|
// set features available with rbd-nbd, and NBD module loaded status.
|
||||||
func checkRbdNbdTools() bool {
|
func setRbdNbdToolFeatures() {
|
||||||
// check if the module is loaded or compiled in
|
// check if the module is loaded or compiled in
|
||||||
_, err := os.Stat(fmt.Sprintf("/sys/module/%s", moduleNbd))
|
_, err := os.Stat(fmt.Sprintf("/sys/module/%s", moduleNbd))
|
||||||
if os.IsNotExist(err) {
|
if os.IsNotExist(err) {
|
||||||
// try to load the module
|
// try to load the module
|
||||||
_, _, err = util.ExecCommand(context.TODO(), "modprobe", moduleNbd)
|
_, _, err = util.ExecCommand(context.TODO(), "modprobe", moduleNbd)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.ExtendedLogMsg("rbd-nbd: nbd modprobe failed with error %v", err)
|
hasNBD = false
|
||||||
|
log.WarningLogMsg("rbd-nbd: nbd modprobe failed with error %v", err)
|
||||||
return false
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if _, _, err := util.ExecCommand(context.TODO(), rbdTonbd, "--version"); err != nil {
|
|
||||||
log.ExtendedLogMsg("rbd-nbd: running rbd-nbd --version failed with error %v", err)
|
|
||||||
|
|
||||||
return false
|
stdout, stderr, err := util.ExecCommand(context.TODO(), rbdTonbd, "--help")
|
||||||
|
if err != nil || stderr != "" {
|
||||||
|
hasNBD = false
|
||||||
|
log.WarningLogMsg("running rbd-nbd --help failed with error:%v, stderr:%s", err, stderr)
|
||||||
}
|
}
|
||||||
log.ExtendedLogMsg("rbd-nbd tools were found.")
|
|
||||||
|
|
||||||
return true
|
if strings.Contains(stdout, "--cookie") {
|
||||||
|
hasNBDCookieSupport = true
|
||||||
|
}
|
||||||
|
|
||||||
|
log.DefaultLog("NBD module loaded: %t, rbd-nbd supported features, cookie: %t", hasNBD, hasNBDCookieSupport)
|
||||||
}
|
}
|
||||||
|
|
||||||
func attachRBDImage(ctx context.Context, volOptions *rbdVolume, device string, cr *util.Credentials) (string, error) {
|
func attachRBDImage(ctx context.Context, volOptions *rbdVolume, device string, cr *util.Credentials) (string, error) {
|
||||||
|
Loading…
Reference in New Issue
Block a user