Vous n'êtes pas identifié.
Hello, je recherche de la documentation sur Fuse d'un point de vue développement.. j'ai déjà bossé quelque peu dessus avec le peu de doc que j'ai trouvé sur la toile.. avec la version de fuse-2.5.x ca marchait pas mal (enfin il me semble). Mais depuis le 2.6.x j'ai des choses vraiment bizarres et aléatoires.. bref c'est indebuggable. Comme par exemple, dans mon système monté avec fuse.. si j'affiche un jpg, j'ai aléatoirement de la merde sur l'image.. ou alors celle-ci se déforme.. bref on dirait que la zone mémoire n'a pas été allouée et que j'ai alors du bruit.. mais si au moins je pouvais chopper un segfault.. mais même pas..
J'utilise une fonction de ce genre :
static int fos_read(const char *path, char *buf, size_t size, off_t offset, struct fuse_file_info *fi) { int length; char *buf_tmp; s_fosfat_file *file; (void)fi; /* Get the stats and test if it is a file */ if ((file = fosfat_get_stat(dev, path)) && !file->att.isdir) { length = file->size; /* Fix the size in function of the offset */ if (offset + (signed)size > length) size = length - offset; /* Read the data */ buf_tmp = fosfat_get_buffer(dev, path, offset, size); /* Copy the data for FUSE */ if (buf_tmp) { memcpy(buf, buf_tmp, size); free(buf_tmp); } else return -ENOENT; } else return -ENOENT; return size; }
Afin de récupérer des datas.. Ce que je cherche vraiment comme doc c'est l'explication complète de la fonction read() qui doit être implémentée pour Fuse..
En fait j'ai implémenté le stricte minimum:
/** FUSE implemented functions */ static struct fuse_operations fosfat_oper = { .getattr = fos_getattr, .readdir = fos_readdir, .open = fos_open, .read = fos_read, };
Concernant le read j'ai trouvé des infos mais ca date d'un vieux fuse.. genre 2.2.. même que le helloworld chez Fuse n'est plus d'actualité car il n'a pas été adapté 2.6.. ce qui nécessite un -DFUSE_USE_VERSION=25 pour le faire passer. Et si je recompile ma lib en 25 ca ne change rien au problème.. faudrait que je reteste avec le dernier fuse-2.5.x.
Alors si qqun maitrise cette lib, j'en serais vraiment heureux :-)
Hors ligne
Salut,
Ils ont une liste de diffusion "fuse-devel" qui sera certainement plus à même de te répondre : https://lists.sourceforge.net/lists/listinfo/fuse-devel
A+:
Hors ligne
Problème corrigé (enfin).. c'était bien sûr une connerie mais ça m'a pris un plomb à la trouver... Fuse se charge pas défaut en multi-thread et ça fout une belle merde si vous ne prévoyez pas le coup. Ainsi il suffit de demander à Fuse de se charger en single à l'aide de l'option "-s" et tout roule :-).
http://svn.gna.org/viewcvs/fosfat/trunk … fosmount.c
Hors ligne