zfs/cmd
наб 0a51083e39 zed: implement close_from() in terms of /proc/self/fd, if available
/dev/fd on Darwin

Consider the following strace output:
  prlimit64(0, RLIMIT_NOFILE, NULL, {rlim_cur=1024, rlim_max=1024*1024}) = 0

Yes, that is well over a million file descriptors!

This reduces the ZED start-up time from "at least a second" to
"instantaneous", and, under strace, from "don't even try" to "usable"
by simple virtue of doing five syscalls instead of over a million;
in most cases the main loop does nothing

Recent Linuxes (5.8+) have close_range(2) for this, but that's an
overoptimisation (and libcs don't have wrappers for it yet)

This is also run by the ZEDLET pre-exec. Compare:
  Finished "all-syslog.sh" eid=13 pid=6717 time=1.027100s exit=0
  Finished "history_event-zfs-list-cacher.sh" eid=13 pid=6718 time=1.046923s exit=0
to
  Finished "all-syslog.sh" eid=12 pid=4834 time=0.001836s exit=0
  Finished "history_event-zfs-list-cacher.sh" eid=12 pid=4835 time=0.001346s exit=0
lol

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
Closes #11834
2021-04-14 13:19:49 -07:00
..
arc_summary arc_summary3: Handle overflowing value width 2020-12-11 10:29:53 -08:00
arcstat FreeBSD: Update usage of py-sysctl 2020-12-10 15:28:31 -08:00
dbufstat dbufstat: Fix warnings with Python 3.8 2020-12-23 15:10:35 -08:00
fsck_zfs fsck.zfs: implement 4/8 exit codes as suggested in manpage 2021-04-07 13:24:18 -07:00
mount_zfs cppcheck: integrete cppcheck 2021-01-26 16:12:26 -08:00
raidz_test Removed duplicated includes 2021-03-22 12:34:58 -07:00
vdev_id vdev_id: Create symlinks even if no /dev/mapper/ 2021-03-08 08:43:30 -08:00
zdb Add zdb -r <dataset> <object-id | file> <output> 2021-01-27 21:36:01 -08:00
zed zed: implement close_from() in terms of /proc/self/fd, if available 2021-04-14 13:19:49 -07:00
zfs Removed duplicated includes 2021-03-22 12:34:58 -07:00
zfs_ids_to_path cppcheck: integrete cppcheck 2021-01-26 16:12:26 -08:00
zgenhostid Fix various typos 2021-04-07 13:27:11 -07:00
zhack cppcheck: integrete cppcheck 2021-01-26 16:12:26 -08:00
zinject cppcheck: integrete cppcheck 2021-01-26 16:12:26 -08:00
zpool libzutil: zfs_isnumber(): return false if input empty 2021-04-07 13:27:42 -07:00
zpool_influxdb cppcheck: integrete cppcheck 2021-01-26 16:12:26 -08:00
zstream Suppress cppcheck invalidSyntax warninigs 2021-03-05 17:56:35 -08:00
zstreamdump Minor `zstream redup` command fixes 2020-04-10 21:10:09 -07:00
ztest Fix various typos 2021-04-07 13:27:11 -07:00
zvol_id cppcheck: integrete cppcheck 2021-01-26 16:12:26 -08:00
zvol_wait Fix various typos 2021-04-07 13:27:11 -07:00
Makefile.am cppcheck: integrete cppcheck 2021-01-26 16:12:26 -08:00