Commit Graph

429 Commits

Author SHA1 Message Date
Chad Austin
ac1434cbfe replace off_t file offsets with a new FileOffset type compatible with Windows
Summary:
off_t is not suitable on Windows because it is a 32-bit signed
type. Introduce a new FileOffset type for use in EdenFS.

Reviewed By: kmancini

Differential Revision: D47406784

fbshipit-source-id: 9cc9585b4b118c54a1ca148c2ba7e7ccfb6f278c
2023-07-14 16:23:19 -07:00
Chad Austin
6c8c2ed747 clang-tidy advice
Summary:
clang-tidy had some automated suggestions for our code. Apply the ones
that make sense.

Some of them didn't, like removal of all uses of `volatile`. I
manually reverted those changes.

Reviewed By: genevievehelsel

Differential Revision: D41051052

fbshipit-source-id: 3fe22a91e929d3bb8e6346126c2c7bf9f027eb32
2023-07-13 16:30:55 -07:00
Chad Austin
1ad34b0d2a migrate ObjectFetchContext to ProcessId
Summary:
Now that ProcessId exists, we should use it instead of pid_t in
ObjectFetchContext.

Reviewed By: genevievehelsel

Differential Revision: D42037216

fbshipit-source-id: 34cd89f78be35a15d73b26edc840e917fd642723
2023-07-13 09:43:19 -07:00
Michael Cuevas
0484a46a24 introduce Filter class
Summary:
When implementing Mercurial filtering logic for the FilteredBackingStore, I realized that simply having a FilterCallback function would be insufficient for most filtering implementations.

There's global state that one may want to keep track of, validation logic, and possible caching that can be done by the filter handler.

Therefore, in this diff I'm introducing the Filter class. Each FilteredBackingStore user will implement their own Filter class to define how filtering is done. These custom Filter classes can add things like validation, caching, etc.

The next diff introduces the HgSparseFilter class and tests it.

Reviewed By: genevievehelsel

Differential Revision: D47161201

fbshipit-source-id: 2bf119ad8a2d01274b272f03ffb5b130e030a0ca
2023-07-10 19:33:04 -07:00
Barys Skarabahaty
6cbc51fa1c Add Blake3 support to ObjectStore
Summary: Adding blake3 support to the Object store.

Reviewed By: chadaustin

Differential Revision: D44503947

fbshipit-source-id: 5112856576375a6fc0e697fa022506406844700a
2023-06-05 23:41:35 -07:00
Xavier Deguillard
fdbf7eadfb store: add telemetry for LocalStore operations
Summary:
We've seen a case where a large `hg update` was taking an absurdly long time in
`ObjectStore::getTree` but the telemetry was showing us that most of the time
wasn't spent fetching trees from Mercurial! The suspicion is that most of the
time was spent in the LocalStore but with no evidence to prove it.

Let's thus add some timing telemetry to various LocalStore read requests to
fill this gap.

Reviewed By: mshroyer

Differential Revision: D46154456

fbshipit-source-id: b439ac48889ed3db71db136ff6c1cc91f48c926a
2023-05-25 15:48:11 -07:00
Xavier Deguillard
c88363c998 store: remove BlobMetadata computation/caching when getting blob
Summary:
EdenFS contains several layers of caching for BlobMetadata:
 - In the hgcache,
 - In the in-memory BlobMetadata cache,
 - In the LocalStore (configurable),
 - In the FileInode,
 - In the TreeEntry,

All of the above must be filled prior to reading a blob, therefore computing
the sha1+size when reading a blob is likely not needed and superfluous.

Alternatively, we could move the code to be done in the background in the
LocalStoreCachedBackingStore to avoid blocking reading the blob. Reviewers
opinions are welcome!

Reviewed By: chadaustin

Differential Revision: D45625432

fbshipit-source-id: ad7d897c32cbfd590dce5a3a9c8073349e9b70c8
2023-05-24 10:26:51 -07:00
Xavier Deguillard
2e9cce82d5 store: make BackingStore return shared_ptr instead of unique_ptr
Summary:
In both the ObjectStore and in the hg BackingStore, copies of the unique_ptr
were being made. For large blobs this is particularly inefficient as
potentially several MB (if not more) of data needs to be copied. Let's fix this
by changing the BackingStore API to return a shared_ptr.

In order to make the code easier to read and write, also define 3 types:
TreePtr, BlobPtr and BlobMetadataPtr and use them in the BackingStore code.
Future changes should be done at a later point to convert the whole codebase to
using these.

