glusterfs

Форк
0
/
bug-858242.c 
84 строки · 1.7 Кб
1
#define _GNU_SOURCE
2

3
#include <stdio.h>
4
#include <errno.h>
5
#include <string.h>
6
#include <sys/types.h>
7
#include <sys/stat.h>
8
#include <fcntl.h>
9
#include <stdlib.h>
10
#include <unistd.h>
11

12
int
13
main(int argc, char *argv[])
14
{
15
    char *filename = NULL, *volname = NULL, *cmd = NULL;
16
    char buffer[1024] = {
17
        0,
18
    };
19
    int fd = -1;
20
    int ret = -1;
21
    struct stat statbuf = {
22
        0,
23
    };
24

25
    if (argc != 3) {
26
        fprintf(stderr, "usage: %s <file-name> <volname>\n", argv[0]);
27
        goto out;
28
    }
29

30
    filename = argv[1];
31
    volname = argv[2];
32

33
    fd = open(filename, O_RDWR | O_CREAT, 0);
34
    if (fd < 0) {
35
        fprintf(stderr, "open (%s) failed (%s)\n", filename, strerror(errno));
36
        goto out;
37
    }
38

39
    ret = write(fd, "test-content", 12);
40
    if (ret < 0) {
41
        fprintf(stderr, "write failed (%s)", strerror(errno));
42
        goto out;
43
    }
44

45
    ret = fsync(fd);
46
    if (ret < 0) {
47
        fprintf(stderr, "fsync failed (%s)", strerror(errno));
48
        goto out;
49
    }
50

51
    ret = fstat(fd, &statbuf);
52
    if (ret < 0) {
53
        fprintf(stderr, "fstat failed (%s)", strerror(errno));
54
        goto out;
55
    }
56

57
    ret = asprintf(&cmd, "gluster --mode=script volume stop %s force", volname);
58
    if (ret < 0) {
59
        fprintf(stderr, "cannot construct cli command string (%s)",
60
                strerror(errno));
61
        goto out;
62
    }
63

64
    ret = system(cmd);
65
    if (ret < 0) {
66
        fprintf(stderr, "stopping volume (%s) failed", volname);
67
        goto out;
68
    }
69

70
    sleep(3);
71

72
    ret = read(fd, buffer, 1024);
73
    if (ret >= 0) {
74
        fprintf(stderr,
75
                "read should've returned error, "
76
                "but is successful\n");
77
        ret = -1;
78
        goto out;
79
    }
80

81
    ret = 0;
82
out:
83
    return ret;
84
}
85

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

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

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

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