Re: [RFC v3 27/42] NFSD: allow inter server COPY to have a STALE source server fh

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Sep 15, 2017 at 4:06 PM, J. Bruce Fields <bfields@xxxxxxxxxx> wrote:
> On Fri, Sep 15, 2017 at 04:02:21PM -0400, J. Bruce Fields wrote:
>> On Fri, Sep 15, 2017 at 03:46:03PM -0400, Olga Kornievskaia wrote:
>> > We still need it so that the savefh process can skip the check for the
>> > filehandle.
>
> By the way, I think the current check in nfsd4_savefh is redundant; we
> can probably apply something like the following.  (Untested.)

If those checks are not necessary then IS_STALE_FH is not necessary.

>
> --b.
>
> commit c1bab7c64408
> Author: J. Bruce Fields <bfields@xxxxxxxxxx>
> Date:   Fri Sep 15 16:02:52 2017 -0400
>
>     nfsd: remove unnecessary nofilehandle checks
>
>     These checks should have already be done centrally in
>     nfsd4_proc_compound, the checks in each individual operation are
>     unnecessary.
>
>     Signed-off-by: J. Bruce Fields <bfields@xxxxxxxxxx>
>
> diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
> index 3c69db7d4905..07ebae912e0e 100644
> --- a/fs/nfsd/nfs4proc.c
> +++ b/fs/nfsd/nfs4proc.c
> @@ -485,9 +485,6 @@ static __be32
>  nfsd4_getfh(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
>             union nfsd4_op_u *u)
>  {
> -       if (!cstate->current_fh.fh_dentry)
> -               return nfserr_nofilehandle;
> -
>         u->getfh = &cstate->current_fh;
>         return nfs_ok;
>  }
> @@ -535,9 +532,6 @@ static __be32
>  nfsd4_savefh(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
>              union nfsd4_op_u *u)
>  {
> -       if (!cstate->current_fh.fh_dentry)
> -               return nfserr_nofilehandle;
> -
>         fh_dup2(&cstate->save_fh, &cstate->current_fh);
>         if (HAS_STATE_ID(cstate, CURRENT_STATE_ID_FLAG)) {
>                 memcpy(&cstate->save_stateid, &cstate->current_stateid, sizeof(stateid_t));
> @@ -703,10 +697,7 @@ nfsd4_link(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
>            union nfsd4_op_u *u)
>  {
>         struct nfsd4_link *link = &u->link;
> -       __be32 status = nfserr_nofilehandle;
>
> -       if (!cstate->save_fh.fh_dentry)
> -               return status;
>         status = nfsd_link(rqstp, &cstate->current_fh,
>                            link->li_name, link->li_namelen, &cstate->save_fh);
>         if (!status)
> @@ -850,10 +841,7 @@ nfsd4_rename(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
>              union nfsd4_op_u *u)
>  {
>         struct nfsd4_rename *rename = &u->rename;
> -       __be32 status = nfserr_nofilehandle;
>
> -       if (!cstate->save_fh.fh_dentry)
> -               return status;
>         if (opens_in_grace(SVC_NET(rqstp)) &&
>                 !(cstate->save_fh.fh_export->ex_flags & NFSEXP_NOSUBTREECHECK))
>                 return nfserr_grace;
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux