diff options
Diffstat (limited to 'fs/netfs/fscache_io.c')
| -rw-r--r-- | fs/netfs/fscache_io.c | 14 | 
1 files changed, 9 insertions, 5 deletions
diff --git a/fs/netfs/fscache_io.c b/fs/netfs/fscache_io.c index 43a651ed8264..38637e5c9b57 100644 --- a/fs/netfs/fscache_io.c +++ b/fs/netfs/fscache_io.c @@ -166,6 +166,7 @@ struct fscache_write_request {  	loff_t			start;  	size_t			len;  	bool			set_bits; +	bool			using_pgpriv2;  	netfs_io_terminated_t	term_func;  	void			*term_func_priv;  }; @@ -182,7 +183,7 @@ void __fscache_clear_page_bits(struct address_space *mapping,  		rcu_read_lock();  		xas_for_each(&xas, page, last) { -			end_page_fscache(page); +			folio_end_private_2(page_folio(page));  		}  		rcu_read_unlock();  	} @@ -197,8 +198,9 @@ static void fscache_wreq_done(void *priv, ssize_t transferred_or_error,  {  	struct fscache_write_request *wreq = priv; -	fscache_clear_page_bits(wreq->mapping, wreq->start, wreq->len, -				wreq->set_bits); +	if (wreq->using_pgpriv2) +		fscache_clear_page_bits(wreq->mapping, wreq->start, wreq->len, +					wreq->set_bits);  	if (wreq->term_func)  		wreq->term_func(wreq->term_func_priv, transferred_or_error, @@ -212,7 +214,7 @@ void __fscache_write_to_cache(struct fscache_cookie *cookie,  			      loff_t start, size_t len, loff_t i_size,  			      netfs_io_terminated_t term_func,  			      void *term_func_priv, -			      bool cond) +			      bool using_pgpriv2, bool cond)  {  	struct fscache_write_request *wreq;  	struct netfs_cache_resources *cres; @@ -230,6 +232,7 @@ void __fscache_write_to_cache(struct fscache_cookie *cookie,  	wreq->mapping		= mapping;  	wreq->start		= start;  	wreq->len		= len; +	wreq->using_pgpriv2	= using_pgpriv2;  	wreq->set_bits		= cond;  	wreq->term_func		= term_func;  	wreq->term_func_priv	= term_func_priv; @@ -257,7 +260,8 @@ abandon_end:  abandon_free:  	kfree(wreq);  abandon: -	fscache_clear_page_bits(mapping, start, len, cond); +	if (using_pgpriv2) +		fscache_clear_page_bits(mapping, start, len, cond);  	if (term_func)  		term_func(term_func_priv, ret, false);  }  |