Comment obtenir la taille totale du fichier lors de l'écriture par fusible


utilisateur10287861

Je développe un système de fichiers basé sur fuse. mais éprouve des difficultés lors du développement.

Ma question est «comment obtenir la taille totale du fichier lorsque fuse_write».

dans fuse_write,

static int test_fuse_write(const char *path, const char *buf, size_t size,
          off_t offset, struct fuse_file_info *fi)

ces arguments ne sont pas liés au fichier source. uniquement lié au fichier de destination. Je veux une taille totale de fichier.

par exemple, lors de la copie du fichier «A» dans le système de fichiers ext4 vers le fichier «B» dans le système de fichiers fuse. si la taille du fichier «A» est de 12 Mo, lorsque la fonction fuse_write est appelée pour la première fois, y a-t-il un moyen de connaître la taille du fichier (12 Mo)?

Je suis désolé de ne pas maîtriser l'anglais.

Oren Kishon

La réponse est non.

Indépendamment du système de fichiers fusible, l' écriture est une opération du système de fichiers tandis que la "copie" est un utilitaire utilisateur (ex. Cp sous Unix). L'utilitaire de copie exécute les opérations de lecture sur le fichier source et les opérations d' écriture sur le fichier de destination. Les lectures et les écritures sont "inconscientes" l'une de l'autre. Vous pouvez creuser dans le code source de cp

Plus jamais, toutes les opérations de lecture et d' écriture effectuées par un utilitaire utilisateur sont divisées par le noyau en morceaux conséquents de même taille (ex. 64K). Ainsi, une opération d'écriture de données d'une longueur de quelques mégaoctets sera vue dans votre implémentation de la fonction d'écriture par fusible comme une série d'appels conséquents (disons) de 64K de longueur.

Vous devriez être encouragé par le fait que c'est exactement le type d'illumination que vous atteignez lors de l'écriture d'un système de fichiers fusible ...

Articles connexes


Limiter la taille du fichier lors de l'écriture en java

pirate Je dois limiter la taille du fichier à 1 Go lors de l'écriture de préférence en utilisant BufferedWriter. Est-il possible d'utiliser BufferedWriterou dois-je utiliser d'autres bibliothèques? comme try (BufferedWriter writer = Files.newBufferedWriter(pat

Obtenir la taille totale du fichier en octets

Illep; Dupliquer possible: java obtient la taille du fichier efficacement J'ai un fichier appelé nom de fichier qui se trouve dans E://file.txt. FileInputStream fileinputstream = new FileInputStream(filename); Ce que je veux faire, c'est calculer la taille de

Comment obtenir la taille totale du disque sous Windows ?

ToujoursQuestionner Je peux obtenir la taille de la RAM avec ctypeset MEMORYSTATUSEX(), mais j'ai du mal à trouver quoi que ce soit pour la taille totale du disque (pas d'espace disponible, mais la capacité totale en général). martineau ActiveState a une recet

Comment obtenir la taille totale du répertoire?

zola: J'essaie donc d'obtenir la taille totale d'un répertoire en utilisant Go. Jusqu'à présent, j'ai ceci: var dirSize int64 = 0 func readSize(path string, file os.FileInfo, err error) error { if !file.IsDir() { dirSize += file.Size() } r

Comment limiter la taille du fichier lors de la validation?

Yuval Atzmon: Existe-t-il une option pour limiter la taille du fichier lors de la validation? Par exemple: des tailles de fichier supérieures à 500 Ko produiraient un avertissement. Les tailles de fichier supérieures à 10 Mo arrêteraient la validation. Je suis