  With rapid improvements in NVM storage devices, the performance bottleneck is
gradually shifting to the network, thus giving rise to the notion of "data
movement wall". To reduce the amount of data movement over the network,
researchers have proposed near-data computing by shipping operations and
compute-extensions closer to storage devices. However, running arbitrary,
user-provided extensions in a shared, disaggregated storage environment
presents multiple challenges regarding safety, isolation, and performance.
Instead of approaching this problem from scratch, in this work we make a case
for leveraging the Linux kernel eBPF framework to program disaggregated NVM
storage devices. eBPF offers a safe, verifiable, and high-performance way of
executing untrusted, user-defined code in a shared runtime. In this paper, we
describe our experiences building a first prototype that supports remote
operations on storage using eBPF, discuss the limitations of our approach, and
directions for addressing them.
