glusterfs

Форк
0
/
bug-1319374.c 
131 строка · 3.0 Кб
1
#include <glusterfs/api/glfs.h>
2
#include <glusterfs/api/glfs-handles.h>
3
#include <errno.h>
4
#include <stdio.h>
5
#include <stdlib.h>
6
#include <string.h>
7

8
#define NO_INIT 1
9

10
glfs_t *
11
setup_new_client(char *hostname, char *volname, char *log_file, int flag)
12
{
13
    int ret = 0;
14
    glfs_t *fs = NULL;
15

16
    fs = glfs_new(volname);
17
    if (!fs) {
18
        fprintf(stderr, "\nglfs_new: returned NULL (%s)\n", strerror(errno));
19
        goto error;
20
    }
21

22
    ret = glfs_set_volfile_server(fs, "tcp", hostname, 24007);
23
    if (ret < 0) {
24
        fprintf(stderr, "\nglfs_set_volfile_server failed ret:%d (%s)\n", ret,
25
                strerror(errno));
26
        goto error;
27
    }
28

29
    ret = glfs_set_logging(fs, log_file, 7);
30
    if (ret < 0) {
31
        fprintf(stderr, "\nglfs_set_logging failed with ret: %d (%s)\n", ret,
32
                strerror(errno));
33
        goto error;
34
    }
35

36
    if (flag == NO_INIT)
37
        goto out;
38

39
    ret = glfs_init(fs);
40
    if (ret < 0) {
41
        fprintf(stderr, "\nglfs_init failed with ret: %d (%s)\n", ret,
42
                strerror(errno));
43
        goto error;
44
    }
45

46
out:
47
    return fs;
48
error:
49
    return NULL;
50
}
51

52
int
53
main(int argc, char *argv[])
54
{
55
    int ret = 0;
56
    glfs_t *fs1 = NULL;
57
    glfs_t *fs2 = NULL;
58
    glfs_t *fs3 = NULL;
59
    char *volname = NULL;
60
    char *log_file = NULL;
61
    char *hostname = NULL;
62

63
    if (argc != 4) {
64
        fprintf(
65
            stderr,
66
            "Expect following args %s <hostname> <Vol> <log file location>\n",
67
            argv[0]);
68
        return -1;
69
    }
70

71
    hostname = argv[1];
72
    volname = argv[2];
73
    log_file = argv[3];
74

75
    fs1 = setup_new_client(hostname, volname, log_file, NO_INIT);
76
    if (!fs1) {
77
        fprintf(stderr, "\nsetup_new_client: returned NULL (%s)\n",
78
                strerror(errno));
79
        goto error;
80
    }
81

82
    fs2 = setup_new_client(hostname, volname, log_file, 0);
83
    if (!fs2) {
84
        fprintf(stderr, "\nsetup_new_client: returned NULL (%s)\n",
85
                strerror(errno));
86
        goto error;
87
    }
88

89
    fs3 = setup_new_client(hostname, volname, log_file, 0);
90
    if (!fs3) {
91
        fprintf(stderr, "\nsetup_new_client: returned NULL (%s)\n",
92
                strerror(errno));
93
        goto error;
94
    }
95

96
    ret = glfs_fini(fs3);
97
    if (ret < 0) {
98
        fprintf(stderr, "glfs_fini failed with ret: %d (%s)\n", ret,
99
                strerror(errno));
100
        goto error;
101
    }
102

103
    /* The crash is seen in gf_log_flush_timeout_cbk(), and this gets
104
     * triggered when 30s timer expires, hence the sleep of 31s
105
     */
106
    sleep(31);
107
    ret = glfs_fini(fs2);
108
    if (ret < 0) {
109
        fprintf(stderr, "glfs_fini failed with ret: %d (%s)\n", ret,
110
                strerror(errno));
111
        goto error;
112
    }
113

114
    ret = glfs_init(fs1);
115
    if (ret < 0) {
116
        fprintf(stderr, "\nglfs_init failed with ret: %d (%s)\n", ret,
117
                strerror(errno));
118
        goto error;
119
    }
120

121
    ret = glfs_fini(fs1);
122
    if (ret < 0) {
123
        fprintf(stderr, "glfs_fini failed with ret: %d (%s)\n", ret,
124
                strerror(errno));
125
        goto error;
126
    }
127

128
    return 0;
129
error:
130
    return -1;
131
}
132

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

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

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

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