struct fuse_args args = FUSE_ARGS_INIT(argc, argv);
        struct fuse_session *se;
        struct fuse_cmdline_opts opts;
-       struct fuse_loop_config config;
+       struct fuse_loop_config *config;
        int ret = -1;
 
        if (fuse_parse_cmdline(&args, &opts) != 0)
        if (opts.singlethread)
                ret = fuse_session_loop(se);
        else {
-               config.clone_fd = opts.clone_fd;
-               config.max_idle_threads = opts.max_idle_threads;
-               ret = fuse_session_loop_mt(se, &config);
+               config = fuse_loop_cfg_create();
+               fuse_loop_cfg_set_clone_fd(config, opts.clone_fd);
+               fuse_loop_cfg_set_max_threads(config, opts.max_threads);
+               ret = fuse_session_loop_mt(se, config);
+               fuse_loop_cfg_destroy(config);
+               config = NULL;
        }
 
        fuse_session_unmount(se);
 
     struct fuse_args args = FUSE_ARGS_INIT(argc, argv);
     struct fuse_session *se;
     struct fuse_cmdline_opts opts;
-    struct fuse_loop_config config;
+    struct fuse_loop_config *config;
     pthread_t updater;
     int ret = -1;
 
     if (opts.singlethread) {
         ret = fuse_session_loop(se);
     } else {
-        config.clone_fd = opts.clone_fd;
-        config.max_idle_threads = opts.max_idle_threads;
-        ret = fuse_session_loop_mt(se, &config);
+               config = fuse_loop_cfg_create();
+               fuse_loop_cfg_set_clone_fd(config, opts.clone_fd);
+               fuse_loop_cfg_set_max_threads(config, opts.max_threads);
+               ret = fuse_session_loop_mt(se, config);
+               fuse_loop_cfg_destroy(config);
+               config = NULL;
     }
 
     fuse_session_unmount(se);
 
     struct fuse_args args = FUSE_ARGS_INIT(argc, argv);
     struct fuse_session *se;
     struct fuse_cmdline_opts opts;
-    struct fuse_loop_config config;
+    struct fuse_loop_config *config;
     pthread_t updater;
     int ret = -1;
 
     if (opts.singlethread)
         ret = fuse_session_loop(se);
     else {
-        config.clone_fd = opts.clone_fd;
-        config.max_idle_threads = opts.max_idle_threads;
-        ret = fuse_session_loop_mt(se, &config);
+       config = fuse_loop_cfg_create();
+       fuse_loop_cfg_set_clone_fd(config, opts.clone_fd);
+       fuse_loop_cfg_set_max_threads(config, opts.max_threads);
+       ret = fuse_session_loop_mt(se, config);
+       fuse_loop_cfg_destroy(config);
+       config = NULL;
     }
 
     fuse_session_unmount(se);
 
     struct fuse_args args = FUSE_ARGS_INIT(argc, argv);
     struct fuse_session *se;
     struct fuse_cmdline_opts opts;
-    struct fuse_loop_config config;
+    struct fuse_loop_config *config;
     int ret = -1;
 
     if (fuse_opt_parse(&args, &options, option_spec, NULL) == -1)
     if (opts.singlethread)
         ret = fuse_session_loop(se);
     else {
-        config.clone_fd = opts.clone_fd;
-        config.max_idle_threads = opts.max_idle_threads;
-        ret = fuse_session_loop_mt(se, &config);
+       config = fuse_loop_cfg_create();
+       fuse_loop_cfg_set_clone_fd(config, opts.clone_fd);
+       fuse_loop_cfg_set_max_threads(config, opts.max_threads);
+       ret = fuse_session_loop_mt(se, config);
+       fuse_loop_cfg_destroy(config);
+       config = NULL;
     }
 
     assert(retrieve_status != 1);
 
  */
 
 #define _GNU_SOURCE
-#define FUSE_USE_VERSION 34
+#define FUSE_USE_VERSION FUSE_MAKE_VERSION(3, 12)
 
 #include <fuse_lowlevel.h>
 #include <unistd.h>
        struct fuse_args args = FUSE_ARGS_INIT(argc, argv);
        struct fuse_session *se;
        struct fuse_cmdline_opts opts;
-       struct fuse_loop_config config;
+       struct fuse_loop_config *config;
        struct lo_data lo = { .debug = 0,
                              .writeback = 0 };
        int ret = -1;
        if (opts.singlethread)
                ret = fuse_session_loop(se);
        else {
-               config.clone_fd = opts.clone_fd;
-               config.max_idle_threads = opts.max_idle_threads;
-               ret = fuse_session_loop_mt(se, &config);
+               config = fuse_loop_cfg_create();
+               fuse_loop_cfg_set_clone_fd(config, opts.clone_fd);
+               fuse_loop_cfg_set_max_threads(config, opts.max_threads);
+               ret = fuse_session_loop_mt(se, config);
+               fuse_loop_cfg_destroy(config);
+               config = NULL;
        }
 
        fuse_session_unmount(se);