glusterfs

Форк
0
/
issue-2232.c 
84 строки · 1.9 Кб
1

2
#include <stdio.h>
3
#include <errno.h>
4
#include <stdlib.h>
5
#include <errno.h>
6
#include <string.h>
7
#include <glusterfs/api/glfs.h>
8

9
int main(int argc, char **argv)
10
{
11
    char log[128];
12
    struct dirent entry;
13
    struct dirent *ent;
14
    glfs_xreaddirp_stat_t *xstat;
15
    int ret, flags;
16

17
    if (argc != 3) {
18
        fprintf(stderr, "Syntax: %s <hostname> <volume>\n", argv[0]);
19
        exit(1);
20
    }
21
    char *hostname = argv[1];
22
    char *volname = argv[2];
23

24
    glfs_t *fs = glfs_new(volname);
25
    if (!fs) {
26
        fprintf(stderr, "glfs_new() failed\n");
27
        exit(1);
28
    }
29

30
    ret = glfs_set_volfile_server(fs, "tcp", hostname, 24007);
31
    if (ret < 0) {
32
        fprintf(stderr, "glfs_set_volfile_server() failed\n");
33
        return ret;
34
    }
35

36
    sprintf(log, "/tmp/logs-%d.log", getpid());
37
    ret = glfs_set_logging(fs, log, 9);
38
    if (ret < 0) {
39
        fprintf(stderr, "glfs_set_logging() failed\n");
40
        return ret;
41
    }
42

43
    ret = glfs_init(fs);
44
    if (ret < 0) {
45
        fprintf(stderr, "glfs_init() failed\n");
46
        return ret;
47
    }
48

49
    glfs_fd_t *fd = glfs_opendir(fs, "/");
50
    if (fd == NULL) {
51
        fprintf(stderr, "glfs_opendir() failed\n");
52
        return 1;
53
    }
54

55
    flags = GFAPI_XREADDIRP_STAT | GFAPI_XREADDIRP_HANDLE;
56
    xstat = NULL;
57
    while ((ret = glfs_xreaddirplus_r(fd, flags, &xstat, &entry, &ent)) > 0) {
58
        if (xstat != NULL) {
59
            glfs_free(xstat);
60
        }
61
        if ((strcmp(ent->d_name, ".") == 0) ||
62
            (strcmp(ent->d_name, "..") == 0)) {
63
            xstat = NULL;
64
            continue;
65
        }
66
        if ((xstat == NULL) || ((ret & GFAPI_XREADDIRP_HANDLE) == 0)) {
67
            fprintf(stderr, "glfs_xreaddirplus_r() failed: %s\n",
68
                    strerror(errno));
69
            return 1;
70
        }
71

72
        xstat = NULL;
73
    }
74

75
    if (ret < 0) {
76
        fprintf(stderr, "glfs_xreaddirplus_r() failed\n");
77
        return ret;
78
    }
79

80
    glfs_close(fd);
81

82
    glfs_fini(fs);
83

84
    return ret;
85
}
86

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

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

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

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