[ARM+NFS] panic while copying across NFS

Alexandr Rybalko ray at dlink.ua
Fri Oct 23 13:31:02 UTC 2009


Hi Mark!
With your patch works fine.


# dd if=/swap.file of=/mnt/swap.file bs=1M
1024+0 records in
1024+0 records out
1073741824 bytes transferred in 231.294150 secs (4642322 bytes/sec)


But still slow. Maybe someone know why slow? (Marvell 88F5182 rev A2)



On Wed, 7 Oct 2009 11:36:15 -0500 (CDT)
Mark Tinguely <tinguely at casselton.net> wrote:

>> 
>> (CC -arm and -current removed)
>> 
>> Have you tried to remove the dangling allocations? I can't say that this
>> will change anything, I would just feel better to eliminate them.
>> 
>> 		----
>> 
>> Revisions 181296 and  195779 added the cache fixes.
>> 
>> Below are a couple more. We should remove the dangling allocations so
>> they do not un-necessarily turn off the cache in the future.
>> 
>> 		----
>> 
>> Index: arm/arm/vm_machdep.c
>> ===================================================================
>> --- arm/arm/vm_machdep.c	(revision 196359)
>> +++ arm/arm/vm_machdep.c	(working copy)
>> @@ -172,6 +172,9 @@ sf_buf_free(struct sf_buf *sf)
>>  	 if (sf->ref_count == 0) {
>>  		 TAILQ_INSERT_TAIL(&sf_buf_freelist, sf, free_entry);
>>  		 nsfbufsused--;
>> +		 pmap_kremove(sf->kva);
>> +		 sf->m = NULL;
>> +		 LIST_REMOVE(sf, list_entry);
>>  		 if (sf_buf_alloc_want > 0)
>>  			 wakeup_one(&sf_buf_freelist);
>>  	 }
>> @@ -452,9 +455,12 @@ arm_unmap_nocache(void *addr, vm_size_t size)
>>  
>>  	size = round_page(size);
>>  	i = (raddr - arm_nocache_startaddr) / (PAGE_SIZE);
>> -	for (; size > 0; size -= PAGE_SIZE, i++)
>> +	for (; size > 0; size -= PAGE_SIZE, i++) {
>>  		arm_nocache_allocated[i / BITS_PER_INT] &= ~(1 << (i % 
>>  		    BITS_PER_INT));
>> +		pmap_kremove(raddr);
>> +		raddr += PAGE_SIZE;
>> +	}
>>  }
>>  
>>  #ifdef ARM_USE_SMALL_ALLOC


-- 
Alexandr Rybalko <ray at dlink.ua>


More information about the freebsd-arm mailing list