You rather mean bmval1 not bmval0, right? -----Original Message----- From: bfields@xxxxxxxxxxxx <bfields@xxxxxxxxxxxx> Sent: čtvrtek 6. ledna 2022 15:36 To: Ondrej Valousek <ondrej.valousek.xm@xxxxxxxxxxx> Cc: Trond Myklebust <trondmy@xxxxxxxxxxxxxxx>; linux-nfs@xxxxxxxxxxxxxxx; anna.schumaker@xxxxxxxxxx; trondmy@xxxxxxxxxx Subject: Re: [PATCH 0/8] Support btime and other NFSv4 specific attributes 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. 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.