glusterfs

Форк
0
/
bug1283983.c 
122 строки · 3.8 Кб
1
#include <fcntl.h>
2
#include <unistd.h>
3
#include <time.h>
4
#include <limits.h>
5
#include <string.h>
6
#include <stdio.h>
7
#include <errno.h>
8
#include <stdlib.h>
9
#include <glusterfs/api/glfs.h>
10
#include <glusterfs/api/glfs-handles.h>
11
int gfapi = 1;
12

13
#define LOG_ERR(func, ret)                                                     \
14
    do {                                                                       \
15
        if (ret != 0) {                                                        \
16
            fprintf(stderr, "%s : returned error ret(%d), errno(%d)\n", func,  \
17
                    ret, errno);                                               \
18
            exit(1);                                                           \
19
        } else {                                                               \
20
            fprintf(stderr, "%s : returned %d\n", func, ret);                  \
21
        }                                                                      \
22
    } while (0)
23
#define LOG_IF_NO_ERR(func, ret)                                               \
24
    do {                                                                       \
25
        if (ret == 0) {                                                        \
26
            fprintf(stderr, "%s : hasn't returned error %d\n", func, ret);     \
27
            exit(1);                                                           \
28
        } else {                                                               \
29
            fprintf(stderr, "%s : returned %d\n", func, ret);                  \
30
        }                                                                      \
31
    } while (0)
32
int
33
main(int argc, char *argv[])
34
{
35
    glfs_t *fs = NULL;
36
    int ret = 0, i;
37
    glfs_fd_t *fd = NULL;
38
    char *filename = "/a1";
39
    char *filename2 = "/a2";
40
    struct stat sb = {
41
        0,
42
    };
43
    struct glfs_upcall *cbk = NULL;
44
    char *logfile = NULL;
45
    char *volname = NULL;
46
    int cnt = 1;
47
    struct glfs_upcall_inode *in_arg = NULL;
48
    struct glfs_object *root = NULL, *leaf = NULL;
49

50
    fprintf(stderr, "Starting libgfapi_fini\n");
51
    if (argc != 4) {
52
        fprintf(stderr, "Invalid argument\n");
53
        exit(1);
54
    }
55

56
    hostname = argv[1] volname = argv[2];
57
    logfile = argv[3];
58

59
    fs = glfs_new(volname);
60
    if (!fs) {
61
        fprintf(stderr, "glfs_new: returned NULL\n");
62
        return 1;
63
    }
64

65
    ret = glfs_set_volfile_server(fs, "tcp", hostname, 24007);
66
    LOG_ERR("glfs_set_volfile_server", ret);
67

68
    ret = glfs_set_logging(fs, logfile, 7);
69
    LOG_ERR("glfs_set_logging", ret);
70

71
    ret = glfs_init(fs);
72
    LOG_ERR("glfs_init", ret);
73

74
    sleep(2);
75
    root = glfs_h_lookupat(fs, NULL, "/", &sb, 0);
76
    if (!root) {
77
        ret = -1;
78
        LOG_ERR("glfs_h_lookupat root", ret);
79
    }
80
    leaf = glfs_h_lookupat(fs, root, filename, &sb, 0);
81
    if (!leaf) {
82
        ret = -1;
83
        LOG_IF_NO_ERR("glfs_h_lookupat leaf", ret);
84
    }
85

86
    leaf = glfs_h_creat(fs, root, filename, O_RDWR, 0644, &sb);
87
    if (!leaf) {
88
        ret = -1;
89
        LOG_ERR("glfs_h_lookupat leaf", ret);
90
    }
91
    fprintf(stderr, "glfs_h_create leaf - %p\n", leaf);
92

93
    leaf = glfs_h_lookupat(fs, root, filename2, &sb, 0);
94
    if (!leaf) {
95
        ret = -1;
96
        LOG_IF_NO_ERR("glfs_h_lookupat leaf", ret);
97
    }
98

99
    ret = glfs_h_rename(fs, root, filename, root, filename2);
100
    LOG_ERR("glfs_rename", ret);
101

102
    while (cnt++ < 5) {
103
        ret = glfs_h_poll_upcall(fs, &cbk);
104
        LOG_ERR("glfs_h_poll_upcall", ret);
105

106
        /* There should not be any upcalls sent */
107
        if (glfs_upcall_get_reason(cbk) != GLFS_UPCALL_EVENT_NULL) {
108
            fprintf(stderr, "Error: Upcall received(%d)\n",
109
                    glfs_upcall_get_reason(cbk));
110
            exit(1);
111
        }
112

113
        glfs_free(cbk);
114
    }
115

116
    ret = glfs_fini(fs);
117
    LOG_ERR("glfs_fini", ret);
118

119
    fprintf(stderr, "End of libgfapi_fini\n");
120

121
    exit(0);
122
}
123

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

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

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

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