Development of userspace BTRFS tools
Find a file
Anand Jain 2f55fd7019 btrfs-progs: optimize btrfs_scan_lblkid() for multiple calls
btrfs_scan_lblikd() is called by most the device related command functions.
And btrfs_scan_lblkid() is most expensive function and it becomes more expensive
as number of devices in the system increase. Further some threads call this
function more than once for absolutely no extra benefit and the real waste of
resources. Below list of threads and number of times btrfs_scan_lblkid()
is called in that thread.

  btrfs-find-root            1
  btrfs rescue super-recover 2
  btrfs-debug-tree           1
  btrfs-image -r             2
  btrfs check                2
  btrfs restore              2
  calc-size                  NC
  btrfs-corrupt-block        NC
  btrfs-image                NC
  btrfs-map-logical          1
  btrfs-select-super         NC
  btrfstune                  2
  btrfs-zero-log             NC
  tester                     NC
  quick-test.c               NC
  btrfs-convert              0
  mkfs                       #number of devices to be mkfs
  btrfs label set unmounted  2
  btrfs get label unmounted  2

This patch will:
  move out calling register_one_device with in btrfs_scan_lblkid()
  and so function setting the BTRFS_UPDATE_KERNEL to yes will
  call btrfs_register_all_devices() separately.

  introduce a global variable scan_done, which is set when scan is
  done succssfully per thread. So that following calls to this function
  will just return success.

  Further if any function needs to force scan after scan_done is set,
  then it can be done when there is such a requirement, but as of now there
  isn't any such requirement.

