diff options
author | Pawel Jakub Dawidek <[email protected]> | 2012-05-29 10:50:50 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2012-06-14 09:49:04 -0700 |
commit | 0cee24064a79f9c01fc4521543c37acea538405f (patch) | |
tree | cc7429b7bc14f057aade9bea66a72a39e6a5a23c /include/sys | |
parent | 74497b7ab6af69434453e03c755d3f6e6e655aee (diff) |
Speed up 'zfs list -t snapshot -o name -s name'
FreeBSD #xxx: Dramatically optimize listing snapshots when user
requests only snapshot names and wants to sort them by name, ie.
when executes:
# 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:
# time zfs list -t snapshot -o name -s name > /dev/null
cold cache: 525s
warm cache: 218s
after:
# time zfs list -t snapshot -o name -s name > /dev/null
cold cache: 1.7s
warm cache: 1.1s
NOTE: This patch only appears in FreeBSD. If/when Illumos picks up
the change we may want to drop this patch and adopt their version.
However, for now this addresses a real issue.
Ported-by: Brian Behlendorf <[email protected]>
Issue #450
Diffstat (limited to 'include/sys')
-rw-r--r-- | include/sys/zfs_ioctl.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/include/sys/zfs_ioctl.h b/include/sys/zfs_ioctl.h index e3fd2c3fc..4e5c5fba2 100644 --- a/include/sys/zfs_ioctl.h +++ b/include/sys/zfs_ioctl.h @@ -286,7 +286,8 @@ typedef struct zfs_cmd { boolean_t zc_temphold; uint64_t zc_action_handle; int zc_cleanup_fd; - uint8_t zc_pad[4]; /* alignment */ + uint8_t zc_simple; + uint8_t zc_pad[3]; /* alignment */ uint64_t zc_sendobj; uint64_t zc_fromobj; uint64_t zc_createtxg; |