Reviewed By: chadaustin

Differential Revision: D45967102

fbshipit-source-id: 6086f95456232db48a5cbec47b7cf8b14e4424ed
2023-05-18 12:30:08 -07:00
Chad Austin
c508cc8302 use the same PrivHelper interface on all platforms
Summary:
We already had a pretend PrivHelper on Windows. Remove the stub
methods on Windows and provide a Windows implementation of PrivHelper
where most methods are no-ops but the mounts throw a NOT_IMPLEMENTED
error.

Reviewed By: kmancini

Differential Revision: D45260187

fbshipit-source-id: 87ca8679947372e484c345acdd708a17dbb8235e
2023-05-17 09:07:32 -07:00
Chad Austin
0a45ac1ddd add an InodeBase::getObjectId accessor
Summary:
Add a function to query the (optional) ObjectId from an arbitrary
inode.

Reviewed By: kmancini

Differential Revision: D45673053

fbshipit-source-id: 23630638ba94bbd1925a39193fa125df04abebad
2023-05-16 18:13:53 -07:00
Chad Austin
779cee2f1a privhelper is no longer FUSE-specific, so move it to fs/
Summary:
We use privhelper for NFS too, so move fs/fuse/privhelper into
fs/privhelper.

Reviewed By: kmancini

Differential Revision: D45243273

fbshipit-source-id: cfc93b324768809c87075b0085905e873c7ea88d
2023-05-11 18:29:21 -07:00
Chad Austin
3761c25dad break EdenMount.h's dependency on Nfsd3.h
Summary:
It's unfortunate that changing NFS code causes most of the inode layer
to recompile. One benefit of FsChannel is we can begin to decouple
EdenMount from FUSE, NFS, and PrjFS. Remove the Nfsd3.h include from
EdenMount.h.

Reviewed By: kmancini

Differential Revision: D45167461

fbshipit-source-id: 41650390cbd053233dfe3baf051c592bc203de56
2023-05-11 11:55:24 -07:00
Chad Austin
f6210ace67 remove folly::to support from ObjectId
Summary: We use `fmt` now.

Reviewed By: genevievehelsel

Differential Revision: D45621339

fbshipit-source-id: ea61e2c645af822c12e5a9f53e85e40157746c69
2023-05-09 15:29:04 -07:00
Chad Austin
76e8905821 remove some _WIN32 ifdefs
Reviewed By: genevievehelsel

Differential Revision: D45109938

fbshipit-source-id: 5e9f05f3e8bae04866a685239176bcf66e055f9c
2023-05-03 16:22:11 -07:00
Chad Austin
c9b5036c4c put portmap state into the EventBase
Summary: Replace another Synchronized with EventBaseState.

Reviewed By: xavierd

Differential Revision: D44860277

fbshipit-source-id: b4a2c070c29f1c484314beca483d4d7618cb8bc5
2023-04-24 16:41:38 -07:00
Katie Mancini
098d06bc35 enable NFS detection earlier
Summary:
Now that Windows is going to support NFS. We need a reliable way to check at
runtime if a file should be read from disk (Prjfs) or it should be read from
the overlay (nfs).

We read inodes during fsck which is before the mount is fully initialized, so
we need to be able to detect the mount type earlier than how we do right now.

Here I am moving the NFS detection before eden mount initialization.

While moving this I realized that the InodeMap's view if NFS is incorrect
in the takeover case, so I am also fixing that here.

Reviewed By: chadaustin

Differential Revision: D45020849

fbshipit-source-id: b0a8fd431a37174c81b0d053d92b8bac026bd0f1
2023-04-18 17:50:02 -07:00
Chad Austin
76b5324623 rename EdenMount::startChannel to startFsChannel
Summary:
To disambiguate Thrift channels from filesystem channels, rename
startChannel to startFsChannel.

Reviewed By: xavierd

Differential Revision: D44657273

fbshipit-source-id: 4b43cf6cf0c094ca273f04bbbcfc0486c3b00cf0
2023-04-05 16:27:02 -07:00
Xavier Deguillard
e8c214db57 store: support fetching aux data via ObjectStore
Summary:
Now that the Mercurial backingstore knows how to fetch aux data, let's thread
this through the ObjectStore.

Reviewed By: kmancini

Differential Revision: D44110102

