2#define FUSE_USE_VERSION FUSE_MAKE_VERSION(3, 17)
10static void print_conn_info(
const char *prefix,
struct fuse_conn_info *conn)
12 printf(
"%s: want=0x%" PRIx32
" want_ext=0x%" PRIx64
"\n", prefix,
20 conn->
want &= ~FUSE_CAP_SPLICE_READ;
30static void test_fuse_fs_init(
struct fuse_conn_info *conn,
bool new_style)
32 uint64_t want_ext_default = conn->
want_ext;
33 uint32_t want_default = fuse_lower_32_bits(conn->
want_ext);
39 conn->
want = want_default;
42 application_init_new_style(conn);
44 application_init_old_style(conn);
46 rc = convert_to_conn_want_ext(conn, want_ext_default, want_default);
50static void test_do_init(
struct fuse_conn_info *conn,
bool new_style)
60 print_conn_info(
"Initial state", conn);
62 uint64_t want_ext_default = conn->
want_ext;
63 uint32_t want_default = fuse_lower_32_bits(conn->
want_ext);
66 conn->
want = want_default;
69 test_fuse_fs_init(conn, new_style);
71 rc = convert_to_conn_want_ext(conn, want_ext_default, want_default);
88 print_conn_info(
"After init", conn);
91static void test_want_conversion_basic(
void)
95 printf(
"\nTesting basic want conversion:\n");
96 test_do_init(&conn,
false);
97 test_do_init(&conn,
true);
98 print_conn_info(
"After init", &conn);
101static void test_want_conversion_conflict(
void)
106 printf(
"\nTesting want conversion conflict:\n");
116 print_conn_info(
"Test conflict initial", &conn);
119 uint64_t want_ext_default_ll = conn.
want_ext;
120 uint32_t want_default_ll = fuse_lower_32_bits(want_ext_default_ll);
124 conn.
want &= ~FUSE_CAP_SPLICE_READ;
126 rc = convert_to_conn_want_ext(&conn, want_ext_default_ll,
128 assert(rc == -EINVAL);
129 print_conn_info(
"Test conflict after", &conn);
131 printf(
"Want conversion conflict test passed\n");
134static void test_want_conversion_high_bits(
void)
139 printf(
"\nTesting want conversion high bits preservation:\n");
144 print_conn_info(
"Test high bits initial", &conn);
146 uint64_t want_ext_default_ll = conn.
want_ext;
147 uint32_t want_default_ll = fuse_lower_32_bits(want_ext_default_ll);
149 rc = convert_to_conn_want_ext(&conn, want_ext_default_ll,
153 print_conn_info(
"Test high bits after", &conn);
155 printf(
"Want conversion high bits test passed\n");
160 test_want_conversion_basic();
161 test_want_conversion_conflict();
162 test_want_conversion_high_bits();
#define FUSE_CAP_SPLICE_READ
#define FUSE_CAP_ATOMIC_O_TRUNC
#define FUSE_CAP_ASYNC_READ
#define FUSE_CAP_SPLICE_WRITE
#define FUSE_CAP_EXPORT_SUPPORT
#define FUSE_CAP_POSIX_LOCKS
#define FUSE_CAP_SPLICE_MOVE
#define FUSE_CAP_FLOCK_LOCKS