Re: [PATCH 2/2] NFS: Use GFP_NOIO for two allocations in writeback

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

 



On 18 Apr 2017, at 12:42, Trond Myklebust wrote:

> Hi Ben,
>
> On Tue, 2017-04-18 at 11:40 -0400, Benjamin Coddington wrote:
>> Prevent a deadlock that can occur if we wait on allocations
>> that try to write back our pages.
>>
>> Signed-off-by: Benjamin Coddington <bcodding@xxxxxxxxxx>
>> ---
>>  fs/nfs/pagelist.c | 10 ++++++++--
>>  1 file changed, 8 insertions(+), 2 deletions(-)
>>
>> diff --git a/fs/nfs/pagelist.c b/fs/nfs/pagelist.c
>> index 19eaae0dee51..fa2924ce5a78 100644
>> --- a/fs/nfs/pagelist.c
>> +++ b/fs/nfs/pagelist.c
>> @@ -668,6 +668,7 @@ void nfs_pageio_init(struct nfs_pageio_descriptor
>> *desc,
>>  {
>>  	struct nfs_pgio_mirror *new;
>>  	int i;
>> +	gfp_t gfp_flags = GFP_KERNEL;
>>  
>>  	desc->pg_moreio = 0;
>>  	desc->pg_inode = inode;
>> @@ -687,8 +688,10 @@ void nfs_pageio_init(struct
>> nfs_pageio_descriptor *desc,
>>  	if (pg_ops->pg_get_mirror_count) {
>>  		/* until we have a request, we don't have an lseg
>> and no
>>  		 * idea how many mirrors there will be */
>> +		if (desc->pg_rw_ops->rw_mode == FMODE_WRITE)
>
> Can we rather replace this with a new field in struct
> nfs_pageio_descriptor? I want to get rid of pg_rw_ops->rw_mode; it's
> something that slipped through the cracks.

I can do this.  It might make sense to just replace rw_mode with something
like rw_gfp_flags..  Otherwise, this looks like another argument to
nfs_pageio_init(), unless we can piggy-back on pg_ioflags.

> Also, please put this patch before the other so that it can be easily
> propagated as a stable patch.

Of course, that makes more sense too.

Ben
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[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