fbshipit-source-id: c57da05066d80fee199e45b4a4223168a196e3de
2023-03-29 15:35:52 -07:00
Chad Austin
e419dd2799 remove the reference-counting overhead from DurationScope
Summary:
DurationScope has a pair of atomic reference count operations at the
beginning and end of every recorded duration. To avoid that overhead,
reference EdenStats with RefPtr and, in production EdenFS, store a
global, unowned EdenStats object.

This gives us the benefits of explicit dependencies and no global
state in tests, while avoiding atomic RMWs in the release build.

Reviewed By: xavierd

Differential Revision: D44323723

fbshipit-source-id: 1b3384d2e6a0a2959fd79774a8ba46afc4c176ca
2023-03-24 13:50:40 -07:00
Chad Austin
5aa50eb024 remove some unnecessary includes from ObjectStore.h
Summary:
ObjectStore.h includes too many headers. Replace several with forward
declarations.

Reviewed By: xavierd

Differential Revision: D44323736

fbshipit-source-id: 944cd72fd758df4363493f87a573d91245a45b6a
2023-03-23 20:04:45 -07:00
Xavier Deguillard
36407b2f7e inodes: add ODS telemetry for the Overlay
Summary:
Our telemetry doesn't capture any data regarding how long Overlay operations
are taking. Since there is a suspicion that checkout is bounded on the Overlay,
let's add these counters to better understand the cost of the Overlay.

Reviewed By: genevievehelsel

Differential Revision: D44118779

fbshipit-source-id: 2e8658c9b0629a0a4f9c6f4535ec876527386b5f
2023-03-17 11:41:26 -07:00
Michael Cuevas
dbdb9adbda refactor: create EdenStats earlier in startup
Summary: We may sometimes want to use EdenStats earlier in startup. For example, in the next diff we can now use EdenStats in the StructuredLoggerFactory

Reviewed By: genevievehelsel

Differential Revision: D43800710

fbshipit-source-id: 4f903bd78e901f3b4a885718b5dc58abce9f53fc
2023-03-07 02:32:19 -08:00
Katie Mancini
633e4cb6b2 expose startup status on thrift server
Summary:
EdenFS is often started in the background. Because of this users can not easily
see the startup status. The only place it is avaiable other than the eden start
command is the logs. Those are hard to find and not really intended to be easy
to read.

Because users don't see EdenFS making progress while it is starting, users
reachout for help in the support group (leading to the oncall having to read out
the logs to them), or they will try to self service and kill EdenFS which land
themselves in a worse state, and lead to start up taking even longer due to
unclean startup or EdenFS corruption (proxy hashes).

In this diff I am exposing a way to subscribe to the status of EdenFS's startup
process. I also introduce the `--verbose` flag on the `status` command that
displays this startup status when EdenFS is running.

Reviewed By: xavierd

Differential Revision: D38962809

fbshipit-source-id: 2a8f03218df33e4fbfd4d0be919d48d9523c85b8
2023-01-27 15:48:56 -08:00
Xavier Deguillard
30adbcc064 service: remove race between mount shutdown and Thrift calls
Summary:
The isSafeForInodeAccess is used to know when the root inode is initialized and
valid, but this is used in racy context. For instance, the getMountPoints
collects all the mounts whose root inode is initialized, but then releases the
lock on the mountPoints_ list, subsequently, the EdenMount's root Inode is
accessed without checking. If the EdenMount is shutdown prior to the root Inode
being copied, the root Inode might be a nullptr, causing a NULL-dereference.

This pattern can be found in all of the Thrift entry points that play with
mounts and thus are all potentially sources of EdenFS crashes. To solve this,
we need to guarantee 2 things:
 - isSafeForInodeAccess must only change state while the mountPoints_ lock is
   held, specifically at shutdown time,
 - The root inode must be copied while the mountPoints_ lock is held.

This diff does both. For the second one in particular EdenServer::getMount is
modified to also return the root Inode. This is done instead of introducing a new
function to prevent future bugs from seeping in that may be missed at review time.

Reviewed By: chadaustin

Differential Revision: D42563083

fbshipit-source-id: c0267277a54c425f330bbd58d1dc86ec3746502d
2023-01-25 13:35:47 -08:00
Chad Austin
5da3dec645 rewrite readdir prefetching logic
Summary:
Bring back readdir prefetching, which was disabled as part of the
edenapi aux metadata rollout, and tighten up its logic to accelerate
specific use cases.

To optimize `find .`, prefetch subtrees when a subtree is stat().

To optimize `find . -empty`, prefetch blob metadata when a file is
stat().

Add a config knob to opt out of blob prefetching, tree prefetching, or
both.

