[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