talos

Форк
0
35 строк · 969.0 Байт
1
// This Source Code Form is subject to the terms of the Mozilla Public
2
// License, v. 2.0. If a copy of the MPL was not distributed with this
3
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
4

5
package utils
6

7
import (
8
	"fmt"
9
	"os"
10
	"syscall"
11

12
	"github.com/dustin/go-humanize"
13
)
14

15
// CreateRawDisk creates a raw disk image of the specified size.
16
func CreateRawDisk(printf func(string, ...any), path string, diskSize int64) error {
17
	printf("creating raw disk of size %s", humanize.Bytes(uint64(diskSize)))
18

19
	f, err := os.Create(path)
20
	if err != nil {
21
		return fmt.Errorf("failed to create raw disk: %w", err)
22
	}
23

24
	defer f.Close() //nolint:errcheck
25

26
	if err = f.Truncate(diskSize); err != nil {
27
		return fmt.Errorf("failed to create raw disk: %w", err)
28
	}
29

30
	if err = syscall.Fallocate(int(f.Fd()), 0, 0, diskSize); err != nil {
31
		fmt.Fprintf(os.Stderr, "WARNING: failed to preallocate disk space for %q (size %d): %s", path, diskSize, err)
32
	}
33

34
	return f.Close()
35
}
36

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.