Re: [PATCH v3 2/2] NFS: Enable the RWF_DONTCACHE flag for the NFS client

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

 



On Mon, Aug 18, 2025 at 07:39:50AM -0700, Trond Myklebust wrote:
> @@ -349,8 +349,12 @@ static void nfs_folio_end_writeback(struct folio *folio)
>  static void nfs_page_end_writeback(struct nfs_page *req)
>  {
>  	if (nfs_page_group_sync_on_bit(req, PG_WB_END)) {
> +		struct folio *folio = nfs_page_to_folio(req);
> +
> +		if (folio_test_clear_dropbehind(folio))
> +			set_bit(PG_DROPBEHIND, &req->wb_head->wb_flags);
>  		nfs_unlock_request(req);
> @@ -787,8 +791,15 @@ static void nfs_inode_remove_request(struct nfs_page *req)
>  			clear_bit(PG_MAPPED, &req->wb_head->wb_flags);
>  		}
>  		spin_unlock(&mapping->i_private_lock);
> -	}
> -	nfs_page_group_unlock(req);
> +		nfs_page_group_unlock(req);
> +
> +		if (test_and_clear_bit(PG_DROPBEHIND,
> +				       &req->wb_head->wb_flags)) {
> +			folio_set_dropbehind(folio);
> +			folio_end_dropbehind(folio);
> +		}

I don't think this technique is "safe".  By clearing the flag early,
the page cache can't see that a folio that was created by dropbehind
has now been reused and should have its dropbehind flag cleared.  So we
might see pages dropped from the cache that really should not be.




[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux