[PATCH v2 0/3] btrfs: Enumerate and export exclusive operations

Goldwyn Rodrigues
2020-08-03T20:29:25Z

This patch series enumerates the exlcusive operation currently being
perfomed by the current filesystem and exports it in the sys filesytem
at /sys/fs/btrfs/<fsid>/exclusive_operation.

This would enable our tools to specify precisely which operation is
running on why starting an exclusive operation failed. The series also
adds a sysfs_notify() to alert userspace when the state changes, so
userspace can perform select() on it to get notified of the change.
This would enable us to enqueue a command which will wait for current
exclusive operation to complete before issuing the next exclusive
operation. This has been done synchronously as opposed to a background
process, or else error collection (if any) will become a nightmare.

This third patch further expands the balance information such as the
state and the current statistics. I am hoping that it could be used to
move the logic of guessing/managing the right ioctls out of the kernel
and into the tools.

For backward compatibility, the tools continue working as before if the
sys file is not present.

Changes since v1:
- Corrected call for btrfs_start_exop() in btrfs_ioctl_dev_replace()
- Use fsid_str[] instead of fsid[] to save on uuid_parse()