diff for duplicates of <20190220065249.32099-14-ebiggers@kernel.org> diff --git a/a/1.txt b/N1/1.txt index 10533ad..45abffb 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -401,7 +401,7 @@ index 0c36600f5894..48e7ab8a42e5 100644 - goto out_wipe_secret; - - if (arg.key_spec.type != FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR) { -+ if (arg.key_spec.type = FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR) { ++ if (arg.key_spec.type == FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR) { + /* + * Only root can add keys that are identified by an arbitrary + * descriptor rather than by a cryptographic hash --- since @@ -437,7 +437,7 @@ index 0c36600f5894..48e7ab8a42e5 100644 + * Only root can add and remove keys that are identified by an arbitrary + * descriptor rather than by a cryptographic hash. + */ -+ if (arg.key_spec.type = FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR && ++ if (arg.key_spec.type == FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR && + !capable(CAP_SYS_ADMIN)) return -EACCES; @@ -522,7 +522,8 @@ index 0c36600f5894..48e7ab8a42e5 100644 + arg.user_count = mk->mk_users->keys.nr_leaves_on_tree; + mk_user = find_master_key_user(mk); + if (!IS_ERR(mk_user)) { -+ arg.status_flags |+ FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF; ++ arg.status_flags |= ++ FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF; + key_put(mk_user); + } else if (mk_user != ERR_PTR(-ENOKEY)) { + err = PTR_ERR(mk_user); @@ -606,7 +607,7 @@ index 2675e1e337c7..d496a6196a3f 100644 + up_read(&mk->mk_secret_sem); key_put(master_key); } - if (res = -ENOKEY) + if (res == -ENOKEY) @@ -526,7 +528,7 @@ int fscrypt_drop_inode(struct inode *inode) mk = ci->ci_master_key->payload.data[0]; diff --git a/a/content_digest b/N1/content_digest index 8d464d5..3b5d56f 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -1,7 +1,7 @@ "ref\020190220065249.32099-1-ebiggers@kernel.org\0" "From\0Eric Biggers <ebiggers@kernel.org>\0" "Subject\0[RFC PATCH v3 13/18] fscrypt: allow unprivileged users to add/remove keys for v2 policies\0" - "Date\0Wed, 20 Feb 2019 06:52:44 +0000\0" + "Date\0Tue, 19 Feb 2019 22:52:44 -0800\0" "To\0linux-fscrypt@vger.kernel.org\0" "Cc\0linux-ext4@vger.kernel.org" linux-api@vger.kernel.org @@ -417,7 +417,7 @@ "-\t\tgoto out_wipe_secret;\n" "-\n" "-\tif (arg.key_spec.type != FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR) {\n" - "+\tif (arg.key_spec.type = FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR) {\n" + "+\tif (arg.key_spec.type == FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR) {\n" "+\t\t/*\n" "+\t\t * Only root can add keys that are identified by an arbitrary\n" "+\t\t * descriptor rather than by a cryptographic hash --- since\n" @@ -453,7 +453,7 @@ "+\t * Only root can add and remove keys that are identified by an arbitrary\n" "+\t * descriptor rather than by a cryptographic hash.\n" "+\t */\n" - "+\tif (arg.key_spec.type = FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR &&\n" + "+\tif (arg.key_spec.type == FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR &&\n" "+\t !capable(CAP_SYS_ADMIN))\n" " \t\treturn -EACCES;\n" " \n" @@ -538,7 +538,8 @@ "+\t\targ.user_count = mk->mk_users->keys.nr_leaves_on_tree;\n" "+\t\tmk_user = find_master_key_user(mk);\n" "+\t\tif (!IS_ERR(mk_user)) {\n" - "+\t\t\targ.status_flags |+\t\t\t\tFSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF;\n" + "+\t\t\targ.status_flags |=\n" + "+\t\t\t\tFSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF;\n" "+\t\t\tkey_put(mk_user);\n" "+\t\t} else if (mk_user != ERR_PTR(-ENOKEY)) {\n" "+\t\t\terr = PTR_ERR(mk_user);\n" @@ -622,7 +623,7 @@ "+\t\tup_read(&mk->mk_secret_sem);\n" " \t\tkey_put(master_key);\n" " \t}\n" - " \tif (res = -ENOKEY)\n" + " \tif (res == -ENOKEY)\n" "@@ -526,7 +528,7 @@ int fscrypt_drop_inode(struct inode *inode)\n" " \tmk = ci->ci_master_key->payload.data[0];\n" " \n" @@ -662,4 +663,4 @@ "-- \n" 2.20.1 -634a5c76c0d4e1aa28425ade3fb770cdbc4409473e33332b1e9a2c3d230a49a3 +c8f1bb0d22b4e4c1aa24931b962b44f8a69b0d48d0de61a6f9c2c65032507c3d
diff --git a/a/1.txt b/N2/1.txt index 10533ad..45abffb 100644 --- a/a/1.txt +++ b/N2/1.txt @@ -401,7 +401,7 @@ index 0c36600f5894..48e7ab8a42e5 100644 - goto out_wipe_secret; - - if (arg.key_spec.type != FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR) { -+ if (arg.key_spec.type = FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR) { ++ if (arg.key_spec.type == FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR) { + /* + * Only root can add keys that are identified by an arbitrary + * descriptor rather than by a cryptographic hash --- since @@ -437,7 +437,7 @@ index 0c36600f5894..48e7ab8a42e5 100644 + * Only root can add and remove keys that are identified by an arbitrary + * descriptor rather than by a cryptographic hash. + */ -+ if (arg.key_spec.type = FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR && ++ if (arg.key_spec.type == FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR && + !capable(CAP_SYS_ADMIN)) return -EACCES; @@ -522,7 +522,8 @@ index 0c36600f5894..48e7ab8a42e5 100644 + arg.user_count = mk->mk_users->keys.nr_leaves_on_tree; + mk_user = find_master_key_user(mk); + if (!IS_ERR(mk_user)) { -+ arg.status_flags |+ FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF; ++ arg.status_flags |= ++ FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF; + key_put(mk_user); + } else if (mk_user != ERR_PTR(-ENOKEY)) { + err = PTR_ERR(mk_user); @@ -606,7 +607,7 @@ index 2675e1e337c7..d496a6196a3f 100644 + up_read(&mk->mk_secret_sem); key_put(master_key); } - if (res = -ENOKEY) + if (res == -ENOKEY) @@ -526,7 +528,7 @@ int fscrypt_drop_inode(struct inode *inode) mk = ci->ci_master_key->payload.data[0]; diff --git a/a/content_digest b/N2/content_digest index 8d464d5..96f0b16 100644 --- a/a/content_digest +++ b/N2/content_digest @@ -1,16 +1,16 @@ "ref\020190220065249.32099-1-ebiggers@kernel.org\0" "From\0Eric Biggers <ebiggers@kernel.org>\0" "Subject\0[RFC PATCH v3 13/18] fscrypt: allow unprivileged users to add/remove keys for v2 policies\0" - "Date\0Wed, 20 Feb 2019 06:52:44 +0000\0" + "Date\0Tue, 19 Feb 2019 22:52:44 -0800\0" "To\0linux-fscrypt@vger.kernel.org\0" - "Cc\0linux-ext4@vger.kernel.org" + "Cc\0Satya Tangirala <satyat@google.com>" linux-api@vger.kernel.org linux-f2fs-devel@lists.sourceforge.net keyrings@vger.kernel.org linux-mtd@lists.infradead.org linux-crypto@vger.kernel.org linux-fsdevel@vger.kernel.org - Satya Tangirala <satyat@google.com> + linux-ext4@vger.kernel.org " Paul Crowley <paulcrowley@google.com>\0" "\00:1\0" "b\0" @@ -417,7 +417,7 @@ "-\t\tgoto out_wipe_secret;\n" "-\n" "-\tif (arg.key_spec.type != FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR) {\n" - "+\tif (arg.key_spec.type = FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR) {\n" + "+\tif (arg.key_spec.type == FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR) {\n" "+\t\t/*\n" "+\t\t * Only root can add keys that are identified by an arbitrary\n" "+\t\t * descriptor rather than by a cryptographic hash --- since\n" @@ -453,7 +453,7 @@ "+\t * Only root can add and remove keys that are identified by an arbitrary\n" "+\t * descriptor rather than by a cryptographic hash.\n" "+\t */\n" - "+\tif (arg.key_spec.type = FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR &&\n" + "+\tif (arg.key_spec.type == FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR &&\n" "+\t !capable(CAP_SYS_ADMIN))\n" " \t\treturn -EACCES;\n" " \n" @@ -538,7 +538,8 @@ "+\t\targ.user_count = mk->mk_users->keys.nr_leaves_on_tree;\n" "+\t\tmk_user = find_master_key_user(mk);\n" "+\t\tif (!IS_ERR(mk_user)) {\n" - "+\t\t\targ.status_flags |+\t\t\t\tFSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF;\n" + "+\t\t\targ.status_flags |=\n" + "+\t\t\t\tFSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF;\n" "+\t\t\tkey_put(mk_user);\n" "+\t\t} else if (mk_user != ERR_PTR(-ENOKEY)) {\n" "+\t\t\terr = PTR_ERR(mk_user);\n" @@ -622,7 +623,7 @@ "+\t\tup_read(&mk->mk_secret_sem);\n" " \t\tkey_put(master_key);\n" " \t}\n" - " \tif (res = -ENOKEY)\n" + " \tif (res == -ENOKEY)\n" "@@ -526,7 +528,7 @@ int fscrypt_drop_inode(struct inode *inode)\n" " \tmk = ci->ci_master_key->payload.data[0];\n" " \n" @@ -662,4 +663,4 @@ "-- \n" 2.20.1 -634a5c76c0d4e1aa28425ade3fb770cdbc4409473e33332b1e9a2c3d230a49a3 +9767c89b9de0339f41056266aaed210b49e1ae3cc8588af95f3d301e9f79f2ef
diff --git a/a/1.txt b/N3/1.txt index 10533ad..cd37fe5 100644 --- a/a/1.txt +++ b/N3/1.txt @@ -401,7 +401,7 @@ index 0c36600f5894..48e7ab8a42e5 100644 - goto out_wipe_secret; - - if (arg.key_spec.type != FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR) { -+ if (arg.key_spec.type = FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR) { ++ if (arg.key_spec.type == FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR) { + /* + * Only root can add keys that are identified by an arbitrary + * descriptor rather than by a cryptographic hash --- since @@ -437,7 +437,7 @@ index 0c36600f5894..48e7ab8a42e5 100644 + * Only root can add and remove keys that are identified by an arbitrary + * descriptor rather than by a cryptographic hash. + */ -+ if (arg.key_spec.type = FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR && ++ if (arg.key_spec.type == FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR && + !capable(CAP_SYS_ADMIN)) return -EACCES; @@ -522,7 +522,8 @@ index 0c36600f5894..48e7ab8a42e5 100644 + arg.user_count = mk->mk_users->keys.nr_leaves_on_tree; + mk_user = find_master_key_user(mk); + if (!IS_ERR(mk_user)) { -+ arg.status_flags |+ FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF; ++ arg.status_flags |= ++ FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF; + key_put(mk_user); + } else if (mk_user != ERR_PTR(-ENOKEY)) { + err = PTR_ERR(mk_user); @@ -606,7 +607,7 @@ index 2675e1e337c7..d496a6196a3f 100644 + up_read(&mk->mk_secret_sem); key_put(master_key); } - if (res = -ENOKEY) + if (res == -ENOKEY) @@ -526,7 +528,7 @@ int fscrypt_drop_inode(struct inode *inode) mk = ci->ci_master_key->payload.data[0]; @@ -645,3 +646,10 @@ index 26879e669dfa..fd1c3e2b0b7c 100644 #define FS_IOC_SET_ENCRYPTION_POLICY _IOR('f', 19, struct fscrypt_policy) -- 2.20.1 + + + +_______________________________________________ +Linux-f2fs-devel mailing list +Linux-f2fs-devel@lists.sourceforge.net +https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel diff --git a/a/content_digest b/N3/content_digest index 8d464d5..e93bbb1 100644 --- a/a/content_digest +++ b/N3/content_digest @@ -1,7 +1,7 @@ "ref\020190220065249.32099-1-ebiggers@kernel.org\0" "From\0Eric Biggers <ebiggers@kernel.org>\0" - "Subject\0[RFC PATCH v3 13/18] fscrypt: allow unprivileged users to add/remove keys for v2 policies\0" - "Date\0Wed, 20 Feb 2019 06:52:44 +0000\0" + "Subject\0[f2fs-dev] [RFC PATCH v3 13/18] fscrypt: allow unprivileged users to add/remove keys for v2 policies\0" + "Date\0Tue, 19 Feb 2019 22:52:44 -0800\0" "To\0linux-fscrypt@vger.kernel.org\0" "Cc\0linux-ext4@vger.kernel.org" linux-api@vger.kernel.org @@ -417,7 +417,7 @@ "-\t\tgoto out_wipe_secret;\n" "-\n" "-\tif (arg.key_spec.type != FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR) {\n" - "+\tif (arg.key_spec.type = FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR) {\n" + "+\tif (arg.key_spec.type == FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR) {\n" "+\t\t/*\n" "+\t\t * Only root can add keys that are identified by an arbitrary\n" "+\t\t * descriptor rather than by a cryptographic hash --- since\n" @@ -453,7 +453,7 @@ "+\t * Only root can add and remove keys that are identified by an arbitrary\n" "+\t * descriptor rather than by a cryptographic hash.\n" "+\t */\n" - "+\tif (arg.key_spec.type = FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR &&\n" + "+\tif (arg.key_spec.type == FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR &&\n" "+\t !capable(CAP_SYS_ADMIN))\n" " \t\treturn -EACCES;\n" " \n" @@ -538,7 +538,8 @@ "+\t\targ.user_count = mk->mk_users->keys.nr_leaves_on_tree;\n" "+\t\tmk_user = find_master_key_user(mk);\n" "+\t\tif (!IS_ERR(mk_user)) {\n" - "+\t\t\targ.status_flags |+\t\t\t\tFSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF;\n" + "+\t\t\targ.status_flags |=\n" + "+\t\t\t\tFSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF;\n" "+\t\t\tkey_put(mk_user);\n" "+\t\t} else if (mk_user != ERR_PTR(-ENOKEY)) {\n" "+\t\t\terr = PTR_ERR(mk_user);\n" @@ -622,7 +623,7 @@ "+\t\tup_read(&mk->mk_secret_sem);\n" " \t\tkey_put(master_key);\n" " \t}\n" - " \tif (res = -ENOKEY)\n" + " \tif (res == -ENOKEY)\n" "@@ -526,7 +528,7 @@ int fscrypt_drop_inode(struct inode *inode)\n" " \tmk = ci->ci_master_key->payload.data[0];\n" " \n" @@ -660,6 +661,13 @@ " \n" " #define FS_IOC_SET_ENCRYPTION_POLICY\t _IOR('f', 19, struct fscrypt_policy)\n" "-- \n" - 2.20.1 + "2.20.1\n" + "\n" + "\n" + "\n" + "_______________________________________________\n" + "Linux-f2fs-devel mailing list\n" + "Linux-f2fs-devel@lists.sourceforge.net\n" + https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel -634a5c76c0d4e1aa28425ade3fb770cdbc4409473e33332b1e9a2c3d230a49a3 +c154bb2e3454b971390c7909764b9a391725401942691b9244a7d1d47c6cdabb
diff --git a/a/1.txt b/N4/1.txt index 10533ad..698aae2 100644 --- a/a/1.txt +++ b/N4/1.txt @@ -401,7 +401,7 @@ index 0c36600f5894..48e7ab8a42e5 100644 - goto out_wipe_secret; - - if (arg.key_spec.type != FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR) { -+ if (arg.key_spec.type = FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR) { ++ if (arg.key_spec.type == FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR) { + /* + * Only root can add keys that are identified by an arbitrary + * descriptor rather than by a cryptographic hash --- since @@ -437,7 +437,7 @@ index 0c36600f5894..48e7ab8a42e5 100644 + * Only root can add and remove keys that are identified by an arbitrary + * descriptor rather than by a cryptographic hash. + */ -+ if (arg.key_spec.type = FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR && ++ if (arg.key_spec.type == FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR && + !capable(CAP_SYS_ADMIN)) return -EACCES; @@ -522,7 +522,8 @@ index 0c36600f5894..48e7ab8a42e5 100644 + arg.user_count = mk->mk_users->keys.nr_leaves_on_tree; + mk_user = find_master_key_user(mk); + if (!IS_ERR(mk_user)) { -+ arg.status_flags |+ FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF; ++ arg.status_flags |= ++ FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF; + key_put(mk_user); + } else if (mk_user != ERR_PTR(-ENOKEY)) { + err = PTR_ERR(mk_user); @@ -606,7 +607,7 @@ index 2675e1e337c7..d496a6196a3f 100644 + up_read(&mk->mk_secret_sem); key_put(master_key); } - if (res = -ENOKEY) + if (res == -ENOKEY) @@ -526,7 +528,7 @@ int fscrypt_drop_inode(struct inode *inode) mk = ci->ci_master_key->payload.data[0]; @@ -645,3 +646,8 @@ index 26879e669dfa..fd1c3e2b0b7c 100644 #define FS_IOC_SET_ENCRYPTION_POLICY _IOR('f', 19, struct fscrypt_policy) -- 2.20.1 + + +______________________________________________________ +Linux MTD discussion mailing list +http://lists.infradead.org/mailman/listinfo/linux-mtd/ diff --git a/a/content_digest b/N4/content_digest index 8d464d5..2b4b68f 100644 --- a/a/content_digest +++ b/N4/content_digest @@ -1,7 +1,7 @@ "ref\020190220065249.32099-1-ebiggers@kernel.org\0" "From\0Eric Biggers <ebiggers@kernel.org>\0" "Subject\0[RFC PATCH v3 13/18] fscrypt: allow unprivileged users to add/remove keys for v2 policies\0" - "Date\0Wed, 20 Feb 2019 06:52:44 +0000\0" + "Date\0Tue, 19 Feb 2019 22:52:44 -0800\0" "To\0linux-fscrypt@vger.kernel.org\0" "Cc\0linux-ext4@vger.kernel.org" linux-api@vger.kernel.org @@ -417,7 +417,7 @@ "-\t\tgoto out_wipe_secret;\n" "-\n" "-\tif (arg.key_spec.type != FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR) {\n" - "+\tif (arg.key_spec.type = FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR) {\n" + "+\tif (arg.key_spec.type == FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR) {\n" "+\t\t/*\n" "+\t\t * Only root can add keys that are identified by an arbitrary\n" "+\t\t * descriptor rather than by a cryptographic hash --- since\n" @@ -453,7 +453,7 @@ "+\t * Only root can add and remove keys that are identified by an arbitrary\n" "+\t * descriptor rather than by a cryptographic hash.\n" "+\t */\n" - "+\tif (arg.key_spec.type = FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR &&\n" + "+\tif (arg.key_spec.type == FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR &&\n" "+\t !capable(CAP_SYS_ADMIN))\n" " \t\treturn -EACCES;\n" " \n" @@ -538,7 +538,8 @@ "+\t\targ.user_count = mk->mk_users->keys.nr_leaves_on_tree;\n" "+\t\tmk_user = find_master_key_user(mk);\n" "+\t\tif (!IS_ERR(mk_user)) {\n" - "+\t\t\targ.status_flags |+\t\t\t\tFSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF;\n" + "+\t\t\targ.status_flags |=\n" + "+\t\t\t\tFSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF;\n" "+\t\t\tkey_put(mk_user);\n" "+\t\t} else if (mk_user != ERR_PTR(-ENOKEY)) {\n" "+\t\t\terr = PTR_ERR(mk_user);\n" @@ -622,7 +623,7 @@ "+\t\tup_read(&mk->mk_secret_sem);\n" " \t\tkey_put(master_key);\n" " \t}\n" - " \tif (res = -ENOKEY)\n" + " \tif (res == -ENOKEY)\n" "@@ -526,7 +528,7 @@ int fscrypt_drop_inode(struct inode *inode)\n" " \tmk = ci->ci_master_key->payload.data[0];\n" " \n" @@ -660,6 +661,11 @@ " \n" " #define FS_IOC_SET_ENCRYPTION_POLICY\t _IOR('f', 19, struct fscrypt_policy)\n" "-- \n" - 2.20.1 + "2.20.1\n" + "\n" + "\n" + "______________________________________________________\n" + "Linux MTD discussion mailing list\n" + http://lists.infradead.org/mailman/listinfo/linux-mtd/ -634a5c76c0d4e1aa28425ade3fb770cdbc4409473e33332b1e9a2c3d230a49a3 +66c6c39ccbbf4e0d19951205837914623ce65cba08c925ec1d1a1e8aee22df8d
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.