Whamcloud - gitweb
LU-5041 osd-zfs: Prefetch dnodes 95/10395/2
authorBrian Behlendorf <behlendorf1@llnl.gov>
Tue, 20 May 2014 23:07:48 +0000 (16:07 -0700)
committerOleg Drokin <oleg.drokin@intel.com>
Fri, 30 May 2014 04:19:57 +0000 (04:19 +0000)
After a successful FID lookup prefetch the referenced dnode.  There's
every reason to believe the dnode will be immediately useful.  This
will not result in a spill block also being prefetched for that we
need the block pointer from the dnode.  However, once large dnodes
are supported spill blocks should be rarely needed.

Change-Id: I41c0d08249f5d852137a08e2f3b262fb664a15ea
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-on: http://review.whamcloud.com/10395
Tested-by: Jenkins
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: Alex Zhuravlev <alexey.zhuravlev@intel.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
lustre/osd-zfs/osd_oi.c

index 4acbd0d..99bf185 100644 (file)
@@ -487,6 +487,9 @@ int osd_fid_lookup(const struct lu_env *env, struct osd_device *dev,
                *oid = info->oti_zde.lzd_reg.zde_dnode;
        }
 
                *oid = info->oti_zde.lzd_reg.zde_dnode;
        }
 
+       if (rc == 0)
+               dmu_prefetch(dev->od_objset.os, *oid, 0, 0);
+
        RETURN(rc);
 }
 
        RETURN(rc);
 }