Reviewed By: xavierd

Differential Revision: D41701675

fbshipit-source-id: 29b9c28f0f09cf686e3f256bd8c993e9b466e012
2023-01-04 19:17:36 -08:00
Chad Austin
7a87fcce98 add the ability to use TestMount with different config settings
Summary:
This diff adds the ability to write unit tests against TestMount with
overridden EdenConfig settings.

Reviewed By: kmancini

Differential Revision: D41883877

fbshipit-source-id: ebcaf6e92ede9c411da11679705db53d37ad052f
2023-01-04 19:17:36 -08:00
Chad Austin
c8fe74c932 generalize the list of ConfigSources
Summary:
In preparation for supporting arbitrary ConfigSources, replace the two
hard-coded TOML file sources in EdenConfig with a list.

Reviewed By: kmancini

Differential Revision: D41881820

fbshipit-source-id: 585ceef17e4f23dabefdde61eb92b64c8ff992ee
2023-01-04 19:17:36 -08:00
Chad Austin
fc48ab8614 add a ConfigSource layer of indirection between EdenConfig and the toml files
Summary:
EdenConfig had a bunch of hard-coded logic around stat()ing files and
parsing TOML.

Besides code clarity, this had several problems:
* Using an EdenConfig in a unit test would touch the actual filesystem.
* We didn't support reading configs from other sources. For example,
  we've talked about reading EdenConfig from .hgrc.
* ReloadableConfig knew too much about EdenConfig's internal working.
* Changing configs in tests involves calling setValue(), which is an
  unsafe API in the limit.

This diff introduces a new abstraction called ConfigSource, with one
implementation, TomlFileConfigSource.

ConfigSource can indicate that it's time for a reload, and can apply
its values to a non-const EdenConfig instance.

Reviewed By: kmancini

Differential Revision: D41830417

fbshipit-source-id: a0ff90c4a1adb870e4b34da5d16238a6e7b75be2
2023-01-04 12:53:34 -08:00
Chad Austin
5d3c7e1711 remove unused EdenConfig copy assignment
Summary:
We never copy-assign EdenConfig, and I'd argue we would never intend
to. Since copying EdenConfig is a special and expensive operation,
remove the copy assignment operator.

Reviewed By: kmancini

Differential Revision: D41830340

fbshipit-source-id: f640083f1339e5fa022e4884e3cd2e27bc382e30
2023-01-04 12:53:34 -08:00
Chad Austin
f4d8aba2bf replace ImmediateFuture's default constructor with an in_place constructor
Summary:
For parity with Future and SemiFuture, remove ImmediateFuture's
default constructor and replace it with `makeEmpty()` and a
`std::in_place` constructor overload.

Reviewed By: xavierd

Differential Revision: D41293865

fbshipit-source-id: 43abae81fed3d99a5b4124d8c598dcce921ef65b
2022-12-19 13:11:02 -08:00
Chad Austin
a92cd39d70 rename ConfigSource to ConfigSourceType
Summary:
I'm about to introduce an interface named ConfigSource, which
awkwardly conflicts with this enum. Rename ConfigSource to
ConfigSourceType. I considered ConfigSourceSlot, but slot seems more
of an implementation detail.

Reviewed By: kmancini

Differential Revision: D41830066

fbshipit-source-id: 85a54f4243b14c693087c7555e27b5473e90562e
2022-12-10 05:09:52 -08:00
Chad Austin
59fd47651d move variable substitution into its own type
Summary:
My goal is to make EdenConfig testable. To that end, move calculation
of substitution variables into its own ConfigVariables type.

Reviewed By: kmancini

Differential Revision: D41780224

fbshipit-source-id: 3b59143b42db79c44bbea10121a7e06bb4b833ce
2022-12-08 17:11:17 -08:00
Chad Austin
cee24e0533 remove some dead EdenConfig code
Summary: EdenConfig had some remnants of old cruft. Remove them.

Reviewed By: xavierd

Differential Revision: D41744767

fbshipit-source-id: d5fd50fa599c15ec8b748c323c45ea1e7eb8ddcd
2022-12-08 17:11:17 -08:00
Chad Austin
6b9aaa6120 prepare EdenFS tests for a world without HgImporter
Summary:
EdenFS's tests still fall back on a debugedenimporthelper process to
import trees and blobs. That's because the test repos still use the
deprecated revlog format. Migrate the test repos to use indexedlog
storage so that SaplingNativeBackingStore hits.

