Artem B. Bityuckiy wrote:Hmm, so the whole point to implement transactions in the kernel space is to do the transactions in a way that nobody can see any intermediate inconsistent state ?
No. A transaction means that _all_ processes will see the whole
transaction or not.
It does _not_ mean that only a subset of programs, which happen to
link with a particular user-space library, will see it or not.
For example, you can use transactions for distro package management: a
whole update of a package would be a single transaction, so that at no
time does any program see an inconsistent set of files. See why
_every_ process in the system must have the same view?
[ If you meant that you can implement it with a user-space library
that every process in the system links to, that's true. But it would
rather misses the point of having filesystems in the kernel at all :) ]