From: Jan Kara <jack@suse.cz> To: Christian Brauner <brauner@kernel.org> Cc: <linux-fsdevel@vger.kernel.org>, <linux-block@vger.kernel.org>, Christoph Hellwig <hch@infradead.org>, Jan Kara <jack@suse.cz>, Gao Xiang <xiang@kernel.org>, Chao Yu <chao@kernel.org>, linux-erofs@lists.ozlabs.org, Christoph Hellwig <hch@lst.de>, Gao Xiang <hsiangkao@linux.alibaba.com> Subject: [PATCH 21/29] erofs: Convert to use bdev_open_by_path() Date: Wed, 27 Sep 2023 11:34:27 +0200 [thread overview] Message-ID: <20230927093442.25915-21-jack@suse.cz> (raw) In-Reply-To: <20230818123232.2269-1-jack@suse.cz> Convert erofs to use bdev_open_by_path() and pass the handle around. CC: Gao Xiang <xiang@kernel.org> CC: Chao Yu <chao@kernel.org> CC: linux-erofs@lists.ozlabs.org Acked-by: Christoph Hellwig <hch@lst.de> Acked-by: Gao Xiang <hsiangkao@linux.alibaba.com> Reviewed-by: Christian Brauner <brauner@kernel.org> Signed-off-by: Jan Kara <jack@suse.cz> --- fs/erofs/data.c | 4 ++-- fs/erofs/internal.h | 2 +- fs/erofs/super.c | 20 ++++++++++---------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/fs/erofs/data.c b/fs/erofs/data.c index 0c2c99c58b5e..f6a0a1748521 100644 --- a/fs/erofs/data.c +++ b/fs/erofs/data.c @@ -222,7 +222,7 @@ int erofs_map_dev(struct super_block *sb, struct erofs_map_dev *map) up_read(&devs->rwsem); return 0; } - map->m_bdev = dif->bdev; + map->m_bdev = dif->bdev_handle->bdev; map->m_daxdev = dif->dax_dev; map->m_dax_part_off = dif->dax_part_off; map->m_fscache = dif->fscache; @@ -240,7 +240,7 @@ int erofs_map_dev(struct super_block *sb, struct erofs_map_dev *map) if (map->m_pa >= startoff && map->m_pa < startoff + length) { map->m_pa -= startoff; - map->m_bdev = dif->bdev; + map->m_bdev = dif->bdev_handle->bdev; map->m_daxdev = dif->dax_dev; map->m_dax_part_off = dif->dax_part_off; map->m_fscache = dif->fscache; diff --git a/fs/erofs/internal.h b/fs/erofs/internal.h index 4ff88d0dd980..cf04e21bfda2 100644 --- a/fs/erofs/internal.h +++ b/fs/erofs/internal.h @@ -47,7 +47,7 @@ typedef u32 erofs_blk_t; struct erofs_device_info { char *path; struct erofs_fscache *fscache; - struct block_device *bdev; + struct bdev_handle *bdev_handle; struct dax_device *dax_dev; u64 dax_part_off; diff --git a/fs/erofs/super.c b/fs/erofs/super.c index 44a24d573f1f..2bf6dac83025 100644 --- a/fs/erofs/super.c +++ b/fs/erofs/super.c @@ -227,7 +227,7 @@ static int erofs_init_device(struct erofs_buf *buf, struct super_block *sb, struct erofs_sb_info *sbi = EROFS_SB(sb); struct erofs_fscache *fscache; struct erofs_deviceslot *dis; - struct block_device *bdev; + struct bdev_handle *bdev_handle; void *ptr; ptr = erofs_read_metabuf(buf, sb, erofs_blknr(sb, *pos), EROFS_KMAP); @@ -251,13 +251,13 @@ static int erofs_init_device(struct erofs_buf *buf, struct super_block *sb, return PTR_ERR(fscache); dif->fscache = fscache; } else if (!sbi->devs->flatdev) { - bdev = blkdev_get_by_path(dif->path, BLK_OPEN_READ, sb->s_type, - NULL); - if (IS_ERR(bdev)) - return PTR_ERR(bdev); - dif->bdev = bdev; - dif->dax_dev = fs_dax_get_by_bdev(bdev, &dif->dax_part_off, - NULL, NULL); + bdev_handle = bdev_open_by_path(dif->path, BLK_OPEN_READ, + sb->s_type, NULL); + if (IS_ERR(bdev_handle)) + return PTR_ERR(bdev_handle); + dif->bdev_handle = bdev_handle; + dif->dax_dev = fs_dax_get_by_bdev(bdev_handle->bdev, + &dif->dax_part_off, NULL, NULL); } dif->blocks = le32_to_cpu(dis->blocks); @@ -806,8 +806,8 @@ static int erofs_release_device_info(int id, void *ptr, void *data) struct erofs_device_info *dif = ptr; fs_put_dax(dif->dax_dev, NULL); - if (dif->bdev) - blkdev_put(dif->bdev, &erofs_fs_type); + if (dif->bdev_handle) + bdev_release(dif->bdev_handle); erofs_fscache_unregister_cookie(dif->fscache); dif->fscache = NULL; kfree(dif->path); -- 2.35.3
WARNING: multiple messages have this Message-ID (diff)
From: Jan Kara <jack@suse.cz> To: Christian Brauner <brauner@kernel.org> Cc: Christoph Hellwig <hch@infradead.org>, Jan Kara <jack@suse.cz>, linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org, Gao Xiang <hsiangkao@linux.alibaba.com>, linux-erofs@lists.ozlabs.org, Christoph Hellwig <hch@lst.de> Subject: [PATCH 21/29] erofs: Convert to use bdev_open_by_path() Date: Wed, 27 Sep 2023 11:34:27 +0200 [thread overview] Message-ID: <20230927093442.25915-21-jack@suse.cz> (raw) In-Reply-To: <20230818123232.2269-1-jack@suse.cz> Convert erofs to use bdev_open_by_path() and pass the handle around. CC: Gao Xiang <xiang@kernel.org> CC: Chao Yu <chao@kernel.org> CC: linux-erofs@lists.ozlabs.org Acked-by: Christoph Hellwig <hch@lst.de> Acked-by: Gao Xiang <hsiangkao@linux.alibaba.com> Reviewed-by: Christian Brauner <brauner@kernel.org> Signed-off-by: Jan Kara <jack@suse.cz> --- fs/erofs/data.c | 4 ++-- fs/erofs/internal.h | 2 +- fs/erofs/super.c | 20 ++++++++++---------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/fs/erofs/data.c b/fs/erofs/data.c index 0c2c99c58b5e..f6a0a1748521 100644 --- a/fs/erofs/data.c +++ b/fs/erofs/data.c @@ -222,7 +222,7 @@ int erofs_map_dev(struct super_block *sb, struct erofs_map_dev *map) up_read(&devs->rwsem); return 0; } - map->m_bdev = dif->bdev; + map->m_bdev = dif->bdev_handle->bdev; map->m_daxdev = dif->dax_dev; map->m_dax_part_off = dif->dax_part_off; map->m_fscache = dif->fscache; @@ -240,7 +240,7 @@ int erofs_map_dev(struct super_block *sb, struct erofs_map_dev *map) if (map->m_pa >= startoff && map->m_pa < startoff + length) { map->m_pa -= startoff; - map->m_bdev = dif->bdev; + map->m_bdev = dif->bdev_handle->bdev; map->m_daxdev = dif->dax_dev; map->m_dax_part_off = dif->dax_part_off; map->m_fscache = dif->fscache; diff --git a/fs/erofs/internal.h b/fs/erofs/internal.h index 4ff88d0dd980..cf04e21bfda2 100644 --- a/fs/erofs/internal.h +++ b/fs/erofs/internal.h @@ -47,7 +47,7 @@ typedef u32 erofs_blk_t; struct erofs_device_info { char *path; struct erofs_fscache *fscache; - struct block_device *bdev; + struct bdev_handle *bdev_handle; struct dax_device *dax_dev; u64 dax_part_off; diff --git a/fs/erofs/super.c b/fs/erofs/super.c index 44a24d573f1f..2bf6dac83025 100644 --- a/fs/erofs/super.c +++ b/fs/erofs/super.c @@ -227,7 +227,7 @@ static int erofs_init_device(struct erofs_buf *buf, struct super_block *sb, struct erofs_sb_info *sbi = EROFS_SB(sb); struct erofs_fscache *fscache; struct erofs_deviceslot *dis; - struct block_device *bdev; + struct bdev_handle *bdev_handle; void *ptr; ptr = erofs_read_metabuf(buf, sb, erofs_blknr(sb, *pos), EROFS_KMAP); @@ -251,13 +251,13 @@ static int erofs_init_device(struct erofs_buf *buf, struct super_block *sb, return PTR_ERR(fscache); dif->fscache = fscache; } else if (!sbi->devs->flatdev) { - bdev = blkdev_get_by_path(dif->path, BLK_OPEN_READ, sb->s_type, - NULL); - if (IS_ERR(bdev)) - return PTR_ERR(bdev); - dif->bdev = bdev; - dif->dax_dev = fs_dax_get_by_bdev(bdev, &dif->dax_part_off, - NULL, NULL); + bdev_handle = bdev_open_by_path(dif->path, BLK_OPEN_READ, + sb->s_type, NULL); + if (IS_ERR(bdev_handle)) + return PTR_ERR(bdev_handle); + dif->bdev_handle = bdev_handle; + dif->dax_dev = fs_dax_get_by_bdev(bdev_handle->bdev, + &dif->dax_part_off, NULL, NULL); } dif->blocks = le32_to_cpu(dis->blocks); @@ -806,8 +806,8 @@ static int erofs_release_device_info(int id, void *ptr, void *data) struct erofs_device_info *dif = ptr; fs_put_dax(dif->dax_dev, NULL); - if (dif->bdev) - blkdev_put(dif->bdev, &erofs_fs_type); + if (dif->bdev_handle) + bdev_release(dif->bdev_handle); erofs_fscache_unregister_cookie(dif->fscache); dif->fscache = NULL; kfree(dif->path); -- 2.35.3
next prev parent reply other threads:[~2023-09-27 9:35 UTC|newest] Thread overview: 167+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-08-23 10:48 [PATCH v3 0/29] block: Make blkdev_get_by_*() return handle Jan Kara 2023-09-27 9:34 ` [dm-devel] [PATCH v4 " Jan Kara 2023-09-27 9:34 ` Jan Kara 2023-09-27 9:34 ` Jan Kara 2023-09-27 9:34 ` [f2fs-dev] " Jan Kara 2023-09-27 9:34 ` Jan Kara 2023-08-23 10:48 ` [PATCH v3 " Jan Kara 2023-08-23 10:48 ` [dm-devel] " Jan Kara 2023-08-23 10:48 ` Jan Kara 2023-08-23 10:48 ` Jan Kara 2023-08-23 10:48 ` [f2fs-dev] " Jan Kara 2023-08-23 10:48 ` [PATCH 01/29] block: Provide bdev_open_* functions Jan Kara 2023-08-25 11:44 ` Christian Brauner 2023-08-23 10:48 ` [PATCH 02/29] block: Use bdev_open_by_dev() in blkdev_open() Jan Kara 2023-08-25 2:28 ` Al Viro 2023-08-25 9:45 ` Jan Kara 2023-08-25 13:29 ` Christian Brauner 2023-08-28 16:46 ` Jan Kara 2023-08-29 11:03 ` Christian Brauner 2023-08-23 10:48 ` [PATCH 03/29] block: Use bdev_open_by_dev() in disk_scan_partitions() and blkdev_bszset() Jan Kara 2023-08-25 11:45 ` Christian Brauner 2023-08-23 10:48 ` [PATCH 04/29] drdb: Convert to use bdev_open_by_path() Jan Kara 2023-08-25 11:47 ` Christian Brauner 2023-08-23 10:48 ` [PATCH 05/29] pktcdvd: Convert to bdev_open_by_dev() Jan Kara 2023-08-25 11:53 ` Christian Brauner 2023-08-23 10:48 ` [PATCH 06/29] rnbd-srv: Convert to use bdev_open_by_path() Jan Kara 2023-08-25 11:55 ` Christian Brauner 2023-08-23 10:48 ` [PATCH 07/29] xen/blkback: Convert to bdev_open_by_dev() Jan Kara 2023-08-25 11:56 ` Christian Brauner 2023-08-23 10:48 ` [PATCH 08/29] zram: Convert to use bdev_open_by_dev() Jan Kara 2023-08-25 11:57 ` Christian Brauner 2023-08-23 10:48 ` [PATCH 09/29] bcache: Convert to bdev_open_by_path() Jan Kara 2023-08-25 12:06 ` Christian Brauner 2023-08-23 10:48 ` [PATCH 10/29] dm: Convert to bdev_open_by_dev() Jan Kara 2023-08-23 10:48 ` [dm-devel] " Jan Kara 2023-08-25 12:08 ` Christian Brauner 2023-08-25 12:08 ` [dm-devel] " Christian Brauner 2023-08-23 10:48 ` [PATCH 11/29] md: " Jan Kara 2023-08-25 12:09 ` Christian Brauner 2023-08-23 10:48 ` [PATCH 12/29] mtd: block2mtd: Convert to bdev_open_by_dev/path() Jan Kara 2023-08-23 10:48 ` Jan Kara 2023-08-25 12:11 ` Christian Brauner 2023-08-25 12:11 ` Christian Brauner 2023-08-23 10:48 ` [PATCH 13/29] nvmet: Convert to bdev_open_by_path() Jan Kara 2023-08-23 19:36 ` Chaitanya Kulkarni 2023-08-25 12:12 ` Christian Brauner 2023-08-23 10:48 ` [PATCH 14/29] s390/dasd: " Jan Kara 2023-08-25 12:14 ` Christian Brauner 2023-09-27 21:43 ` Stefan Haberland 2023-10-02 11:24 ` Jan Kara 2023-08-23 10:48 ` [PATCH 15/29] scsi: target: " Jan Kara 2023-08-25 12:15 ` Christian Brauner 2023-08-23 10:48 ` [PATCH 16/29] PM: hibernate: Convert to bdev_open_by_dev() Jan Kara 2023-08-25 12:17 ` Christian Brauner 2023-08-23 10:48 ` [PATCH 17/29] PM: hibernate: Drop unused snapshot_test argument Jan Kara 2023-08-25 12:18 ` Christian Brauner 2023-08-23 10:48 ` [PATCH 18/29] mm/swap: Convert to use bdev_open_by_dev() Jan Kara 2023-08-25 12:19 ` Christian Brauner 2023-08-23 10:48 ` [PATCH 19/29] fs: Convert to bdev_open_by_dev() Jan Kara 2023-08-25 12:20 ` Christian Brauner 2023-08-23 10:48 ` [PATCH 20/29] btrfs: Convert to bdev_open_by_path() Jan Kara 2023-08-25 12:26 ` Christian Brauner 2023-08-23 10:48 ` [PATCH 21/29] erofs: Convert to use bdev_open_by_path() Jan Kara 2023-08-23 10:48 ` Jan Kara 2023-08-25 12:27 ` Christian Brauner 2023-08-25 12:27 ` Christian Brauner 2023-08-23 10:48 ` [PATCH 22/29] ext4: Convert to bdev_open_by_dev() Jan Kara 2023-08-25 12:29 ` Christian Brauner 2023-08-23 10:48 ` [f2fs-dev] [PATCH 23/29] f2fs: Convert to bdev_open_by_dev/path() Jan Kara 2023-08-23 10:48 ` Jan Kara 2023-08-25 12:30 ` [f2fs-dev] " Christian Brauner 2023-08-25 12:30 ` Christian Brauner 2023-08-28 12:57 ` [f2fs-dev] " Chao Yu 2023-08-28 12:57 ` Chao Yu 2023-08-28 16:35 ` [f2fs-dev] " Jan Kara 2023-08-28 16:35 ` Jan Kara 2023-08-23 10:48 ` [PATCH 24/29] jfs: Convert to bdev_open_by_dev() Jan Kara 2023-08-25 12:31 ` Christian Brauner 2023-08-23 10:48 ` [PATCH 25/29] nfs/blocklayout: Convert to use bdev_open_by_dev/path() Jan Kara 2023-08-25 12:33 ` Christian Brauner 2023-08-23 10:48 ` [PATCH 26/29] ocfs2: Convert to use bdev_open_by_dev() Jan Kara 2023-08-25 12:34 ` Christian Brauner 2023-08-23 10:48 ` [PATCH 27/29] reiserfs: Convert to bdev_open_by_dev/path() Jan Kara 2023-08-23 10:48 ` Jan Kara 2023-08-25 12:35 ` Christian Brauner 2023-08-23 10:48 ` [PATCH 28/29] xfs: Convert to bdev_open_by_path() Jan Kara 2023-08-23 22:11 ` Dave Chinner 2023-08-24 10:28 ` Jan Kara 2023-08-24 20:29 ` Jan Kara 2023-08-24 23:06 ` Dave Chinner 2023-08-25 12:38 ` Christian Brauner 2023-08-23 10:48 ` [PATCH 29/29] block: Remove blkdev_get_by_*() functions Jan Kara 2023-08-25 12:42 ` Christian Brauner 2023-08-25 13:32 ` [PATCH v3 0/29] block: Make blkdev_get_by_*() return handle Christian Brauner 2023-08-25 13:32 ` Christian Brauner 2023-08-25 13:32 ` Christian Brauner 2023-08-25 13:32 ` [dm-devel] " Christian Brauner 2023-08-25 13:32 ` Christian Brauner 2023-08-25 13:32 ` [f2fs-dev] " Christian Brauner 2023-08-28 17:07 ` Jan Kara 2023-08-28 17:07 ` Jan Kara 2023-08-28 17:07 ` [dm-devel] " Jan Kara 2023-08-28 17:07 ` Jan Kara 2023-08-28 17:07 ` Jan Kara 2023-08-28 17:07 ` [f2fs-dev] " Jan Kara 2023-08-29 11:02 ` Christian Brauner 2023-08-29 11:02 ` Christian Brauner 2023-08-29 11:02 ` [dm-devel] " Christian Brauner 2023-08-29 11:02 ` Christian Brauner 2023-08-29 11:02 ` Christian Brauner 2023-08-29 11:02 ` [f2fs-dev] " Christian Brauner 2023-09-27 9:34 ` [PATCH 01/29] block: Provide bdev_open_* functions Jan Kara 2023-09-27 9:34 ` [PATCH 02/29] block: Use bdev_open_by_dev() in blkdev_open() Jan Kara 2023-09-27 9:34 ` [PATCH 03/29] block: Use bdev_open_by_dev() in disk_scan_partitions() and blkdev_bszset() Jan Kara 2023-09-27 9:34 ` [PATCH 04/29] drdb: Convert to use bdev_open_by_path() Jan Kara 2023-09-27 9:34 ` [PATCH 05/29] pktcdvd: Convert to bdev_open_by_dev() Jan Kara 2023-09-27 9:34 ` [PATCH 06/29] rnbd-srv: Convert to use bdev_open_by_path() Jan Kara 2023-09-27 9:34 ` [PATCH 07/29] xen/blkback: Convert to bdev_open_by_dev() Jan Kara 2023-09-27 9:34 ` [PATCH 08/29] zram: Convert to use bdev_open_by_dev() Jan Kara 2023-09-27 9:34 ` [PATCH 09/29] bcache: Convert to bdev_open_by_path() Jan Kara 2023-09-27 9:34 ` [PATCH 10/29] dm: Convert to bdev_open_by_dev() Jan Kara 2023-09-27 9:34 ` [dm-devel] " Jan Kara 2023-09-27 9:34 ` [PATCH 11/29] md: " Jan Kara 2023-09-27 9:34 ` [PATCH 12/29] mtd: block2mtd: Convert to bdev_open_by_dev/path() Jan Kara 2023-09-27 9:34 ` Jan Kara 2023-09-27 9:34 ` [PATCH 13/29] nvmet: Convert to bdev_open_by_path() Jan Kara 2023-09-27 9:34 ` [PATCH 14/29] s390/dasd: " Jan Kara 2023-09-27 9:34 ` [PATCH 15/29] scsi: target: " Jan Kara 2023-09-27 15:36 ` Martin K. Petersen 2023-09-27 9:34 ` [PATCH 16/29] PM: hibernate: Convert to bdev_open_by_dev() Jan Kara 2023-09-27 9:34 ` [PATCH 17/29] PM: hibernate: Drop unused snapshot_test argument Jan Kara 2023-09-27 9:34 ` [PATCH 18/29] mm/swap: Convert to use bdev_open_by_dev() Jan Kara 2023-09-27 9:34 ` [PATCH 19/29] fs: Convert to bdev_open_by_dev() Jan Kara 2023-09-27 9:34 ` [PATCH 20/29] btrfs: Convert to bdev_open_by_path() Jan Kara 2023-09-27 9:34 ` Jan Kara [this message] 2023-09-27 9:34 ` [PATCH 21/29] erofs: Convert to use bdev_open_by_path() Jan Kara 2023-09-27 9:34 ` [PATCH 22/29] ext4: Convert to bdev_open_by_dev() Jan Kara 2023-09-27 9:34 ` [PATCH 23/29] f2fs: Convert to bdev_open_by_dev/path() Jan Kara 2023-09-27 9:34 ` [f2fs-dev] " Jan Kara 2023-09-27 9:34 ` [PATCH 24/29] jfs: Convert to bdev_open_by_dev() Jan Kara 2023-09-27 9:34 ` [PATCH 25/29] nfs/blocklayout: Convert to use bdev_open_by_dev/path() Jan Kara 2023-09-27 9:34 ` [PATCH 26/29] ocfs2: Convert to use bdev_open_by_dev() Jan Kara 2023-09-27 9:34 ` [PATCH 27/29] reiserfs: Convert to bdev_open_by_dev/path() Jan Kara 2023-09-27 9:34 ` Jan Kara 2023-09-27 9:34 ` [PATCH 28/29] xfs: Convert to bdev_open_by_path() Jan Kara 2023-09-27 15:40 ` Darrick J. Wong 2023-09-27 9:34 ` [PATCH 29/29] block: Remove blkdev_get_by_*() functions Jan Kara 2023-09-27 14:19 ` [PATCH v4 0/29] block: Make blkdev_get_by_*() return handle Jens Axboe 2023-09-27 14:19 ` Jens Axboe 2023-09-27 14:19 ` Jens Axboe 2023-09-27 14:19 ` [dm-devel] " Jens Axboe 2023-09-27 14:19 ` Jens Axboe 2023-09-27 14:19 ` [f2fs-dev] " Jens Axboe 2023-09-27 16:21 ` Christian Brauner 2023-09-27 16:21 ` Christian Brauner 2023-09-27 16:21 ` Christian Brauner 2023-09-27 16:21 ` [dm-devel] " Christian Brauner 2023-09-27 16:21 ` Christian Brauner 2023-09-27 16:21 ` [f2fs-dev] " Christian Brauner 2023-10-02 7:57 ` Jan Kara 2023-10-02 7:57 ` Jan Kara 2023-10-02 7:57 ` [dm-devel] " Jan Kara 2023-10-02 7:57 ` Jan Kara 2023-10-02 7:57 ` Jan Kara 2023-10-02 7:57 ` [f2fs-dev] " Jan Kara -- strict thread matches above, loose matches on Subject: below -- 2023-08-11 11:04 [PATCH v2 " Jan Kara 2023-08-11 11:04 ` [PATCH 21/29] erofs: Convert to use bdev_open_by_path() Jan Kara 2023-08-11 11:04 ` Jan Kara
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20230927093442.25915-21-jack@suse.cz \ --to=jack@suse.cz \ --cc=brauner@kernel.org \ --cc=chao@kernel.org \ --cc=hch@infradead.org \ --cc=hch@lst.de \ --cc=hsiangkao@linux.alibaba.com \ --cc=linux-block@vger.kernel.org \ --cc=linux-erofs@lists.ozlabs.org \ --cc=linux-fsdevel@vger.kernel.org \ --cc=xiang@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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.