acd_cli icon indicating copy to clipboard operation
acd_cli copied to clipboard

Incorrect file sizes...

Open docbill opened this issue 9 years ago • 3 comments

This is interesting:

$ ls -la ~/acd/encfs/0XATOdlxBZ09mineTkP,pG1N/0DNCSQ4sBvfuz9YYru2pnJFI/TXJeuVb3y6nPDiGa1O-G,izhVVGB3sAtL5WE8mgUD2jU7, -rwxrwxr-x 1 briemers briemers 3204427784 Sep 23 03:44 /home/remote/briemers/acd/encfs/0XATOdlxBZ09mineTkP,pG1N/0DNCSQ4sBvfuz9YYru2pnJFI/TXJeuVb3y6nPDiGa1O-G,izhVVGB3sAtL5WE8mgUD2jU7,

$ ls -s ~/acd/encfs/0XATOdlxBZ09mineTkP,pG1N/0DNCSQ4sBvfuz9YYru2pnJFI/TXJeuVb3y6nPDiGa1O-G,izhVVGB3sAtL5WE8mgUD2jU7, 0 /home/remote/briemers/acd/encfs/0XATOdlxBZ09mineTkP,pG1N/0DNCSQ4sBvfuz9YYru2pnJFI/TXJeuVb3y6nPDiGa1O-G,izhVVGB3sAtL5WE8mgUD2jU7, $ du -sk ~/acd/encfs/0XATOdlxBZ09mineTkP,pG1N/0DNCSQ4sBvfuz9YYru2pnJFI/TXJeuVb3y6nPDiGa1O-G,izhVVGB3sAtL5WE8mgUD2jU7, 0 /home/remote/briemers/acd/encfs/0XATOdlxBZ09mineTkP,pG1N/0DNCSQ4sBvfuz9YYru2pnJFI/TXJeuVb3y6nPDiGa1O-G,izhVVGB3sAtL5WE8mgUD2jU7,

So depending on the commandline parameters are used, a different file size is returned... This could be one of the things that causes rsync to sometimes freeze-up, depending on what commandline options are used...

docbill avatar Sep 23 '16 19:09 docbill

Here is another one:

[briemers@media1 ~]$ du -sb ~/acd/encfs/0XATOdlxBZ09mineTkP,pG1N/0DNCSQ4sBvfuz9YYru2pnJFI/TXJeuVb3y6nPDiGa1O-G,izhVVGB3sAtL5WE8mgUD2jU7, 3204427784 /home/remote/briemers/acd/encfs/0XATOdlxBZ09mineTkP,pG1N/0DNCSQ4sBvfuz9YYru2pnJFI/TXJeuVb3y6nPDiGa1O-G,izhVVGB3sAtL5WE8mgUD2jU7,

Looks like the pattern is if one asks for the number of bytes the correct results are returned. But number of kilobytes is always 0. This likely means the fstat always returns the 0 for the number of blocks...

docbill avatar Sep 23 '16 19:09 docbill

Yes. it is the getattr call in acd_fuse.py:

    elif node.is_file:
        return dict(st_mode=stat.S_IFREG | 0o0666,
                    st_nlink=self.cache.num_parents(node.id) if self.nlinks else 1,
                    st_size=node.size,

**times)

This is not returning values for most of the stat structure...

       struct stat {
           dev_t     st_dev;         /* ID of device containing file */
           ino_t     st_ino;         /* inode number */
           mode_t    st_mode;        /* file type and mode */
           nlink_t   st_nlink;       /* number of hard links */
           uid_t     st_uid;         /* user ID of owner */
           gid_t     st_gid;         /* group ID of owner */
           dev_t     st_rdev;        /* device ID (if special file) */
           off_t     st_size;        /* total size, in bytes */
           blksize_t st_blksize;     /* blocksize for filesystem I/O */
           blkcnt_t  st_blocks;      /* number of 512B blocks allocated */

If it at least return st_blksize and st_blocks then at least commands like du, and ls would report these values correctly.

docbill avatar Sep 23 '16 19:09 docbill

I submitted a pull request for both the master and the dev branch. I only have the master branch installed...

docbill avatar Sep 24 '16 15:09 docbill