Re: [PATCH 0/8] Support btime and other NFSv4 specific attributes

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

 



On Thu, Jan 06, 2022 at 09:28:12AM -0500, bfields@xxxxxxxxxxxx wrote:
> On Thu, Jan 06, 2022 at 02:19:22PM +0000, Ondrej Valousek wrote:
> > > You also need to update the value of NFSD4_SUPPORTED_ATTRS_WORD1 to reflect the new support for FATTR4_WORD1_TIME_CREATE.
> > 
> > Yes, I realized that one shortly after I sent the mail.
> > Just going to try this patch:
> 
> Thanks!
> 
> Don't we want to vary support depending on the filesystem, though?  Is
> there a way to query that?

Poking around a bit...  looks like we need to check stat->result_mask &
STATX_BTIME.  And use that to adjust the value of bmval0 at the top of
encode_fattr, and make the below encoding conditional on it.

?

--b.

> 
> --b.
> 
> > 
> > [ondrejv@skynet19 /opt/kernel/linux-git/fs/nfsd]$ git diff
> > diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
> > index 5a93a5db4fb0..be47e1dd6da5 100644
> > --- a/fs/nfsd/nfs4xdr.c
> > +++ b/fs/nfsd/nfs4xdr.c
> > @@ -3265,6 +3265,14 @@ nfsd4_encode_fattr(struct xdr_stream *xdr, struct svc_fh *fhp,
> >                 p = xdr_encode_hyper(p, (s64)stat.mtime.tv_sec);
> >                 *p++ = cpu_to_be32(stat.mtime.tv_nsec);
> >         }
> > +       /* support for btime here */
> > +        if (bmval1 & FATTR4_WORD1_TIME_CREATE) {
> > +                p = xdr_reserve_space(xdr, 12);
> > +                if (!p)
> > +                        goto out_resource;
> > +                p = xdr_encode_hyper(p, (s64)stat.btime.tv_sec);
> > +                *p++ = cpu_to_be32(stat.btime.tv_nsec);
> > +        }
> >         if (bmval1 & FATTR4_WORD1_MOUNTED_ON_FILEID) {
> >                 struct kstat parent_stat;
> >                 u64 ino = stat.ino;
> > diff --git a/fs/nfsd/nfsd.h b/fs/nfsd/nfsd.h
> > index 498e5a489826..5ef056ce7591 100644
> > --- a/fs/nfsd/nfsd.h
> > +++ b/fs/nfsd/nfsd.h
> > @@ -364,7 +364,7 @@ void                nfsd_lockd_shutdown(void);
> >   | FATTR4_WORD1_OWNER          | FATTR4_WORD1_OWNER_GROUP  | FATTR4_WORD1_RAWDEV           \
> >   | FATTR4_WORD1_SPACE_AVAIL     | FATTR4_WORD1_SPACE_FREE   | FATTR4_WORD1_SPACE_TOTAL      \
> >   | FATTR4_WORD1_SPACE_USED      | FATTR4_WORD1_TIME_ACCESS  | FATTR4_WORD1_TIME_ACCESS_SET  \
> > - | FATTR4_WORD1_TIME_DELTA   | FATTR4_WORD1_TIME_METADATA    \
> > + | FATTR4_WORD1_TIME_DELTA   | FATTR4_WORD1_TIME_METADATA   | FATTR4_WORD1_TIME_CREATE      \
> >   | FATTR4_WORD1_TIME_MODIFY     | FATTR4_WORD1_TIME_MODIFY_SET | FATTR4_WORD1_MOUNTED_ON_FILEID)
> > 
> >  #define NFSD4_SUPPORTED_ATTRS_WORD2 0
> > 
> > 
> > ... will see
> > 
> > Legal Disclaimer: This e-mail communication (and any attachment/s) is confidential and contains proprietary information, some or all of which may be legally privileged. It is intended solely for the use of the individual or entity to which it is addressed. Access to this email by anyone else is unauthorized. If you are not the intended recipient, any disclosure, copying, distribution or any action taken or omitted to be taken in reliance on it, is prohibited and may be unlawful.



[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