aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2023-10-26 14:02:58 -0700
committerColin Cross <ccross@android.com>2023-10-31 20:24:35 +0000
commit098c09334fefc9e061d061ec5cb491b4bbc83a4f (patch)
tree25f74702449fdacdadd6c7702ff874e550c26831
parent0065131f509861c317111a6e59adfb18f503b9d9 (diff)
downloadblueprint-098c09334fefc9e061d061ec5cb491b4bbc83a4f.tar.gz
Remove unnecessary locking in fs
osFs.acquire and osFs.release are surprisingly expensive, using a combined 345.7s of runtime in an AOSP aosp_cf_x86_64_phone-userdebug build. They are used to ensure we don't use too many simultaneous open files, but many of the functions they are called from don't actually open a file. Remove them from all the stat-based functions (Exists, IsDir, IsSymlink, Lstat, Stat), and from ReadLink. After this change the time spent in acquire and release is effectively zero. Test: SOONG_PROFILE_CPU=/tmp/cpu.pprof m nothing Change-Id: Ie5e22e33c61794354821f05ab79ceb4efc3b276c
-rw-r--r--pathtools/fs.go12
1 files changed, 0 insertions, 12 deletions
diff --git a/pathtools/fs.go b/pathtools/fs.go
index b959289..25e295f 100644
--- a/pathtools/fs.go
+++ b/pathtools/fs.go
@@ -204,8 +204,6 @@ func (fs *osFs) Open(name string) (ReaderAtSeekerCloser, error) {
}
func (fs *osFs) Exists(name string) (bool, bool, error) {
- fs.acquire()
- defer fs.release()
stat, err := os.Stat(fs.toAbs(name))
if err == nil {
return true, stat.IsDir(), nil
@@ -217,8 +215,6 @@ func (fs *osFs) Exists(name string) (bool, bool, error) {
}
func (fs *osFs) IsDir(name string) (bool, error) {
- fs.acquire()
- defer fs.release()
info, err := os.Stat(fs.toAbs(name))
if err != nil {
return false, err
@@ -227,8 +223,6 @@ func (fs *osFs) IsDir(name string) (bool, error) {
}
func (fs *osFs) IsSymlink(name string) (bool, error) {
- fs.acquire()
- defer fs.release()
if info, err := os.Lstat(fs.toAbs(name)); err != nil {
return false, err
} else {
@@ -249,14 +243,10 @@ func (fs *osFs) glob(pattern string) ([]string, error) {
}
func (fs *osFs) Lstat(path string) (stats os.FileInfo, err error) {
- fs.acquire()
- defer fs.release()
return os.Lstat(fs.toAbs(path))
}
func (fs *osFs) Stat(path string) (stats os.FileInfo, err error) {
- fs.acquire()
- defer fs.release()
return os.Stat(fs.toAbs(path))
}
@@ -284,8 +274,6 @@ func (fs *osFs) ReadDirNames(name string) ([]string, error) {
}
func (fs *osFs) Readlink(name string) (string, error) {
- fs.acquire()
- defer fs.release()
return os.Readlink(fs.toAbs(name))
}