All of lore.kernel.org
 help / color / mirror / Atom feed
* [android-common:android-mainline-tracking 386/836] fs/incfs/vfs.c:103:13: error: initialization of 'int (*)(struct user_namespace *, struct dentry *, struct iattr *)' from incompatible pointer type 'int (*)(struct dentry *, struct iattr *)'
@ 2021-04-11  5:27 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2021-04-11  5:27 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 23738 bytes --]

tree:   https://android.googlesource.com/kernel/common android-mainline-tracking
head:   74f61c888eeeb9cbc57d44c61fafe32df9b3da51
commit: f0b5d86cf075ddf98369614019fd10c0e4962838 [386/836] ANDROID: Incremental fs: Add setattr call
config: x86_64-allyesconfig (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
        git remote add android-common https://android.googlesource.com/kernel/common
        git fetch --no-tags android-common android-mainline-tracking
        git checkout f0b5d86cf075ddf98369614019fd10c0e4962838
        # save the attached .config to linux build tree
        make W=1 ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

Note: the android-common/android-mainline-tracking HEAD 74f61c888eeeb9cbc57d44c61fafe32df9b3da51 builds fine.
      It only hurts bisectibility.

All errors (new ones prefixed by >>):

   fs/incfs/vfs.c:98:11: error: initialization of 'int (*)(struct user_namespace *, struct inode *, struct dentry *, umode_t)' {aka 'int (*)(struct user_namespace *, struct inode *, struct dentry *, short unsigned int)'} from incompatible pointer type 'int (*)(struct inode *, struct dentry *, umode_t)' {aka 'int (*)(struct inode *, struct dentry *, short unsigned int)'} [-Werror=incompatible-pointer-types]
      98 |  .mkdir = dir_mkdir,
         |           ^~~~~~~~~
   fs/incfs/vfs.c:98:11: note: (near initialization for 'incfs_dir_inode_ops.mkdir')
   fs/incfs/vfs.c:99:12: error: initialization of 'int (*)(struct user_namespace *, struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int)' from incompatible pointer type 'int (*)(struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int)' [-Werror=incompatible-pointer-types]
      99 |  .rename = dir_rename_wrap,
         |            ^~~~~~~~~~~~~~~
   fs/incfs/vfs.c:99:12: note: (near initialization for 'incfs_dir_inode_ops.rename')
>> fs/incfs/vfs.c:103:13: error: initialization of 'int (*)(struct user_namespace *, struct dentry *, struct iattr *)' from incompatible pointer type 'int (*)(struct dentry *, struct iattr *)' [-Werror=incompatible-pointer-types]
     103 |  .setattr = incfs_setattr,
         |             ^~~~~~~~~~~~~
   fs/incfs/vfs.c:103:13: note: (near initialization for 'incfs_dir_inode_ops.setattr')
   fs/incfs/vfs.c:163:13: error: initialization of 'int (*)(struct user_namespace *, struct dentry *, struct iattr *)' from incompatible pointer type 'int (*)(struct dentry *, struct iattr *)' [-Werror=incompatible-pointer-types]
     163 |  .setattr = incfs_setattr,
         |             ^~~~~~~~~~~~~
   fs/incfs/vfs.c:163:13: note: (near initialization for 'incfs_file_inode_ops.setattr')
   fs/incfs/vfs.c:186:9: error: initialization of 'int (*)(const struct xattr_handler *, struct user_namespace *, struct dentry *, struct inode *, const char *, const void *, size_t,  int)' {aka 'int (*)(const struct xattr_handler *, struct user_namespace *, struct dentry *, struct inode *, const char *, const void *, long unsigned int,  int)'} from incompatible pointer type 'int (*)(const struct xattr_handler *, struct dentry *, struct inode *, const char *, const void *, size_t,  int)' {aka 'int (*)(const struct xattr_handler *, struct dentry *, struct inode *, const char *, const void *, long unsigned int,  int)'} [-Werror=incompatible-pointer-types]
     186 |  .set = incfs_handler_setxattr,
         |         ^~~~~~~~~~~~~~~~~~~~~~
   fs/incfs/vfs.c:186:9: note: (near initialization for 'incfs_xattr_handler.set')
   fs/incfs/vfs.c: In function 'read_size_attr':
   fs/incfs/vfs.c:329:28: error: passing argument 1 of 'vfs_getxattr' from incompatible pointer type [-Werror=incompatible-pointer-types]
     329 |  bytes_read = vfs_getxattr(backing_dentry, INCFS_XATTR_SIZE_NAME,
         |                            ^~~~~~~~~~~~~~
         |                            |
         |                            struct dentry *
   In file included from fs/incfs/vfs.c:17:
   include/linux/xattr.h:53:22: note: expected 'struct user_namespace *' but argument is of type 'struct dentry *'
      53 | ssize_t vfs_getxattr(struct user_namespace *, struct dentry *, const char *,
         |                      ^~~~~~~~~~~~~~~~~~~~~~~
   In file included from fs/incfs/vfs.c:19:
   include/uapi/linux/incrementalfs.h:34:31: error: passing argument 2 of 'vfs_getxattr' from incompatible pointer type [-Werror=incompatible-pointer-types]
      34 | #define INCFS_XATTR_SIZE_NAME (XATTR_USER_PREFIX "incfs.size")
         |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         |                               |
         |                               char *
   fs/incfs/vfs.c:329:44: note: in expansion of macro 'INCFS_XATTR_SIZE_NAME'
     329 |  bytes_read = vfs_getxattr(backing_dentry, INCFS_XATTR_SIZE_NAME,
         |                                            ^~~~~~~~~~~~~~~~~~~~~
   In file included from fs/incfs/vfs.c:17:
   include/linux/xattr.h:53:47: note: expected 'struct dentry *' but argument is of type 'char *'
      53 | ssize_t vfs_getxattr(struct user_namespace *, struct dentry *, const char *,
         |                                               ^~~~~~~~~~~~~~~
   fs/incfs/vfs.c:330:25: warning: passing argument 4 of 'vfs_getxattr' makes pointer from integer without a cast [-Wint-conversion]
     330 |    (char *)&attr_value, sizeof(attr_value));
         |                         ^~~~~~~~~~~~~~~~~~
         |                         |
         |                         long unsigned int
   In file included from fs/incfs/vfs.c:17:
   include/linux/xattr.h:54:8: note: expected 'void *' but argument is of type 'long unsigned int'
      54 |        void *, size_t);
         |        ^~~~~~
   fs/incfs/vfs.c:329:15: error: too few arguments to function 'vfs_getxattr'
     329 |  bytes_read = vfs_getxattr(backing_dentry, INCFS_XATTR_SIZE_NAME,
         |               ^~~~~~~~~~~~
   In file included from fs/incfs/vfs.c:17:
   include/linux/xattr.h:53:9: note: declared here
      53 | ssize_t vfs_getxattr(struct user_namespace *, struct dentry *, const char *,
         |         ^~~~~~~~~~~~
   fs/incfs/vfs.c: In function 'inode_set':
   fs/incfs/vfs.c:409:20: error: passing argument 1 of 'inode_init_owner' from incompatible pointer type [-Werror=incompatible-pointer-types]
     409 |   inode_init_owner(inode, NULL, S_IFREG | READ_WRITE_FILE_MODE);
         |                    ^~~~~
         |                    |
         |                    struct inode *
   In file included from include/linux/huge_mm.h:8,
                    from include/linux/mm.h:707,
                    from include/linux/bvec.h:14,
                    from include/linux/blk_types.h:10,
                    from include/linux/genhd.h:19,
                    from include/linux/blkdev.h:8,
                    from fs/incfs/vfs.c:6:
   include/linux/fs.h:1828:46: note: expected 'struct user_namespace *' but argument is of type 'struct inode *'
    1828 | void inode_init_owner(struct user_namespace *mnt_userns, struct inode *inode,
         |                       ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
   In file included from include/linux/stat.h:7,
                    from include/linux/fs.h:10,
                    from include/linux/huge_mm.h:8,
                    from include/linux/mm.h:707,
                    from include/linux/bvec.h:14,
                    from include/linux/blk_types.h:10,
                    from include/linux/genhd.h:19,
                    from include/linux/blkdev.h:8,
                    from fs/incfs/vfs.c:6:
   include/uapi/linux/stat.h:12:18: warning: passing argument 3 of 'inode_init_owner' makes pointer from integer without a cast [-Wint-conversion]
      12 | #define S_IFREG  0100000
   fs/incfs/vfs.c:409:33: note: in expansion of macro 'S_IFREG'
     409 |   inode_init_owner(inode, NULL, S_IFREG | READ_WRITE_FILE_MODE);
         |                                 ^~~~~~~
   In file included from include/linux/huge_mm.h:8,
                    from include/linux/mm.h:707,
                    from include/linux/bvec.h:14,
                    from include/linux/blk_types.h:10,
                    from include/linux/genhd.h:19,
                    from include/linux/blkdev.h:8,
                    from fs/incfs/vfs.c:6:
   include/linux/fs.h:1829:29: note: expected 'const struct inode *' but argument is of type 'int'
    1829 |         const struct inode *dir, umode_t mode);
         |         ~~~~~~~~~~~~~~~~~~~~^~~
   fs/incfs/vfs.c:409:3: error: too few arguments to function 'inode_init_owner'
     409 |   inode_init_owner(inode, NULL, S_IFREG | READ_WRITE_FILE_MODE);
         |   ^~~~~~~~~~~~~~~~
   In file included from include/linux/huge_mm.h:8,
                    from include/linux/mm.h:707,
                    from include/linux/bvec.h:14,
                    from include/linux/blk_types.h:10,
                    from include/linux/genhd.h:19,
                    from include/linux/blkdev.h:8,
                    from fs/incfs/vfs.c:6:
--
      33 | #define INCFS_XATTR_ID_NAME (XATTR_USER_PREFIX "incfs.id")
         |                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         |                             |
         |                             char *
   fs/incfs/vfs.c:1666:43: note: in expansion of macro 'INCFS_XATTR_ID_NAME'
    1666 |  uuid_size = vfs_getxattr(backing_dentry, INCFS_XATTR_ID_NAME,
         |                                           ^~~~~~~~~~~~~~~~~~~
   In file included from fs/incfs/vfs.c:17:
   include/linux/xattr.h:53:47: note: expected 'struct dentry *' but argument is of type 'char *'
      53 | ssize_t vfs_getxattr(struct user_namespace *, struct dentry *, const char *,
         |                                               ^~~~~~~~~~~~~~~
   fs/incfs/vfs.c:1667:17: warning: passing argument 4 of 'vfs_getxattr' makes pointer from integer without a cast [-Wint-conversion]
    1667 |    file_id_str, 2 * sizeof(incfs_uuid_t));
         |                 ^~~~~~~~~~~~~~~~~~~~~~~~
         |                 |
         |                 long unsigned int
   In file included from fs/incfs/vfs.c:17:
   include/linux/xattr.h:54:8: note: expected 'void *' but argument is of type 'long unsigned int'
      54 |        void *, size_t);
         |        ^~~~~~
   fs/incfs/vfs.c:1666:14: error: too few arguments to function 'vfs_getxattr'
    1666 |  uuid_size = vfs_getxattr(backing_dentry, INCFS_XATTR_ID_NAME,
         |              ^~~~~~~~~~~~
   In file included from fs/incfs/vfs.c:17:
   include/linux/xattr.h:53:9: note: declared here
      53 | ssize_t vfs_getxattr(struct user_namespace *, struct dentry *, const char *,
         |         ^~~~~~~~~~~~
   fs/incfs/vfs.c: In function 'dir_rename':
   fs/incfs/vfs.c:1868:21: error: passing argument 1 of 'vfs_rename' from incompatible pointer type [-Werror=incompatible-pointer-types]
    1868 |  error = vfs_rename(d_inode(backing_old_dir_dentry), backing_old_dentry,
         |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         |                     |
         |                     struct inode *
   In file included from include/linux/huge_mm.h:8,
                    from include/linux/mm.h:707,
                    from include/linux/bvec.h:14,
                    from include/linux/blk_types.h:10,
                    from include/linux/genhd.h:19,
                    from include/linux/blkdev.h:8,
                    from fs/incfs/vfs.c:6:
   include/linux/fs.h:1796:16: note: expected 'struct renamedata *' but argument is of type 'struct inode *'
    1796 | int vfs_rename(struct renamedata *);
         |                ^~~~~~~~~~~~~~~~~~~
   fs/incfs/vfs.c:1868:10: error: too many arguments to function 'vfs_rename'
    1868 |  error = vfs_rename(d_inode(backing_old_dir_dentry), backing_old_dentry,
         |          ^~~~~~~~~~
   In file included from include/linux/huge_mm.h:8,
                    from include/linux/mm.h:707,
                    from include/linux/bvec.h:14,
                    from include/linux/blk_types.h:10,
                    from include/linux/genhd.h:19,
                    from include/linux/blkdev.h:8,
                    from fs/incfs/vfs.c:6:
   include/linux/fs.h:1796:5: note: declared here
    1796 | int vfs_rename(struct renamedata *);
         |     ^~~~~~~~~~
   fs/incfs/vfs.c: In function 'incfs_setattr':
   fs/incfs/vfs.c:2062:24: error: passing argument 1 of 'notify_change' from incompatible pointer type [-Werror=incompatible-pointer-types]
    2062 |  error = notify_change(backing_dentry, ia, NULL);
         |                        ^~~~~~~~~~~~~~
         |                        |
         |                        struct dentry *
   In file included from include/linux/huge_mm.h:8,
                    from include/linux/mm.h:707,
                    from include/linux/bvec.h:14,
                    from include/linux/blk_types.h:10,
                    from include/linux/genhd.h:19,
                    from include/linux/blkdev.h:8,
                    from fs/incfs/vfs.c:6:
   include/linux/fs.h:2865:19: note: expected 'struct user_namespace *' but argument is of type 'struct dentry *'
    2865 | int notify_change(struct user_namespace *, struct dentry *,
         |                   ^~~~~~~~~~~~~~~~~~~~~~~
   fs/incfs/vfs.c:2062:40: error: passing argument 2 of 'notify_change' from incompatible pointer type [-Werror=incompatible-pointer-types]
    2062 |  error = notify_change(backing_dentry, ia, NULL);
         |                                        ^~
         |                                        |
         |                                        struct iattr *
   In file included from include/linux/huge_mm.h:8,
                    from include/linux/mm.h:707,
                    from include/linux/bvec.h:14,
                    from include/linux/blk_types.h:10,
                    from include/linux/genhd.h:19,
                    from include/linux/blkdev.h:8,
                    from fs/incfs/vfs.c:6:
   include/linux/fs.h:2865:44: note: expected 'struct dentry *' but argument is of type 'struct iattr *'
    2865 | int notify_change(struct user_namespace *, struct dentry *,
         |                                            ^~~~~~~~~~~~~~~
   fs/incfs/vfs.c:2062:10: error: too few arguments to function 'notify_change'
    2062 |  error = notify_change(backing_dentry, ia, NULL);
         |          ^~~~~~~~~~~~~
   In file included from include/linux/huge_mm.h:8,
                    from include/linux/mm.h:707,
                    from include/linux/bvec.h:14,
                    from include/linux/blk_types.h:10,
                    from include/linux/genhd.h:19,
                    from include/linux/blkdev.h:8,
                    from fs/incfs/vfs.c:6:
   include/linux/fs.h:2865:5: note: declared here
    2865 | int notify_change(struct user_namespace *, struct dentry *,
         |     ^~~~~~~~~~~~~
>> fs/incfs/vfs.c:2071:24: error: passing argument 1 of 'simple_setattr' from incompatible pointer type [-Werror=incompatible-pointer-types]
    2071 |  return simple_setattr(dentry, ia);
         |                        ^~~~~~
         |                        |
         |                        struct dentry *
   In file included from include/linux/huge_mm.h:8,
                    from include/linux/mm.h:707,
                    from include/linux/bvec.h:14,
                    from include/linux/blk_types.h:10,
                    from include/linux/genhd.h:19,
                    from include/linux/blkdev.h:8,
                    from fs/incfs/vfs.c:6:
   include/linux/fs.h:3261:27: note: expected 'struct user_namespace *' but argument is of type 'struct dentry *'
    3261 | extern int simple_setattr(struct user_namespace *, struct dentry *,
         |                           ^~~~~~~~~~~~~~~~~~~~~~~
   fs/incfs/vfs.c:2071:32: error: passing argument 2 of 'simple_setattr' from incompatible pointer type [-Werror=incompatible-pointer-types]
    2071 |  return simple_setattr(dentry, ia);
         |                                ^~
         |                                |
         |                                struct iattr *
   In file included from include/linux/huge_mm.h:8,
                    from include/linux/mm.h:707,
                    from include/linux/bvec.h:14,
                    from include/linux/blk_types.h:10,
                    from include/linux/genhd.h:19,
                    from include/linux/blkdev.h:8,
                    from fs/incfs/vfs.c:6:
   include/linux/fs.h:3261:52: note: expected 'struct dentry *' but argument is of type 'struct iattr *'
    3261 | extern int simple_setattr(struct user_namespace *, struct dentry *,
         |                                                    ^~~~~~~~~~~~~~~
>> fs/incfs/vfs.c:2071:9: error: too few arguments to function 'simple_setattr'
    2071 |  return simple_setattr(dentry, ia);
         |         ^~~~~~~~~~~~~~
   In file included from include/linux/huge_mm.h:8,
                    from include/linux/mm.h:707,
                    from include/linux/bvec.h:14,
                    from include/linux/blk_types.h:10,
                    from include/linux/genhd.h:19,
                    from include/linux/blkdev.h:8,
                    from fs/incfs/vfs.c:6:
   include/linux/fs.h:3261:12: note: declared here
    3261 | extern int simple_setattr(struct user_namespace *, struct dentry *,
         |            ^~~~~~~~~~~~~~
   fs/incfs/vfs.c: In function 'incfs_getxattr':
   fs/incfs/vfs.c:2083:39: error: passing argument 1 of 'vfs_getxattr' from incompatible pointer type [-Werror=incompatible-pointer-types]
    2083 |   return vfs_getxattr(di->backing_path.dentry, name, value, size);
         |                       ~~~~~~~~~~~~~~~~^~~~~~~
         |                                       |
         |                                       struct dentry *
   In file included from fs/incfs/vfs.c:17:
   include/linux/xattr.h:53:22: note: expected 'struct user_namespace *' but argument is of type 'struct dentry *'
      53 | ssize_t vfs_getxattr(struct user_namespace *, struct dentry *, const char *,
         |                      ^~~~~~~~~~~~~~~~~~~~~~~
   fs/incfs/vfs.c:2083:48: error: passing argument 2 of 'vfs_getxattr' from incompatible pointer type [-Werror=incompatible-pointer-types]
    2083 |   return vfs_getxattr(di->backing_path.dentry, name, value, size);
         |                                                ^~~~
         |                                                |
         |                                                const char *
   In file included from fs/incfs/vfs.c:17:
   include/linux/xattr.h:53:47: note: expected 'struct dentry *' but argument is of type 'const char *'
      53 | ssize_t vfs_getxattr(struct user_namespace *, struct dentry *, const char *,
         |                                               ^~~~~~~~~~~~~~~
   fs/incfs/vfs.c:2083:61: warning: passing argument 4 of 'vfs_getxattr' makes pointer from integer without a cast [-Wint-conversion]
    2083 |   return vfs_getxattr(di->backing_path.dentry, name, value, size);
         |                                                             ^~~~
         |                                                             |
         |                                                             size_t {aka long unsigned int}
   In file included from fs/incfs/vfs.c:17:
   include/linux/xattr.h:54:8: note: expected 'void *' but argument is of type 'size_t' {aka 'long unsigned int'}
      54 |        void *, size_t);
         |        ^~~~~~
   fs/incfs/vfs.c:2083:10: error: too few arguments to function 'vfs_getxattr'
    2083 |   return vfs_getxattr(di->backing_path.dentry, name, value, size);
         |          ^~~~~~~~~~~~
   In file included from fs/incfs/vfs.c:17:
   include/linux/xattr.h:53:9: note: declared here
      53 | ssize_t vfs_getxattr(struct user_namespace *, struct dentry *, const char *,
         |         ^~~~~~~~~~~~
   fs/incfs/vfs.c: In function 'incfs_setxattr':
   fs/incfs/vfs.c:2119:39: error: passing argument 1 of 'vfs_setxattr' from incompatible pointer type [-Werror=incompatible-pointer-types]
    2119 |   return vfs_setxattr(di->backing_path.dentry, name, value, size,
         |                       ~~~~~~~~~~~~~~~~^~~~~~~
         |                                       |
         |                                       struct dentry *
   In file included from fs/incfs/vfs.c:17:
   include/linux/xattr.h:63:18: note: expected 'struct user_namespace *' but argument is of type 'struct dentry *'
      63 | int vfs_setxattr(struct user_namespace *, struct dentry *, const char *,
         |                  ^~~~~~~~~~~~~~~~~~~~~~~
   fs/incfs/vfs.c:2119:48: error: passing argument 2 of 'vfs_setxattr' from incompatible pointer type [-Werror=incompatible-pointer-types]
    2119 |   return vfs_setxattr(di->backing_path.dentry, name, value, size,
         |                                                ^~~~
         |                                                |
         |                                                const char *
   In file included from fs/incfs/vfs.c:17:
   include/linux/xattr.h:63:43: note: expected 'struct dentry *' but argument is of type 'const char *'
      63 | int vfs_setxattr(struct user_namespace *, struct dentry *, const char *,
         |                                           ^~~~~~~~~~~~~~~
   fs/incfs/vfs.c:2119:61: warning: passing argument 4 of 'vfs_setxattr' makes pointer from integer without a cast [-Wint-conversion]
    2119 |   return vfs_setxattr(di->backing_path.dentry, name, value, size,
         |                                                             ^~~~
         |                                                             |
         |                                                             size_t {aka long unsigned int}
   In file included from fs/incfs/vfs.c:17:
   include/linux/xattr.h:64:4: note: expected 'const void *' but argument is of type 'size_t' {aka 'long unsigned int'}
      64 |    const void *, size_t, int);
         |    ^~~~~~~~~~~~
   fs/incfs/vfs.c:2119:10: error: too few arguments to function 'vfs_setxattr'
    2119 |   return vfs_setxattr(di->backing_path.dentry, name, value, size,
         |          ^~~~~~~~~~~~
   In file included from fs/incfs/vfs.c:17:
   include/linux/xattr.h:63:5: note: declared here
      63 | int vfs_setxattr(struct user_namespace *, struct dentry *, const char *,
         |     ^~~~~~~~~~~~
   fs/incfs/vfs.c: In function 'incfs_setattr':
   fs/incfs/vfs.c:2072:1: error: control reaches end of non-void function [-Werror=return-type]
    2072 | }
         | ^
   cc1: some warnings being treated as errors


vim +103 fs/incfs/vfs.c

    95	
    96	static const struct inode_operations incfs_dir_inode_ops = {
    97		.lookup = dir_lookup,
    98		.mkdir = dir_mkdir,
    99		.rename = dir_rename_wrap,
   100		.unlink = dir_unlink,
   101		.link = dir_link,
   102		.rmdir = dir_rmdir,
 > 103		.setattr = incfs_setattr,
   104	};
   105	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 65193 bytes --]

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-04-11  5:27 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-04-11  5:27 [android-common:android-mainline-tracking 386/836] fs/incfs/vfs.c:103:13: error: initialization of 'int (*)(struct user_namespace *, struct dentry *, struct iattr *)' from incompatible pointer type 'int (*)(struct dentry *, struct iattr *)' kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.