Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 13 May 2008 10:56:11 +0300
From:      Andriy Gapon <avg@icyb.net.ua>
To:        freebsd-geom@freebsd.org, freebsd-fs@freebsd.org
Subject:   handling of EGAIN from softdep_check_suspend (gjournal)
Message-ID:  <4829499B.6080007@icyb.net.ua>

next in thread | raw e-mail | index | archive | help

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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4829499B.6080007>