Note: This repo configuration is awkward and temporary, and the
Sapling team is planning to migrate to "Eager" repos to support the
`hg init` case in the future.

Reviewed By: quark-zju

Differential Revision: D41447075

fbshipit-source-id: 23c2f13dfc9f964d9386d7f4c920222db8f25144
2022-12-01 15:02:14 -08:00
Chad Austin
76443c9d79 always pass --traceback to hg in C++ tests
Summary:
If an hg command fails in a C++ test, we always want more details
about why.

Reviewed By: xavierd

Differential Revision: D41393550

fbshipit-source-id: 1d0ca29919e0be8253a82938ca04a85cf149d42d
2022-11-30 17:39:54 -08:00
Chad Austin
5787485710 standardize HgRepo creation across C++ tests
Summary:
EdenFS's C++ unit tests unnecessarily differed in how they initialized
test repositories. Move
scmstore/treemanifest/remotefilelog/etc. configuration into hgInit so
it's the same everywhere.

Reviewed By: genevievehelsel

Differential Revision: D41364290

fbshipit-source-id: 24f882766bf00c6546663e0712b6029153a4a699
2022-11-30 17:39:54 -08:00
Chad Austin
9bb08e464d enable filestore and treestore in edenfs unit tests
Summary:
scmstore.backingstore = true has been rolled out everywhere since
January. Also enable it in EdenFS unit tests.

Reviewed By: xavierd

Differential Revision: D40968994

fbshipit-source-id: ae55fa908bdbd287177f0f485efa457c595bc4d0
2022-11-17 19:56:38 -08:00
Chad Austin
a1bc268963 port Path and PathPiece from folly::StringPiece to std::string_view
Summary:
std::string_view has noexcept accessors and folly::Range doesn't, so
this allows us to make Path and PathPiece noexcept.

Reviewed By: kmancini

Differential Revision: D41145426

fbshipit-source-id: 046f6f6a532d8d0da8508ccf7896c914e19a25ec
2022-11-16 18:09:51 -08:00
Chad Austin
acb2e230b5 don't check edenapi config setting and hardcode edenapi on
Summary:
We no longer need a kill switch on edenapi fetches. Stop accessing the
config and always configure backing stores with edenapi on.

Reviewed By: genevievehelsel

Differential Revision: D40909096

fbshipit-source-id: fbdb01fc74add870b95d0bcc46be6b4bf9323898
2022-11-15 16:23:30 -08:00
Chad Austin
27696c95a3 remove the default implementation of getLocalBlobMetadata
Summary:
Default implementations are convenient in the short term but
getLocalBlobMetadata is core part of the BackingStore API. Therefore,
whether a BackingStore implements it should be an explicit decision.

Reviewed By: kmancini

Differential Revision: D40456066

fbshipit-source-id: 1da1ec706fe78693968d46ff672b9c9bd8ea5e8b
2022-11-15 16:23:30 -08:00
Chad Austin
870ffb721a format path types with fmt instead of folly/Conv
Summary:
For compile times, runtime performance, and compile-time checking,
we're standardizing on fmt over folly/Conv.

Reviewed By: kmancini

Differential Revision: D41105228

fbshipit-source-id: d6fddf93670bbd64d8dfd61921fcc319ea368d2c
2022-11-15 15:40:33 -08:00
Chad Austin
6f60c48ea8 decouple ObjectFetchContext lifetime from RequestContext
Summary:
Requiring that callers ensure that ObjectFetchContext outlives the
asynchronous result is a burden and a memory-safety risk. Without
Rust's borrow checker, we can't feel confident this is safe under all
error and timeout conditions. It also requires we use
folly::collectAll and collectAllSafe, which means that an error during
fanout has to wait until the fanout completes before we can report the
error to our caller.

Moreover, tying the ObjectFetchContext's lifetime to the
FUSE/NFS/Thrift/etc. request's lifetime gives us incorrect statistics
about how long the request takes. I consider this an API design
mistake (on my part).

Correct the situation by decoupling ObjectFetchContext from
RequestContext, and begin reference-counting ObjectFetchContext.

This does increase the number of atomic RMW operations, but we can
alleviate those where they matter by manually checking
*Future::isReady() before calling .then*.

Reviewed By: xavierd

Differential Revision: D40744706

