git » libjio » btrfs » tree

[btrfs] / UPGRADING

Here you can find a summary of the changes in the library that could require
an effort from its users, like the ones affecting the API, ABI or semantics.

Normally, nothing should be required when upgrading between two stable
releases from the same branch.


------- 1.00: Stable release

-> 0.90 (On-disk format change, pre 1.0 freeze)
  - The way transactions are stored on disk has changed. It is mandatory that
    you jfsck all your files before upgrading. Hopefully this will be the last
    backwards-incompatible format change before 1.0.
  - jtrans_new() now takes an additional flags parameter.
  - jopen() jflags parameter is now unsigned.
  - J_NOCLEANUP was removed in favour of J_CLEANUP, and the default behaviour
    of jfsck() is now not to clean up unless J_CLEANUP is passed in the flags.
  - jtrans_add() renamed to jtrans_add_w().
  - jtrans_commit() returns 0 on success, instead of the amount of bytes
    written.

-> 0.50 (Big API change)
  - Structures are now opaque types:
    struct jfs -> jfs_t; jopen() returns a pointer to one, jclose() frees it.
    struct jtrans -> jtrans_t; jtrans_new() returns a pointer to one,
      jtrans_free() frees it.
  - Renamed jtrans_init() to jtrans_new().
  - jtrans_commit() returns -1 on recovered errors, -2 on unrecovered errors
    (which are an indication of a severe underlying condition).
  - jtrans_add() returns 0 on success and -1 on errors (it used to return 1 on
    success and 0 on errors).
  - jfsck() now has an additional "flags" parameter, which should be set to 0
    to select the default behaviour.
  - jfsck_cleanup() was removed, and now jfsck() cleans up by default.

-> 0.25
  - It is no longer necessary to pass O_SYNC to jopen() if lingering
    transactions are not in use.
  - libjio.h can no longer be included from C++ source without surrounding it
    by an 'extern "C"'. This obviously should only affect C++ applications.

-> 0.24
  - The return values of jfsck() have changed, so applications using it need
    to be recompiled.
  - Python bindings' jfsck(), jfsck_cleanup(), jsync(), jwrite() and jpwrite()
    now raise an IOError on failures.

-> 0.22
  - Applications need to be recompiled due to a change in the jfs structure.

-> 0.20
  - Applications need to be recompiled due to a change in the jfs structure.
  - When you link your applications with libjio, you need to make sure you
    compile using large file support.

-> 0.19
  - Applications need to be recompiled due to a change in the flag numbering.
  - A flag number has changed, from J_COMMITED to J_COMMITTED. If you used
    that flag, you need to rename it.