Silence a compiler warning

2012-09-13
2012-09-13
  • I suggest the following patch to solve a compiler warning for shifting beyond the size (a circumstance which cannot actually happen) :

    --- src/dentry.c.ref 2012-09-04 07:52:54.000000000 +0200
    +++ src/dentry.c 2012-09-13 17:15:25.969595000 +0200
    @@ -191,7 +191,7 @@
    inode->ino = (u64)stbuf->st_ino;
    else
    inode->ino = (u64)stbuf->st_ino |
    - ((u64)stbuf->st_dev << (sizeof(ino_t) * 8));
    + ((u64)stbuf->st_dev << ((sizeof(ino_t) * 8) & 63));
    / Set timestamps /
    inode->creation_time = timespec_to_wim_timestamp(&stbuf->st_mtim);
    inode->last_write_time = timespec_to_wim_timestamp(&stbuf->st_mtim);

    Regards

    Jean-Pierre

     
    • Eric Biggers
      Eric Biggers
      2012-09-13

      Thanks, I've made that change.

      Unfortunately the assigning of a WIM inode number from an on-disk inode number in that function is a bit of a hack. The idea is, of course, that the device number will disambiguate files on multiple on-disk filesystems that share the same inode number. But if the inode number and device number don't fit into 64 bits, this can't be done without adding an extra field to the WIM inode.