Signed-off-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
2014-11-03 19:17:11 +01:00
Documentation btrfs-progs: Fix the argument requirement for '--subvol-extents' 2014-11-03 18:35:31 +01:00
tests btrfs-progs: run fsck image tests in filename order 2014-10-17 18:34:16 +02:00
.gitignore btrfs-progs: Introduce asciidoc based man page and btrfs man page. 2014-04-22 14:15:19 +02:00
backref.c Btrfs-progs: pull back backref.c and fix it up 2014-10-14 10:39:38 +02:00
backref.h Btrfs-progs: pull back backref.c and fix it up 2014-10-14 10:39:38 +02:00
bcp Btrfs-progs: Correct path munging in bcp 2011-10-25 09:18:58 -04:00
bitops.h Btrfs-progs: add a free space cache checker to fsck V2 2013-04-23 18:56:21 +02:00
btrfs-calc-size.c btrfs-progs: use check_argc_* to check arg number for all tools 2014-08-22 15:07:02 +02:00
btrfs-convert.c btrfs-progs: convert: set label or copy from origin 2014-10-10 19:06:57 +02:00
btrfs-corrupt-block.c btrfs-progs: add shift_items to btrfs-corrupt-block 2014-10-14 11:01:35 +02:00
btrfs-crc.c btrfs-progs: use check_argc_* to check arg number for all tools 2014-08-22 15:07:02 +02:00
btrfs-debug-tree.c btrfs-progs: use check_argc_* to check arg number for all tools 2014-08-22 15:07:02 +02:00
btrfs-find-root.c btrfs-progs: introduce a proper structure on which cli will call register-device ioctl 2014-10-16 12:02:00 +02:00
btrfs-fragments.c btrfs-progs: use check_argc_* to check arg number for all tools 2014-08-22 15:07:02 +02:00
btrfs-image.c btrfs-progs: add mount status check for btrfs-image 2014-08-22 15:07:03 +02:00
btrfs-list.c Btrfs-progs: break out rbtree util functions 2014-10-14 10:39:39 +02:00
btrfs-list.h btrfs-progs: Add -R to list UUIDs of original received subvolume 2014-09-14 13:09:52 +02:00
btrfs-map-logical.c btrfs-progs: check read extent errors when mapping 2014-11-03 18:35:30 +01:00
btrfs-select-super.c btrfs-progs: use check_argc_* to check arg number for all tools 2014-08-22 15:07:02 +02:00
btrfs-show-super.c btrfs-progs: fix show super unknown flag output 2014-10-16 13:38:35 +02:00
btrfs-zero-log.c btrfs-progs: use check_argc_* to check arg number for all tools 2014-08-22 15:07:02 +02:00
btrfs.c btrfs-progs: move the check_argc_* functions into utils.c 2014-08-22 14:55:27 +02:00
btrfsck.h btrfs-progs: Copyright string update 2014-03-21 06:23:24 -07:00
btrfstune.c btrfs-progs: add ask_user confirmation for btrfstune clear seeding flag 2014-08-22 16:09:55 +02:00
chunk-recover.c btrfs-progs: introduce a proper structure on which cli will call register-device ioctl 2014-10-16 12:02:00 +02:00
cmds-balance.c btrfs-progs: balance filter: add limit of processed chunks 2014-08-22 14:55:26 +02:00
cmds-check.c btrfs-progs: Fix the argument requirement for '--subvol-extents' 2014-11-03 18:35:31 +01:00
cmds-device.c btrfs-progs: optimize btrfs_scan_lblkid() for multiple calls 2014-11-03 19:17:11 +01:00
cmds-filesystem.c btrfs-progs: optimize btrfs_scan_lblkid() for multiple calls 2014-11-03 19:17:11 +01:00
cmds-inspect.c Btrfs-progs: fix some build warnings on 32bit platform 2014-08-22 15:07:03 +02:00
cmds-property.c btrfs-progs: remove unnecessary return value check in btrfs-property 2014-08-22 15:07:03 +02:00
cmds-qgroup.c btrfs-progs: qgroup destroy says create failed 2014-01-31 08:22:12 -08:00
cmds-quota.c Btrfs-progs: fix magic return value in cmds-quota.c 2013-10-16 08:20:41 -04:00
cmds-receive.c btrfs-progs: add missing descriptions of '--max-errors' in btrfs-receive documentation 2014-08-22 15:07:04 +02:00
cmds-replace.c btrfs-progs: only report internal dev replace result if there's a result 2014-11-03 18:35:30 +01:00
cmds-rescue.c btrfs-progs: use check_argc_exact to check arg number of btrfs-rescue 2014-08-22 14:39:31 +02:00
cmds-restore.c btrfs-progs: remove wrong set_argv0 for restore 2014-09-14 19:06:12 +02:00
cmds-scrub.c btrfs-progs: scrub, detect stale information in the status file 2014-10-10 10:38:36 +02:00
cmds-send.c btrfs-progs: Check fstype in find_mount_root() 2014-08-22 15:07:02 +02:00
cmds-subvolume.c btrfs-progs: wait until all subvolumes are cleaned 2014-10-10 09:32:05 +02:00
commands.h btrfs-progs: move the check_argc_* functions into utils.c 2014-08-22 14:55:27 +02:00
COPYING
crc32c.c btrfs-progs: make many private symbols static 2013-09-03 19:41:08 +02:00
crc32c.h btrfs-progs: libify some parts of btrfs-progs 2013-02-27 15:24:25 +01:00
ctree.c Btrfs-progs: pull back backref.c and fix it up 2014-10-14 10:39:38 +02:00
ctree.h Btrfs-progs: delete bogus dir indexes 2014-10-14 10:45:03 +02:00
dir-item.c Btrfs-progs: delete bogus dir indexes 2014-10-14 10:45:03 +02:00
dir-test.c Btrfs-progs: fix magic return value in dir-test.c 2013-10-16 08:20:42 -04:00
disk-io.c btrfs-progs: optimize btrfs_scan_lblkid() for multiple calls 2014-11-03 19:17:11 +01:00
disk-io.h btrfs-progs: introduce a proper structure on which cli will call register-device ioctl 2014-10-16 12:02:00 +02:00
extent-cache.c Btrfs-progs: break out rbtree util functions 2014-10-14 10:39:39 +02:00
extent-cache.h Btrfs-progs: extend the extent cache for the device extent 2013-07-03 14:06:54 -04:00
extent-tree.c Btrfs-progs: check, ability to detect and fix outdated snapshot root items 2014-10-17 18:24:54 +02:00
extent_io.c btrfs-progs: check read extent errors when mapping 2014-11-03 18:35:30 +01:00
extent_io.h Btrfs-progs: pull back backref.c and fix it up 2014-10-14 10:39:38 +02:00
file-item.c btrfs-progs: remove btrfs_release_path before btrfs_free_path 2014-09-14 19:06:12 +02:00
free-space-cache.c btrfs-progs: make free space checker work on non-4k sectorsize filesystems 2014-10-10 10:38:31 +02:00
free-space-cache.h btrfs-progs: make free space checker work on non-4k sectorsize filesystems 2014-10-10 10:38:31 +02:00
fsck.btrfs btrfs-progs: add fsck.btrfs stub and manpage 2014-01-31 08:22:13 -08:00
hash.h Switch btrfs_name_hash() to crc32c 2008-08-20 20:11:23 -04:00
hasher.c
help.c btrfs-progs: move the check_argc_* functions into utils.c 2014-08-22 14:55:27 +02:00
inode-item.c btrfs-progs: mark static & remove unused from shared kernel code 2013-09-03 19:40:53 +02:00
inode-map.c btrfs-progs: remove btrfs_release_path before btrfs_free_path 2014-09-14 19:06:12 +02:00
INSTALL btrfs-progs: Add information about libblkid requirement to INSTALL file 2014-08-22 14:39:31 +02:00
ioctl-test.c btrfs-progs: mark static & remove unused from non-kernel code 2013-09-03 19:40:54 +02:00
ioctl.h btrfs-progs: only report internal dev replace result if there's a result 2014-11-03 18:35:30 +01:00
kerncompat.h Btrfs-progs: update rbtree libs 2014-10-14 10:39:40 +02:00
list.h Btrfs-progs: introduce list_{first, next}_entry/list_splice_tail{_init} 2013-07-03 14:06:55 -04:00
list_sort.c btrfs-progs: add list_sort and use it to sort devices by id 2013-10-16 08:22:26 -04:00
list_sort.h btrfs-progs: add list_sort and use it to sort devices by id 2013-10-16 08:22:26 -04:00
Makefile btrfs-progs: fix linking with libbtrfs 2014-11-03 18:42:34 +01:00
math.h btrfs-progs: Copyright string update 2014-03-21 06:23:24 -07:00
mkfs.c btrfs-progs: mkfs should be consistent in calling register device 2014-10-16 12:02:00 +02:00
print-tree.c btrfs-progs: debug: print more info about inode 2014-10-10 18:15:28 +02:00
print-tree.h btrfs-progs: add quota group verify code 2014-08-22 14:39:33 +02:00
props.c Btrfs-progs: set string end sing '\0' for property 2014-05-02 17:05:37 +02:00
props.h Btrfs-progs: introduce btrfs property subgroup 2014-01-31 08:22:31 -08:00
qgroup-verify.c Btrfs-progs: break out rbtree util functions 2014-10-14 10:39:39 +02:00
qgroup-verify.h btrfs-progs: show extent state for a subvolume 2014-08-22 15:04:16 +02:00
qgroup.c btrfs-progs: print qgroup excl as unsigned 2014-08-22 14:39:32 +02:00
qgroup.h Btrfs-progs: enhance btrfs qgroup show to sort qgroups 2013-10-16 08:23:12 -04:00
quick-test.c Btrfs-progs: rework open_ctree to take flags, add a new one V2 2013-11-07 16:10:40 -05:00
radix-tree.c btrfs-progs: Fix undefined behavior in radix-tree.c. 2014-08-22 14:39:34 +02:00
radix-tree.h btrfs-progs: libify some parts of btrfs-progs 2013-02-27 15:24:25 +01:00
raid6.c btrfs-progs: give raid6.c its exported prototypes 2013-09-03 19:41:11 +02:00
random-test.c Btrfs-progs: fix magic return value in random-test.c 2013-10-16 08:20:42 -04:00
rbtree-utils.c Btrfs-progs: break out rbtree util functions 2014-10-14 10:39:39 +02:00
rbtree-utils.h Btrfs-progs: break out rbtree util functions 2014-10-14 10:39:39 +02:00
rbtree.c Btrfs-progs: update rbtree libs 2014-10-14 10:39:40 +02:00
rbtree.h Btrfs-progs: update rbtree libs 2014-10-14 10:39:40 +02:00
rbtree_augmented.h Btrfs-progs: update rbtree libs 2014-10-14 10:39:40 +02:00
repair.c Btrfs-progs: introduce common insert/search/delete functions for rb-tree 2013-07-03 14:06:54 -04:00
repair.h Btrfsck: add the ability to prune corrupt extent allocation tree blocks 2012-02-21 14:37:21 -05:00
root-tree.c Btrfs-progs: free path if we don't find root item 2014-03-21 06:23:32 -07:00
send-stream.c btrfs-progs: fix unaligned loads in receive 2014-08-22 16:09:55 +02:00
send-stream.h btrfs-progs: library version defines 2014-09-02 17:04:15 +02:00
send-test.c Btrfs-progs: remove unsed pthread attribute objects 2014-04-22 14:33:35 +02:00
send-utils.c btrfs-progs: Init root_item to avoid gcc 4.8.2 warning 2014-03-21 06:23:29 -07:00
send-utils.h btrfs-progs: enclose uuid tree compat code with ifdefs 2014-03-21 06:23:07 -07:00
send.h btrfs-progs: make libbtrfs usable from C++ 2013-02-19 11:15:30 +01:00
show-blocks Fix showblocks to display different colors for different metadata roots 2009-03-09 13:00:44 -04:00
super-recover.c btrfs-progs: introduce a proper structure on which cli will call register-device ioctl 2014-10-16 12:02:00 +02:00
transaction.h btrfs-progs: add malloc check in transaction.h/btrfs_start_transaction 2013-01-18 18:27:21 +01:00
ulist.c btrfs-progs: import ulist 2014-08-22 14:39:33 +02:00
ulist.h Btrfs-progs: pull back backref.c and fix it up 2014-10-14 10:39:38 +02:00
utils-lib.c btrfs-progs: move arg_strtou64 to a separate file for library 2014-05-02 17:04:28 +02:00
utils.c btrfs-progs: optimize btrfs_scan_lblkid() for multiple calls 2014-11-03 19:17:11 +01:00
utils.h btrfs-progs: optimize btrfs_scan_lblkid() for multiple calls 2014-11-03 19:17:11 +01:00
uuid-tree.c btrfs-progs: fix in-place byte swapping 2013-09-03 19:41:06 +02:00
version.sh Btrfs progs v3.17 2014-10-17 18:43:33 +02:00
volumes.c btrfs-progs: fix device missing of btrfs fi show with seed devices 2014-10-10 10:52:41 +02:00
volumes.h btrfs-progs: fix device missing of btrfs fi show with seed devices 2014-10-10 10:52:41 +02:00