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