diff options
Diffstat (limited to 'fs/ceph/addr.c')
| -rw-r--r-- | fs/ceph/addr.c | 11 | 
1 files changed, 6 insertions, 5 deletions
| diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c index 6dee88815491..d6e5916138e4 100644 --- a/fs/ceph/addr.c +++ b/fs/ceph/addr.c @@ -63,7 +63,7 @@  	 (CONGESTION_ON_THRESH(congestion_kb) >> 2))  static int ceph_netfs_check_write_begin(struct file *file, loff_t pos, unsigned int len, -					struct folio *folio, void **_fsdata); +					struct folio **foliop, void **_fsdata);  static inline struct ceph_snap_context *page_snap_context(struct page *page)  { @@ -1288,18 +1288,19 @@ ceph_find_incompatible(struct page *page)  }  static int ceph_netfs_check_write_begin(struct file *file, loff_t pos, unsigned int len, -					struct folio *folio, void **_fsdata) +					struct folio **foliop, void **_fsdata)  {  	struct inode *inode = file_inode(file);  	struct ceph_inode_info *ci = ceph_inode(inode);  	struct ceph_snap_context *snapc; -	snapc = ceph_find_incompatible(folio_page(folio, 0)); +	snapc = ceph_find_incompatible(folio_page(*foliop, 0));  	if (snapc) {  		int r; -		folio_unlock(folio); -		folio_put(folio); +		folio_unlock(*foliop); +		folio_put(*foliop); +		*foliop = NULL;  		if (IS_ERR(snapc))  			return PTR_ERR(snapc); |