Message ID | 20230906121747.618289-1-xiubli@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ceph: remove the incorrect caps check in _file_size() | expand |
On Wed, Sep 06, 2023 at 08:17:47PM +0800, xiubli@redhat.com wrote: > From: Xiubo Li <xiubli@redhat.com> > > When truncating the inode the MDS will acquire the xlock for the > ifile Locker, which will revoke the 'Frwsxl' caps from the clients. > But when the client just releases and flushes the 'Fw' caps to MDS, > for exmaple, and once the MDS receives the caps flushing msg it > just thought the revocation has finished. Then the MDS will continue > truncating the inode and then issued the truncate notification to > all the clients. While just before the clients receives the cap > flushing ack they receive the truncation notification, the clients > will detecte that the 'issued | dirty' is still holding the 'Fw' > caps. > > Cc: stable@vger.kernel.org > URL: https://tracker.ceph.com/issues/56693 > Signed-off-by: Xiubo Li <xiubli@redhat.com> > --- > fs/ceph/inode.c | 4 +--- > 1 file changed, 1 insertion(+), 3 deletions(-) What commit id does this fix? thanks, greg k-h
On 9/6/23 22:45, Greg KH wrote: > On Wed, Sep 06, 2023 at 08:17:47PM +0800, xiubli@redhat.com wrote: >> From: Xiubo Li <xiubli@redhat.com> >> >> When truncating the inode the MDS will acquire the xlock for the >> ifile Locker, which will revoke the 'Frwsxl' caps from the clients. >> But when the client just releases and flushes the 'Fw' caps to MDS, >> for exmaple, and once the MDS receives the caps flushing msg it >> just thought the revocation has finished. Then the MDS will continue >> truncating the inode and then issued the truncate notification to >> all the clients. While just before the clients receives the cap >> flushing ack they receive the truncation notification, the clients >> will detecte that the 'issued | dirty' is still holding the 'Fw' >> caps. >> >> Cc: stable@vger.kernel.org >> URL: https://tracker.ceph.com/issues/56693 >> Signed-off-by: Xiubo Li <xiubli@redhat.com> >> --- >> fs/ceph/inode.c | 4 +--- >> 1 file changed, 1 insertion(+), 3 deletions(-) > What commit id does this fix? Oh, I forgot to mention that in the commit comment, it will fix: b0d7c2231015 ceph: introduce i_truncate_mutex Let me update the patch and send out the V2 for it. Thanks - Xiubo > thanks, > > greg k-h >
diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c index ea6f966dacd5..8017b9e5864f 100644 --- a/fs/ceph/inode.c +++ b/fs/ceph/inode.c @@ -769,9 +769,7 @@ int ceph_fill_file_size(struct inode *inode, int issued, ci->i_truncate_seq = truncate_seq; /* the MDS should have revoked these caps */ - WARN_ON_ONCE(issued & (CEPH_CAP_FILE_EXCL | - CEPH_CAP_FILE_RD | - CEPH_CAP_FILE_WR | + WARN_ON_ONCE(issued & (CEPH_CAP_FILE_RD | CEPH_CAP_FILE_LAZYIO)); /* * If we hold relevant caps, or in the case where we're