aboutsummaryrefslogtreecommitdiff
path: root/lib/libzfs/common/libzfs.h
diff options
context:
space:
mode:
authorAndriy Gapon <avg@FreeBSD.org>2016-07-12 11:21:41 +0000
committerAndriy Gapon <avg@FreeBSD.org>2016-07-12 11:21:41 +0000
commit73f0e3e3e5bf50ab161707218cba4778007b018e (patch)
tree08ae37b9f6320c5afe1891d8866f08aab5ec70d2 /lib/libzfs/common/libzfs.h
parent21bdd8ff9fb632dc918f7fc5c10d4bf4f7417460 (diff)
downloadsrc-73f0e3e3e5bf50ab161707218cba4778007b018e.tar.gz
src-73f0e3e3e5bf50ab161707218cba4778007b018e.zip
6902 speed up listing of snapshots if requesting name only and sorting by name
illumos/illumos-gate@0d8fa8f8eba3ea46bc79d73445009505d1dd5d7d https://github.com/illumos/illumos-gate/commit/0d8fa8f8eba3ea46bc79d73445009505d1dd5d7d https://www.illumos.org/issues/6902 pjd has authored and commited a patch in Jan 21, 2012 that substanially speeds up zfs snapshot listing if requesting only the name property and sorting by name. In this special case, the snapshot properties do not need to be loaded. This code has been adopted by zfsonlinux on May 29, 2012. Commit message from pjd: Dramatically optimize listing snapshots when user requests only snapshot names and wants to sort them by name, ie. when executes: 1. zfs list -t snapshot -o name -s name Because only name is needed we don't have to read all snapshot properties. Below you can find how long does it take to list 34509 snapshots from a single disk pool before and after this change with cold and warm cache: before: 1. time zfs list -t snapshot -o name -s name > /dev/null cold cache: 525s warm cache: 218s after: 1. time zfs list -t snapshot -o name -s name > /dev/null cold cache: 1.7s warm cache: 1.1s References: http://svnweb.freebsd.org/base?view=revision&revision=230438 https://github.com/freebsd/freebsd/commit/8e3e9863 https://github.com/zfsonlinux/zfs/commit/0cee2406 Reviewed by: Matthew Ahrens <mahrens@delphix.com> Reviewed by: Pawel Dawidek <pjd@freebsd.org> Reviewed by: Brian Behlendorf <behlendorf1@llnl.gov> Approved by: Garrett D'Amore <garrett@damore.org> Author: Martin Matuska <martin@matuska.org>
Notes
Notes: svn path=/vendor-sys/illumos/dist/; revision=302643
Diffstat (limited to 'lib/libzfs/common/libzfs.h')
-rw-r--r--lib/libzfs/common/libzfs.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/libzfs/common/libzfs.h b/lib/libzfs/common/libzfs.h
index 3cbfe35d5287..75ac241382f9 100644
--- a/lib/libzfs/common/libzfs.h
+++ b/lib/libzfs/common/libzfs.h
@@ -21,6 +21,7 @@
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011 Pawel Jakub Dawidek. All rights reserved.
* Copyright (c) 2011, 2015 by Delphix. All rights reserved.
* Copyright (c) 2012, Joyent, Inc. All rights reserved.
* Copyright (c) 2013 Steven Hartland. All rights reserved.
@@ -534,7 +535,7 @@ extern int zfs_iter_root(libzfs_handle_t *, zfs_iter_f, void *);
extern int zfs_iter_children(zfs_handle_t *, zfs_iter_f, void *);
extern int zfs_iter_dependents(zfs_handle_t *, boolean_t, zfs_iter_f, void *);
extern int zfs_iter_filesystems(zfs_handle_t *, zfs_iter_f, void *);
-extern int zfs_iter_snapshots(zfs_handle_t *, zfs_iter_f, void *);
+extern int zfs_iter_snapshots(zfs_handle_t *, boolean_t, zfs_iter_f, void *);
extern int zfs_iter_snapshots_sorted(zfs_handle_t *, zfs_iter_f, void *);
extern int zfs_iter_snapspec(zfs_handle_t *, const char *, zfs_iter_f, void *);
extern int zfs_iter_bookmarks(zfs_handle_t *, zfs_iter_f, void *);