3#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;
25 uint64_t want_ext_default = conn->
want_ext;
26 uint32_t want_default = fuse_lower_32_bits(conn->
want_ext);
32 conn->
want = want_default;
34 application_init(conn);
36 rc = convert_to_conn_want_ext(conn, want_ext_default, want_default);
49 print_conn_info(
"Initial state", conn);
51 uint64_t want_ext_default = conn->
want_ext;
52 uint32_t want_default = fuse_lower_32_bits(conn->
want_ext);
55 conn->
want = want_default;
58 test_fuse_fs_init(conn);
60 rc = convert_to_conn_want_ext(conn, want_ext_default, want_default);
77 print_conn_info(
"After init", conn);
80static void test_want_conversion_basic(
void)
84 printf(
"\nTesting basic want conversion:\n");
86 print_conn_info(
"After init", &conn);
89static void test_want_conversion_conflict(
void)
94 printf(
"\nTesting want conversion conflict:\n");
104 print_conn_info(
"Test conflict initial", &conn);
107 uint64_t want_ext_default_ll = conn.
want_ext;
108 uint32_t want_default_ll = fuse_lower_32_bits(want_ext_default_ll);
112 conn.
want &= ~FUSE_CAP_SPLICE_READ;
114 rc = convert_to_conn_want_ext(&conn, want_ext_default_ll,
116 assert(rc == -EINVAL);
117 print_conn_info(
"Test conflict after", &conn);
119 printf(
"Want conversion conflict test passed\n");
122static void test_want_conversion_high_bits(
void)
127 printf(
"\nTesting want conversion high bits preservation:\n");
132 print_conn_info(
"Test high bits initial", &conn);
134 uint64_t want_ext_default_ll = conn.
want_ext;
135 uint32_t want_default_ll = fuse_lower_32_bits(want_ext_default_ll);
137 rc = convert_to_conn_want_ext(&conn, want_ext_default_ll,
141 print_conn_info(
"Test high bits after", &conn);
143 printf(
"Want conversion high bits test passed\n");
148 test_want_conversion_basic();
149 test_want_conversion_conflict();
150 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