[zfs-code] ZIL FOID

Neil Perrin
Sun, 25 Jan 2009 22:29:03 -0000

On 01/23/09 16:42, Ben Rockwood wrote:
> I need some clarification on the FOID handed to zil_commit.  I wrote a
dscript to watch entry
> and return of zil_commit_writer.  Here is an example output:
>
> 2009 Jan 23 23:34:36:   ZIL Commit : Seq 183211310 : FOID 129644
Completed in 0 ms
> 2009 Jan 23 23:34:36:   ZIL Commit : Seq 183211324 : FOID 129644
Completed in 0 ms
> 2009 Jan 23 23:34:36:   ZIL Commit : Seq 183211386 : FOID 129644
Completed in 0 ms
> 2009 Jan 23 23:34:36:   ZIL Commit : Seq 183211388 : FOID 129644
Completed in 0 ms
> 2009 Jan 23 23:34:36:   ZIL Commit : Seq 183211390 : FOID 129644
Completed in 0 ms
> 2009 Jan 23 23:34:36:   ZIL Commit : Seq 183211361 : FOID 129644
Completed in 0 ms
> 2009 Jan 23 23:34:36:   ZIL Commit : Seq 183211344 : FOID 129644
Completed in 0 ms
> 2009 Jan 23 23:34:36:   ZIL Commit : Seq 183211346 : FOID 129644
Completed in 0 ms
> 2009 Jan 23 23:34:36:   ZIL Commit : Seq 183211357 : FOID 129644
Completed in 0 ms
> 2009 Jan 23 23:34:37:   ZIL Commit : Seq 12960665 : FOID 24871   Completed
in 60 ms
> 2009 Jan 23 23:34:37:   ZIL Commit : Seq 183211496 : FOID 129644
Completed in 19 ms
> 2009 Jan 23 23:34:37:   ZIL Commit : Seq 183211483 : FOID 129644
Completed in 15 ms
> 2009 Jan 23 23:34:37:   ZIL Commit : Seq 183211498 : FOID 129644
Completed in 10 ms
> 2009 Jan 23 23:34:37:   ZIL Commit : Seq 183211502 : FOID 129644
Completed in 10 ms
> 2009 Jan 23 23:34:37:   ZIL Commit : Seq 183211405 : FOID 129646
Completed in 171 ms
> 2009 Jan 23 23:34:37:   ZIL Commit : Seq 183211500 : FOID 129644
Completed in 12 ms
> 2009 Jan 23 23:34:37:   ZIL Commit : Seq 183211410 : FOID 129644
Completed in 49 ms
> 2009 Jan 23 23:34:37:   ZIL Commit : Seq 7781413 : FOID 24869    Completed
in 849 ms
>
> For all the calls with the same FOID, does that mean they are ZIL commits
on the same POSIX file?

Yes, except we use 0 for all objects. The only other exception is that zvols
also use
the ZIl but they use a fixed ZVOL_OBJ foid. A foid is just a file object id that
is
a 64 bit number identifying the DMU object.

> I see no easy way to trace these commits back through all the layers to
determine which file it
> is, but just knowing that some file is being hammered on more than another
is something worth knowing.

Right there''s no easy mapping from foid to file. The ZPL layer holds
the foid in its znode_t z_id
field which is the file system side of the vnode, and vnodes usually have the
absolute
filename in v_path.

>
> benr.