From: "J. Bruce Fields" <bfields@fieldses.org>
To: Chuck Lever <chuck.lever@oracle.com>
Cc: linux-nfs@vger.kernel.org, Frank Filz <ffilzlnx@us.ibm.com>
Subject: Re: [PATCH 038/100] nfsd: Allow AIX client to read dir containing mountpoints
Date: Mon, 28 Jan 2008 15:54:37 -0500 [thread overview]
Message-ID: <20080128205437.GJ16785@fieldses.org> (raw)
In-Reply-To: <C96D4075-614F-47B8-8788-F21589C00D06@oracle.com>
On Mon, Jan 28, 2008 at 03:04:17PM -0500, Chuck Lever wrote:
> On Jan 25, 2008, at 6:16 PM, J. Bruce Fields wrote:
>> @@ -1833,7 +1833,12 @@ out_acl:
>> if (bmval1 & FATTR4_WORD1_MOUNTED_ON_FILEID) {
>> if ((buflen -= 8) < 0)
>> goto out_resource;
>> - if (exp->ex_mnt->mnt_root->d_inode == dentry->d_inode) {
>> + /*
>> + * Get parent's attributes if not ignoring crossmount
>> + * and this is the root of a cross-mounted
>> filesystem.
>> + */
>> + if (ignore_crossmnt == 0 &&
>> + exp->ex_mnt->mnt_root->d_inode == dentry->d_inode) {
>
> More white space damage here.
Whoops, fixed; thanks.
>
>> err = vfs_getattr(exp->ex_mnt->mnt_parent,
>> exp->ex_mnt->mnt_mountpoint, &stat);
>> if (err)
>> @@ -1869,13 +1874,25 @@ nfsd4_encode_dirent_fattr(struct nfsd4_readdir
>> *cd,
>> struct svc_export *exp = cd->rd_fhp->fh_export;
>> struct dentry *dentry;
>> __be32 nfserr;
>> + int ignore_crossmnt = 0;
>
> Nit: extra blanks here.
OK, fixed.
>
>> dentry = lookup_one_len(name, cd->rd_fhp->fh_dentry, namlen);
>> if (IS_ERR(dentry))
>> return nfserrno(PTR_ERR(dentry));
>>
>> exp_get(exp);
>> - if (d_mountpoint(dentry)) {
>> + /*
>> + * In the case of a mountpoint, the client may be asking for
>> + * attributes that are only properties of the underlying filesystem
>> + * as opposed to the cross-mounted file system. In such a case,
>> + * we will not follow the cross mount and will fill the attribtutes
>> + * directly from the mountpoint dentry.
>> + */
>> + if (d_mountpoint(dentry) &&
>> + (cd->rd_bmval[0] & ~FATTR4_WORD0_RDATTR_ERROR) == 0 &&
>> + (cd->rd_bmval[1] & ~FATTR4_WORD1_MOUNTED_ON_FILEID) == 0)
>> + ignore_crossmnt = 1;
>> + else if (d_mountpoint(dentry)) {
>> int err;
>
> This seems kind of awkward. Let's invoke d_mountpoint() once instead of
> twice:
Yeah, OK. I'd rather take that as a followup patch. And I wonder if
the mountpoint case could be hidden in a separate function? It'd be
nice to just have something like
if (d_mountpoint(dentry))
err = handle_mountpoint(cd->rd_rqstp, &dentry, &exp);
(or whatever).
--b.
>
> if (d_mountpoint(dentry)) {
> if ((cd->rd_bmval[0] & ~FATTR4_WORD0_RDATTR_ERROR) == 0 &&
> (cd->rd_bmval[1] & ~FATTR4_WORD1_MOUNTED_ON_FILEID) == 0)
> ignore_crossmnt = 1;
> else {
> int err;
>
> /*
> * Why the heck aren't we just using nfsd_lookup??
> * Different "."/".." handling? Something else?
> * At least, add a comment here to explain....
> */
> err = nfsd_cross_mnt(cd->rd_rqstp, &dentry, &exp);
> if (err) {
> nfserr = nfserrno(err);
> goto out_put;
> }
> nfserr = check_nfsd_access(exp, cd->rd_rqstp);
> if (nfserr)
> goto out_put;
> }
> }
>
>> @@ -1894,7 +1911,7 @@ nfsd4_encode_dirent_fattr(struct nfsd4_readdir
>> *cd,
>>
>> }
>> nfserr = nfsd4_encode_fattr(NULL, exp, dentry, p, buflen, cd-
>> >rd_bmval,
>> - cd->rd_rqstp);
>> + cd->rd_rqstp, ignore_crossmnt);
>> out_put:
>> dput(dentry);
>> exp_put(exp);
>> @@ -2048,7 +2065,7 @@ nfsd4_encode_getattr(struct nfsd4_compoundres
>> *resp, __be32 nfserr, struct nfsd4
>> buflen = resp->end - resp->p - (COMPOUND_ERR_SLACK_SPACE >> 2);
>> nfserr = nfsd4_encode_fattr(fhp, fhp->fh_export, fhp->fh_dentry,
>> resp->p, &buflen, getattr->ga_bmval,
>> - resp->rqstp);
>> + resp->rqstp, 0);
>> if (!nfserr)
>> resp->p += buflen;
>> return nfserr;
>> diff --git a/include/linux/nfsd/xdr4.h b/include/linux/nfsd/xdr4.h
>> index b0ddfb4..27bd3e3 100644
>> --- a/include/linux/nfsd/xdr4.h
>> +++ b/include/linux/nfsd/xdr4.h
>> @@ -441,7 +441,7 @@ void nfsd4_encode_operation(struct
>> nfsd4_compoundres *, struct nfsd4_op *);
>> void nfsd4_encode_replay(struct nfsd4_compoundres *resp, struct
>> nfsd4_op *op);
>> __be32 nfsd4_encode_fattr(struct svc_fh *fhp, struct svc_export *exp,
>> struct dentry *dentry, __be32 *buffer, int *countp,
>> - u32 *bmval, struct svc_rqst *);
>> + u32 *bmval, struct svc_rqst *, int ignore_crossmnt);
>> extern __be32 nfsd4_setclientid(struct svc_rqst *rqstp,
>> struct nfsd4_compound_state *,
>> struct nfsd4_setclientid *setclid);
>
> --
> Chuck Lever
> chuck[dot]lever[at]oracle[dot]com
next prev parent reply other threads:[~2008-01-28 20:54 UTC|newest]
Thread overview: 158+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-01-25 23:15 nfs server patches for 2.6.25 J. Bruce Fields
2008-01-25 23:15 ` [PATCH 001/100] nfsd4: probe callback channel only once J. Bruce Fields
2008-01-25 23:15 ` [PATCH 002/100] nfsd: move callback rpc_client creation into separate thread J. Bruce Fields
2008-01-25 23:15 ` [PATCH 003/100] Fix incorrect assignment J. Bruce Fields
2008-01-25 23:15 ` [PATCH 004/100] knfsd: fix broken length check in nfs4idmap.c J. Bruce Fields
2008-01-25 23:15 ` [PATCH 005/100] SUNRPC: Prevent length underflow in read_flush() J. Bruce Fields
2008-01-25 23:15 ` [PATCH 006/100] SUNRPC: Use unsigned string lengths in xdr_decode_string_inplace J. Bruce Fields
2008-01-25 23:15 ` [PATCH 007/100] NLM: Fix sign of length of NLM variable length strings J. Bruce Fields
2008-01-25 23:15 ` [PATCH 008/100] NFSD: Use unsigned length argument for decode_filename J. Bruce Fields
2008-01-25 23:15 ` [PATCH 009/100] NFSD: File name length signage in nfsd request argument structures J. Bruce Fields
2008-01-25 23:15 ` [PATCH 010/100] NFSD: Adjust filename length argument of nfsd_lookup J. Bruce Fields
2008-01-25 23:15 ` [PATCH 011/100] NFSD: Use unsigned length argument for decode_pathname J. Bruce Fields
2008-01-25 23:15 ` [PATCH 012/100] NFSD: Fix mixed sign comparison in nfs3svc_decode_symlinkargs J. Bruce Fields
2008-01-25 23:15 ` [PATCH 013/100] NFSD: Path name length signage in nfsd request argument structures J. Bruce Fields
2008-01-25 23:15 ` [PATCH 014/100] knfsd: fix cache.c comment J. Bruce Fields
2008-01-25 23:15 ` [PATCH 015/100] nfsd: Fix handling of negative lengths in read_buf() J. Bruce Fields
2008-01-25 23:15 ` [PATCH 016/100] knfsd: cleanup nfsd4 properly on module init failure J. Bruce Fields
2008-01-25 23:15 ` [PATCH 017/100] nfsd: cleanup nfsd module initialization cleanup J. Bruce Fields
2008-01-25 23:15 ` [PATCH 018/100] nfsd: fail module init on reply cache init failure J. Bruce Fields
2008-01-25 23:15 ` [PATCH 019/100] knfsd: cache unregistration needn't return error J. Bruce Fields
2008-01-25 23:16 ` [PATCH 020/100] nfsd: select CONFIG_PROC_FS in nfsv4 and gss server cases J. Bruce Fields
2008-01-25 23:16 ` [PATCH 021/100] nfsd: fail init on /proc/fs/nfs/exports creation failure J. Bruce Fields
2008-01-25 23:16 ` [PATCH 022/100] nfsd: move cache proc (un)registration to separate function J. Bruce Fields
2008-01-25 23:16 ` [PATCH 023/100] knfsd: allow cache_register to return error on failure J. Bruce Fields
2008-01-25 23:16 ` [PATCH 024/100] nfsd: move nfsd/auth.h into fs/nfsd J. Bruce Fields
2008-01-25 23:16 ` [PATCH 025/100] nfsd: minor fs/nfsd/auth.h cleanup J. Bruce Fields
2008-01-25 23:16 ` [PATCH 026/100] nfsd4: kill some unneeded setclientid comments J. Bruce Fields
2008-01-25 23:16 ` [PATCH 027/100] nfsd: eliminate final bogus case from setclientid logic J. Bruce Fields
2008-01-25 23:16 ` [PATCH 028/100] nfsd: uniquify cl_confirm values J. Bruce Fields
2008-01-25 23:16 ` [PATCH 029/100] nfsd4: kill unnecessary same_name() in setclientid_confirm J. Bruce Fields
2008-01-25 23:16 ` [PATCH 030/100] nfsd4: remove unnecessary cl_verifier check from setclientid_confirm J. Bruce Fields
2008-01-25 23:16 ` [PATCH 031/100] nfsd4: kill unneeded cl_confirm check J. Bruce Fields
2008-01-25 23:16 ` [PATCH 032/100] nfsd: fix encode_entryplus_baggage() indentation J. Bruce Fields
[not found] ` <1201303040-7779-33-git-send-email-bfields@citi.! umich.edu>
[not found] ` <1201303040-7779-33-git-send-email-bfields@citi.!umich.edu>
2008-01-25 23:16 ` [PATCH 033/100] nfsd4: make current_clientid local J. Bruce Fields
2008-01-25 23:16 ` [PATCH 034/100] nfsd4: miscellaneous nfs4state.c style fixes J. Bruce Fields
2008-01-25 23:16 ` [PATCH 035/100] nfsd4: recognize callback channel failure earlier J. Bruce Fields
2008-01-25 23:16 ` [PATCH 036/100] lockd: fix reference count leaks in async locking case J. Bruce Fields
2008-01-25 23:16 ` [PATCH 037/100] nfsd4: fix bad seqid on lock request incompatible with open mode J. Bruce Fields
2008-01-25 23:16 ` [PATCH 038/100] nfsd: Allow AIX client to read dir containing mountpoints J. Bruce Fields
2008-01-25 23:16 ` [PATCH 039/100] lockd: fix a leak in nlmsvc_testlock asynchronous request handling J. Bruce Fields
2008-01-25 23:16 ` [PATCH 040/100] nfsd: allow root to set uid and gid on create J. Bruce Fields
2008-01-25 23:16 ` [PATCH 041/100] nfsd: fix rsi_cache reference count leak J. Bruce Fields
2008-01-25 23:16 ` [PATCH 042/100] knfsd: change mailing list for nfsd in MAINTAINERS J. Bruce Fields
2008-01-25 23:16 ` [PATCH 043/100] sunrpc: gss: simplify rsi_parse logic J. Bruce Fields
2008-01-25 23:16 ` [PATCH 044/100] nfsd4: clean up access_valid, deny_valid checks J. Bruce Fields
2008-01-25 23:16 ` [PATCH 045/100] Leak in nlmsvc_testlock for async GETFL case J. Bruce Fields
2008-01-25 23:16 ` [PATCH 046/100] svcrpc: ensure gss DESTROY tokens free contexts from cache J. Bruce Fields
2008-01-25 23:16 ` [PATCH 047/100] svc: Add an svc transport class J. Bruce Fields
2008-01-25 23:16 ` [PATCH 048/100] svc: Make svc_sock the tcp/udp transport J. Bruce Fields
2008-01-25 23:16 ` [PATCH 049/100] svc: Change the svc_sock in the rqstp structure to a transport J. Bruce Fields
2008-01-25 23:16 ` [PATCH 050/100] svc: Add a max payload value to the transport J. Bruce Fields
2008-01-25 23:16 ` [PATCH 051/100] svc: Move sk_sendto and sk_recvfrom to svc_xprt_class J. Bruce Fields
2008-01-25 23:16 ` [PATCH 052/100] svc: Add transport specific xpo_release function J. Bruce Fields
2008-01-25 23:16 ` [PATCH 053/100] svc: Add per-transport delete functions J. Bruce Fields
2008-01-25 23:16 ` [PATCH 054/100] svc: Add xpo_prep_reply_hdr J. Bruce Fields
2008-01-25 23:16 ` [PATCH 055/100] svc: Add a transport function that checks for write space J. Bruce Fields
2008-01-25 23:16 ` [PATCH 056/100] svc: Move close processing to a single place J. Bruce Fields
2008-01-25 23:16 ` [PATCH 057/100] svc: Add xpo_accept transport function J. Bruce Fields
2008-01-25 23:16 ` [PATCH 058/100] svc: Remove unnecessary call to svc_sock_enqueue J. Bruce Fields
2008-01-25 23:16 ` [PATCH 059/100] svc: Move connection limit checking to its own function J. Bruce Fields
2008-01-25 23:16 ` [PATCH 060/100] svc: Add a generic transport svc_create_xprt function J. Bruce Fields
2008-01-25 23:16 ` [PATCH 061/100] svc: Change services to use new svc_create_xprt service J. Bruce Fields
2008-01-25 23:16 ` [PATCH 062/100] svc: Change sk_inuse to a kref J. Bruce Fields
2008-01-25 23:16 ` [PATCH 063/100] svc: Move sk_flags to the svc_xprt structure J. Bruce Fields
2008-01-25 23:16 ` [PATCH 064/100] svc: Move sk_server and sk_pool to svc_xprt J. Bruce Fields
2008-01-25 23:16 ` [PATCH 065/100] svc: Make close transport independent J. Bruce Fields
2008-01-25 23:16 ` [PATCH 066/100] svc: Move sk_reserved to svc_xprt J. Bruce Fields
2008-01-25 23:16 ` [PATCH 067/100] svc: Make the enqueue service transport neutral and export it J. Bruce Fields
2008-01-25 23:16 ` [PATCH 068/100] svc: Make svc_send transport neutral J. Bruce Fields
2008-01-25 23:16 ` [PATCH 069/100] svc: Change svc_sock_received to svc_xprt_received and export it J. Bruce Fields
2008-01-25 23:16 ` [PATCH 070/100] svc: Move accept call to svc_xprt_received to common code J. Bruce Fields
2008-01-25 23:16 ` [PATCH 071/100] svc: Remove sk_lastrecv J. Bruce Fields
2008-01-25 23:16 ` [PATCH 072/100] svc: Move the authinfo cache to svc_xprt J. Bruce Fields
2008-01-25 23:16 ` [PATCH 073/100] svc: Make deferral processing xprt independent J. Bruce Fields
2008-01-25 23:16 ` [PATCH 074/100] svc: Move the sockaddr information to svc_xprt J. Bruce Fields
2008-01-25 23:16 ` [PATCH 075/100] svc: Make svc_sock_release svc_xprt_release J. Bruce Fields
2008-01-25 23:16 ` [PATCH 076/100] svc: Make svc_recv transport neutral J. Bruce Fields
2008-01-25 23:16 ` [PATCH 077/100] svc: Make svc_age_temp_sockets svc_age_temp_transports J. Bruce Fields
2008-01-25 23:16 ` [PATCH 078/100] svc: Move create logic to common code J. Bruce Fields
2008-01-25 23:16 ` [PATCH 079/100] svc: Removing remaining references to rq_sock in rqstp J. Bruce Fields
2008-01-25 23:17 ` [PATCH 080/100] svc: Make svc_check_conn_limits xprt independent J. Bruce Fields
2008-01-25 23:17 ` [PATCH 081/100] svc: Move the xprt independent code to the svc_xprt.c file J. Bruce Fields
2008-01-25 23:17 ` [PATCH 082/100] svc: Add transport hdr size for defer/revisit J. Bruce Fields
2008-01-25 23:17 ` [PATCH 083/100] svc: Add /proc/sys/sunrpc/transport files J. Bruce Fields
2008-01-25 23:17 ` [PATCH 084/100] svc: Add svc API that queries for a transport instance J. Bruce Fields
2008-01-25 23:17 ` [PATCH 085/100] knfsd: Support adding transports by writing portlist file J. Bruce Fields
2008-01-25 23:17 ` [PATCH 086/100] svc: Add svc_xprt_names service to replace svc_sock_names J. Bruce Fields
2008-01-25 23:17 ` [PATCH 087/100] rdma: SVCRMDA Header File J. Bruce Fields
2008-01-25 23:17 ` [PATCH 088/100] rdma: SVCRDMA Transport Module J. Bruce Fields
2008-01-25 23:17 ` [PATCH 089/100] rdma: SVCRDMA Core Transport Services J. Bruce Fields
2008-01-25 23:17 ` [PATCH 090/100] rdma: SVCRDMA recvfrom J. Bruce Fields
2008-01-25 23:17 ` [PATCH 091/100] rdma: SVCRDMA sendto J. Bruce Fields
2008-01-25 23:17 ` [PATCH 092/100] rdma: ONCRPC RDMA protocol marshalling J. Bruce Fields
2008-01-25 23:17 ` [PATCH 093/100] rdma: makefile J. Bruce Fields
2008-01-25 23:17 ` [PATCH 094/100] SUNRPC: spin svc_rqst initialization to its own function J. Bruce Fields
2008-01-25 23:17 ` [PATCH 095/100] SUNRPC: export svc_sock_update_bufs J. Bruce Fields
2008-01-25 23:17 ` [PATCH 096/100] NLM: Convert lockd to use kthreads J. Bruce Fields
2008-01-25 23:17 ` [PATCH 097/100] NLM: have nlm_shutdown_hosts kill off all NLM RPC tasks J. Bruce Fields
2008-01-25 23:17 ` [PATCH 098/100] knfsd: don't bother mapping putrootfh enoent to eperm J. Bruce Fields
2008-01-25 23:17 ` [PATCH 099/100] lockd: minor log message fix J. Bruce Fields
2008-01-25 23:17 ` [PATCH 100/100] nfsd: more careful input validation in nfsctl write methods J. Bruce Fields
2008-01-25 23:55 ` [PATCH 097/100] NLM: have nlm_shutdown_hosts kill off all NLM RPC tasks Jeff Layton
[not found] ` <20080125185548.5363f046-RtJpwOs3+0O+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2008-01-26 0:31 ` J. Bruce Fields
2008-01-26 1:02 ` Jeff Layton
2008-01-26 1:19 ` Trond Myklebust
[not found] ` <1201310387.4150.21.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>
2008-01-28 15:11 ` Jeff Layton
2008-01-28 20:17 ` [PATCH 039/100] lockd: fix a leak in nlmsvc_testlock asynchronous request handling Chuck Lever
2008-01-28 20:28 ` Oleg Drokin
2008-01-28 20:04 ` [PATCH 038/100] nfsd: Allow AIX client to read dir containing mountpoints Chuck Lever
2008-01-28 20:54 ` J. Bruce Fields [this message]
2008-02-08 20:07 ` Peter Staubach
2008-02-08 21:03 ` J. Bruce Fields
2008-02-08 21:25 ` Frank Filz
2008-02-08 21:26 ` Peter Staubach
2008-02-08 21:46 ` J. Bruce Fields
2008-02-11 20:26 ` Peter Staubach
2008-01-28 19:46 ` [PATCH 036/100] lockd: fix reference count leaks in async locking case Chuck Lever
2008-01-28 20:44 ` J. Bruce Fields
2008-01-28 20:47 ` Oleg Drokin
[not found] ` <B0E92DA2-92DD-4637-B265-57B0D6D0D761-SOTZviwpzew/JUsKyNonYw@public.gmane.org>
2008-01-28 21:09 ` J. Bruce Fields
2008-01-28 19:39 ` [PATCH 034/100] nfsd4: miscellaneous nfs4state.c style fixes Chuck Lever
2008-01-28 20:24 ` J. Bruce Fields
2008-01-28 17:24 ` [PATCH 024/100] nfsd: move nfsd/auth.h into fs/nfsd Chuck Lever
2008-01-28 18:13 ` J. Bruce Fields
2008-01-28 19:40 ` [PATCH 022/100] nfsd: move cache proc (un)registration to separate function Chuck Lever
2008-01-28 21:31 ` J. Bruce Fields
2008-01-28 19:40 ` [PATCH 021/100] nfsd: fail init on /proc/fs/nfs/exports creation failure Chuck Lever
2008-01-28 21:20 ` J. Bruce Fields
2008-01-28 18:07 ` [PATCH 020/100] nfsd: select CONFIG_PROC_FS in nfsv4 and gss server cases Chuck Lever
2008-01-28 18:28 ` J. Bruce Fields
2008-01-28 21:12 ` Chuck Lever
2008-01-28 21:48 ` J. Bruce Fields
2008-02-01 16:40 ` Chuck Lever
2008-02-01 21:01 ` J. Bruce Fields
2008-02-04 21:29 ` Chuck Lever
2008-02-04 22:15 ` J. Bruce Fields
2008-02-04 23:17 ` Chuck Lever
2008-02-04 23:24 ` J. Bruce Fields
2008-01-28 18:03 ` [PATCH 018/100] nfsd: fail module init on reply cache init failure Chuck Lever
2008-01-28 18:32 ` J. Bruce Fields
2008-01-28 18:00 ` [PATCH 015/100] nfsd: Fix handling of negative lengths in read_buf() Chuck Lever
2008-01-28 20:15 ` J. Bruce Fields
2008-01-28 21:46 ` Chuck Lever
2008-01-28 22:14 ` J. Bruce Fields
2008-01-28 23:16 ` Chuck Lever
2008-01-28 23:31 ` J. Bruce Fields
2008-01-28 17:40 ` [PATCH 003/100] Fix incorrect assignment Chuck Lever
2008-01-28 20:07 ` J. Bruce Fields
2008-01-28 21:22 ` Chuck Lever
2008-01-28 17:35 ` [PATCH 001/100] nfsd4: probe callback channel only once Chuck Lever
2008-01-28 18:48 ` J. Bruce Fields
2008-01-28 21:14 ` Chuck Lever
2008-01-28 21:39 ` J. Bruce Fields
2008-01-28 21:55 ` Chuck Lever
2008-01-26 0:15 ` nfs server patches not in 2.6.25 J. Bruce Fields
2008-01-27 20:42 ` nfs server patches for 2.6.25 Simon Holm Thøgersen
2008-01-27 22:10 ` J. Bruce Fields
2008-01-28 3:15 ` J. Bruce Fields
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=20080128205437.GJ16785@fieldses.org \
--to=bfields@fieldses.org \
--cc=chuck.lever@oracle.com \
--cc=ffilzlnx@us.ibm.com \
--cc=linux-nfs@vger.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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox