Re: [PATCH v3 1/4] ceph: add __ceph_get_caps helper support

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

 



I see your cover letter for this series on the list. You may just be
running across how gmail's (infuriating) labeling works? I don't think
they ever show up in patchwork though (since they don't have patches in
them).

-- Jeff


On Thu, 2021-10-28 at 17:23 +0800, Xiubo Li wrote:
> Hi Jeff,
> 
> Not sure why the cover-letter is not displayed in both the mail list and 
> ceph patchwork, locally it was successfully sent out.
> 
> Any idea ?
> 
> Thanks
> 
> -- Xiubo
> 
> 
> On 10/28/21 5:14 PM, xiubli@xxxxxxxxxx wrote:
> > From: Xiubo Li <xiubli@xxxxxxxxxx>
> > 
> > Signed-off-by: Xiubo Li <xiubli@xxxxxxxxxx>
> > ---
> >   fs/ceph/caps.c  | 19 +++++++++++++------
> >   fs/ceph/super.h |  2 ++
> >   2 files changed, 15 insertions(+), 6 deletions(-)
> > 
> > diff --git a/fs/ceph/caps.c b/fs/ceph/caps.c
> > index d628dcdbf869..4e2a588465c5 100644
> > --- a/fs/ceph/caps.c
> > +++ b/fs/ceph/caps.c
> > @@ -2876,10 +2876,9 @@ int ceph_try_get_caps(struct inode *inode, int need, int want,
> >    * due to a small max_size, make sure we check_max_size (and possibly
> >    * ask the mds) so we don't get hung up indefinitely.
> >    */
> > -int ceph_get_caps(struct file *filp, int need, int want, loff_t endoff, int *got)
> > +int __ceph_get_caps(struct inode *inode, struct ceph_file_info *fi, int need,
> > +		    int want, loff_t endoff, int *got)
> >   {
> > -	struct ceph_file_info *fi = filp->private_data;
> > -	struct inode *inode = file_inode(filp);
> >   	struct ceph_inode_info *ci = ceph_inode(inode);
> >   	struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
> >   	int ret, _got, flags;
> > @@ -2888,7 +2887,7 @@ int ceph_get_caps(struct file *filp, int need, int want, loff_t endoff, int *got
> >   	if (ret < 0)
> >   		return ret;
> >   
> > -	if ((fi->fmode & CEPH_FILE_MODE_WR) &&
> > +	if (fi && (fi->fmode & CEPH_FILE_MODE_WR) &&
> >   	    fi->filp_gen != READ_ONCE(fsc->filp_gen))
> >   		return -EBADF;
> >   
> > @@ -2896,7 +2895,7 @@ int ceph_get_caps(struct file *filp, int need, int want, loff_t endoff, int *got
> >   
> >   	while (true) {
> >   		flags &= CEPH_FILE_MODE_MASK;
> > -		if (atomic_read(&fi->num_locks))
> > +		if (fi && atomic_read(&fi->num_locks))
> >   			flags |= CHECK_FILELOCK;
> >   		_got = 0;
> >   		ret = try_get_cap_refs(inode, need, want, endoff,
> > @@ -2941,7 +2940,7 @@ int ceph_get_caps(struct file *filp, int need, int want, loff_t endoff, int *got
> >   				continue;
> >   		}
> >   
> > -		if ((fi->fmode & CEPH_FILE_MODE_WR) &&
> > +		if (fi && (fi->fmode & CEPH_FILE_MODE_WR) &&
> >   		    fi->filp_gen != READ_ONCE(fsc->filp_gen)) {
> >   			if (ret >= 0 && _got)
> >   				ceph_put_cap_refs(ci, _got);
> > @@ -3004,6 +3003,14 @@ int ceph_get_caps(struct file *filp, int need, int want, loff_t endoff, int *got
> >   	return 0;
> >   }
> >   
> > +int ceph_get_caps(struct file *filp, int need, int want, loff_t endoff, int *got)
> > +{
> > +	struct ceph_file_info *fi = filp->private_data;
> > +	struct inode *inode = file_inode(filp);
> > +
> > +	return __ceph_get_caps(inode, fi, need, want, endoff, got);
> > +}
> > +
> >   /*
> >    * Take cap refs.  Caller must already know we hold at least one ref
> >    * on the caps in question or we don't know this is safe.
> > diff --git a/fs/ceph/super.h b/fs/ceph/super.h
> > index 7f3976b3319d..027d5f579ba0 100644
> > --- a/fs/ceph/super.h
> > +++ b/fs/ceph/super.h
> > @@ -1208,6 +1208,8 @@ extern int ceph_encode_dentry_release(void **p, struct dentry *dn,
> >   				      struct inode *dir,
> >   				      int mds, int drop, int unless);
> >   
> > +extern int __ceph_get_caps(struct inode *inode, struct ceph_file_info *fi,
> > +			   int need, int want, loff_t endoff, int *got);
> >   extern int ceph_get_caps(struct file *filp, int need, int want,
> >   			 loff_t endoff, int *got);
> >   extern int ceph_try_get_caps(struct inode *inode,
> 

-- 
Jeff Layton <jlayton@xxxxxxxxxx>




[Index of Archives]     [CEPH Users]     [Ceph Large]     [Ceph Dev]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux