Swapfile on ZFS & Deadlock

Benjamin Close Benjamin.Close at clearchain.com
Sat Jun 16 03:23:55 UTC 2007


Benjamin Close wrote:
> Kris Kennaway wrote:
>> On Fri, Jun 15, 2007 at 11:00:04PM +0930, Benjamin Close wrote:
>>  
>>> Hi All,
>>>    Whilst running out of memory compiling Xorg (scanPCI is a killer) 
>>> I discovered a quick way to deadlock the system:
>>>
>>> dd if=/dev/zero of=somefileonzfs bs=something count=something
>>> mdconfig -a -f something
>>> swapon /dev/md0
>>>
>>> Then do something that needs swap.. instant deadlock. The system is 
>>> still responsive but all disk access become hung.
>>>
>>> Known issue? If so is there a way we can warn users/prevent users 
>>> from doing it?
>>>     
>>
>> Enable DEBUG_VFS_LOCKS and DEBUG_LOCKS, then break to DDB when the
>> deadlock occurs and do 'show lockedvnods'.
>>   
> Ok, enabled the above and this time got:
>
> swap_pager: indefinite wait buffer: bufobj: 0, blkno: 312865, size: 16384
>
> just before the deadlock:
>
> Show locked vnods returns (hand transcribed)
>
> 0xffffff002c3ab5d0: tagz zfs, type VREG
>    usecout 1, writecount 1, refcount 2 mountedhere 0
>    flags()
>    v_object 0xffffff002f047c80 ref 0 pages 0
>       lock type zfs: EXCL (count 1) by thread 0xffffff0030573360 (pid 
> 1188)
>
> Pid 1188 is:
>
> 1188   0   0   0   SL   zfs:(&zi   0xffffff000208fd58   [md0]
>
> called doadump and though it went through the motions, savecore didn't 
> find anything saved.
> Not sure what you need debugging wise, let me know.
>
> System is Intel Core 2 duo, running in SMP amd64, updated Friday 15th 
> June.
> The box has 1G physical ram, 1G dedicated swap partition, but needs an 
> extra 300M to compile xf86ScanPCI.c (freaky!).
> Figured a temp solution would be to allocate a 500M swap file on /var 
> which is zfs.
Forgot to mention, this happens regardless of the state of  
vfs.zfs.prefetch_disable and there was ~200M swap free (in the swapfile, 
none in the partition) when it deadlocked.

Cheers,
    Benjamin


More information about the freebsd-current mailing list