handling of EGAIN from softdep_check_suspend (gjournal)

Andriy Gapon avg at icyb.net.ua
Tue May 13 07:56:21 UTC 2008


As being reported from time to time, sometimes there is a following 
error message produced by gjournal activity:
kernel: fsync: giving up on dirty
kernel: 0xc32b8bb0: tag devfs, type VCHR
kernel: usecount 1, writecount 0, refcount 50 mountedhere 0xc323d200
kernel: flags ()
kernel: v_object 0xc10499b0 ref 0 pages 451
kernel: lock type devfs: EXCL (count 1) by thread 0xc3208000 (pid 39)
kernel: dev ad4s1e.journal
kernel: GEOM_JOURNAL: Cannot suspend file system /export (error=35).

errno 35 is EAGAIN/EWOULDBLOCK and it is returned from vfs_write_suspend 
on FFS.
The only place where this return code is present in the whole FFS/UFS 
code is softdep_check_suspend.
Comment in the function says the following (for non-softupdates case):
/*
  * Reasons for needing more work before suspend:
  * - Dirty buffers on devvp.
  * - Secondary writes occurred after start of vnode sync loop
  */

I wonder what is recommended handling of this return code?
Maybe we should try 'AGAIN' instead of just giving up immediately?

-- 
Andriy Gapon


More information about the freebsd-fs mailing list