This kernel module implements snapshot and changed block tracking functionality. The module is developed to ensure the simple method of adding it to the upstream code. Therefore, the module is divided into two parts: bdevfilter and blksnap. bdevfilter provides the ability to intercept I/O units (bio). The main logic is concentrated in blksnap. The upstream variant does not contain a bdevfilter, but accesses the kernel to attach and detach the block device filter.