| From 184ee9ecd62dbd7ba5781c59fee58861b47c901d Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 4 May 2021 10:08:30 -0400 |
| Subject: ceph: remove bogus checks and WARN_ONs from ceph_set_page_dirty |
| |
| From: Jeff Layton <jlayton@kernel.org> |
| |
| [ Upstream commit 22d41cdcd3cfd467a4af074165357fcbea1c37f5 ] |
| |
| The checks for page->mapping are odd, as set_page_dirty is an |
| address_space operation, and I don't see where it would be called on a |
| non-pagecache page. |
| |
| The warning about the page lock also seems bogus. The comment over |
| set_page_dirty() says that it can be called without the page lock in |
| some rare cases. I don't think we want to warn if that's the case. |
| |
| Reported-by: Matthew Wilcox <willy@infradead.org> |
| Signed-off-by: Jeff Layton <jlayton@kernel.org> |
| Signed-off-by: Ilya Dryomov <idryomov@gmail.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| fs/ceph/addr.c | 10 +--------- |
| 1 file changed, 1 insertion(+), 9 deletions(-) |
| |
| diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c |
| index c000fe338f7e..c54317c10f58 100644 |
| --- a/fs/ceph/addr.c |
| +++ b/fs/ceph/addr.c |
| @@ -78,10 +78,6 @@ static int ceph_set_page_dirty(struct page *page) |
| struct inode *inode; |
| struct ceph_inode_info *ci; |
| struct ceph_snap_context *snapc; |
| - int ret; |
| - |
| - if (unlikely(!mapping)) |
| - return !TestSetPageDirty(page); |
| |
| if (PageDirty(page)) { |
| dout("%p set_page_dirty %p idx %lu -- already dirty\n", |
| @@ -127,11 +123,7 @@ static int ceph_set_page_dirty(struct page *page) |
| page->private = (unsigned long)snapc; |
| SetPagePrivate(page); |
| |
| - ret = __set_page_dirty_nobuffers(page); |
| - WARN_ON(!PageLocked(page)); |
| - WARN_ON(!page->mapping); |
| - |
| - return ret; |
| + return __set_page_dirty_nobuffers(page); |
| } |
| |
| /* |
| -- |
| 2.30.2 |
| |