fbshipit-source-id: 5baf654f6d65790ed0cafb45c0bc7f2aaa8ecec2
2022-11-15 13:35:45 -08:00
Chad Austin
6d3664ee86 introduce an asString() on Path and PathPiece
Summary:
At API boundaries, it's common to want to convert a Path or PathPiece
to std::string. Previously, code would call
`.stringPiece().str()`. Add an `asString()` to make this explicit.

Reviewed By: xavierd

Differential Revision: D41140757

fbshipit-source-id: 72003dc9a353cdfa4632a7d1ab433122211186e0
2022-11-11 18:46:15 -08:00
Xavier Deguillard
f199e93924 utils: AbsolutePath are always UNC on Windows
Summary:
On Windows, absolute paths are of multiple shape, with all of them having pros
and cons. In particular, device paths (C:/) that EdenFS is using is limited to
260 characters. To bypass this limitation, UNC paths (\\?\) can be used, but no
normalization is done automatically, specifically '/' aren't converted to '\'.

Since UNC paths allow us to support long paths, and would also bring more
safety to EdenFS by enforcing that all AbsolutePath are of the UNC form, let's
use them.

One of the other downside of UNC is that applications may not support them or
may misbehave when passed to them. For this reason, EdenFS doesn't expose UNC
paths in its Thrift API, changing the path to a device path, applications
relying on Thrift are expected to re-UNC them.

Reviewed By: chadaustin

Differential Revision: D40818724

fbshipit-source-id: 260b8732df04bbffee6b2fe52f0ceda222d3941b
2022-11-08 08:49:16 -08:00
Genevieve (Genna) Helsel
4857402d1c rename TreeOverlayType to InodeCatalogType
Summary: This changes follows the last, changing `TreeOverlay` -> `InodeCatalog`. Its in a separate change just for readability purposes

Reviewed By: chadaustin

Differential Revision: D40518302

fbshipit-source-id: 8c1ed08e413d5e421a9dcd0b83600855573a699a
2022-10-31 12:16:16 -07:00
Genevieve (Genna) Helsel
6a1c55b596 split hasOverlayData into File/Dir methods
Summary: To facilitate the split of the `IOverlay` class, split the `hasOverlayData` function into `hasOverlayFile` and `hasOverlayDir`

Reviewed By: chadaustin

Differential Revision: D40526835

fbshipit-source-id: 5b075c3103e5ae3d1f1df32edb1384621bac35bd
2022-10-20 11:14:16 -07:00
Moti Zilberman
d8efe4274d Implement case-insensitive globs
Summary:
Eden's globber is currently hardcoded to be *mostly* case-sensitive ("mostly", because some code paths are already case-insensitive - see D39892007 (05b2300f73)). Here we augment the implementation to consistently perform case-insensitive globbing in case-insensitive mounts.

As a possible followup, we may want to expose this as an argument to `globFiles`. At the moment it is solely controlled by the checkout config.

Reviewed By: chadaustin, xavierd

Differential Revision: D39906585

fbshipit-source-id: 5b266cb75cf073651f6e2c66e7f1ebdd7026312f
2022-10-17 13:02:28 -07:00
Moti Zilberman
05b2300f73 Preserve case of glob matches
Summary:
On case-insensitive but case-preserving file systems, we currently clobber the case of a glob match and synthesise a path from the *pattern*'s case - e.g. if the pattern is `foo` and the file `Foo` exists, we incorrectly return `foo` as the match. This erases information that may be important to clients.

Here we change Eden to consistently preserve the case of the path as stored in the FS.

Reviewed By: chadaustin

Differential Revision: D39892007

fbshipit-source-id: 9d857ebdee917d0045ab800ef7094b85bf129722
2022-10-07 03:44:41 -07:00
Chad Austin
bea4ee5043 migrate AbsolutePathPiece, RelativePathPiece, and PathComponentPiece to std::string_view
Summary:
I'm having some confusing conflicts between fmt and our PathPieces. To
at least make the error messages clearer, migrate them to
std::string_view.

Reviewed By: genevievehelsel

Differential Revision: D39991418

fbshipit-source-id: 34d0f1ee23618da4595ee1d072e9cdf4f51736b6
2022-10-04 21:42:44 -07:00
Genevieve (Genna) Helsel
a16690c0f1 rename OverlayType to TreeOverlayType
Summary: In preparation for the split between TreeOverlays and BlobOverlays, this diff makes it explicit that the OverlayType applies to tree storage

Reviewed By: chadaustin

Differential Revision: D38279396

fbshipit-source-id: c56805818e43471f5301329beb0b5a51e0b04a69
2022-09-22 15:04:17 -07:00