Built on work from #280, this implementation uses ftrace rather than gendisk swapping to intercept disk I/O. This approach still avoids using unexported functions and adding more symbol lookups at compile-time.
The ftrace approach also avoids the issue we've seen with #276, since there's no function pointer swapping going on. This MR still includes the fix for earlier kernel versions.
This approach could be extended to mount/unmount events thereby re-enabling unverified and dormant snapshot states, however further investigation is required.
Built on work from #280, this implementation uses ftrace rather than gendisk swapping to intercept disk I/O. This approach still avoids using unexported functions and adding more symbol lookups at compile-time.
The ftrace approach also avoids the issue we've seen with #276, since there's no function pointer swapping going on. This MR still includes the fix for earlier kernel versions.
This approach could be extended to mount/unmount events thereby re-enabling unverified and dormant snapshot states, however further investigation is required.
Obsoletes #280 Fixes #276