Uploaded image for project: 'Lustre'
  1. Lustre
  2. LU-5969

Create an LGPL version of liblustreapi

Details

    • Improvement
    • Resolution: Unresolved
    • Major
    • None
    • Lustre 2.7.0
    • None
    • 16672

    Description

      Cray would like to have an LGPL version of the liblustreapi
      library. We believe that there is also a desire in the
      community to do that move also.

      A starting point would be to create that new library with the existing
      code already licensed under the LGPL (such as HSM and layout), and
      start from there.

      We should take this opportunity to do some cleanup in the library, and
      start a new one, independent of the older code. Some of the things
      that we propose are:

      • prefix all API functions with lustre_, as opposed to llapi_
      • have a better API to work with the copytool and changelog
        readers. As these programs know which filesystem they are dealing
        with, there could be an lustre_open_fs / lustre_close_fs type of
        API, which would prevent calls to function such as get_root_path for
        every request. The HSM API already has something similar, and should
        be reused.
      • every function must have a test. Currently the liblustreapi is only
        tested indirectly with program like lfs, and that's not good enough.
      • every function must have a comment describing what it does, its
        parameters and return code. This is done for some but not all
        functions the existing library.

      As a test of the viability for this plan, we'd like to first port the
      posix tool to this new API. Currently, besides the API already in some
      LGPLed source files, the following functions and their dependencies are needed:

             get_param
             get_root_path
             libcfs_ukuc_get_rfd
             libcfs_ukuc_msg_get
             libcfs_ukuc_start
             libcfs_ukuc_stop
             llapi_chomp_string
             llapi_create_volatile_idx
             llapi_error
             llapi_error_callback_set
             llapi_fd2fid
             llapi_fid2path
             llapi_file_open_pool
             llapi_get_agent_uuid
             llapi_get_mdt_index_by_fid
             llapi_msg_set_level
             llapi_open_by_fid
             llapi_parse_size
             llapi_search_fsname
             llapi_search_mounts
      

      Cray would like to do the preliminary implementation of this new library, and would like to know if the copyright holders of the above mentioned functions agree to relicense their code under the LGPL. Otherwise they will have to be recoded.

      The second phase would be to also port Robinhood to it, since the most
      of the API should be there already, except for the changelog
      processing.

      Attachments

        Issue Links

          Activity

            [LU-5969] Create an LGPL version of liblustreapi
            spitzcor Cory Spitz added a comment - - edited

            adilger, I've got some bad news – Cray didn't acquire the copyrights for contributions made by CFS, Sun, Oracle, ClusterStor, Xyratex, or Seagate and I don't know if Oracle gave Seagate their rights when they sold of their parts of it.  I'll do some more checking, but we will definitely have to go to Seagate and possibly Oracle to continue down this path.  I'm all for trying though.

            spitzcor Cory Spitz added a comment - - edited adilger , I've got some bad news – Cray didn't acquire the copyrights for contributions made by CFS, Sun, Oracle, ClusterStor, Xyratex, or Seagate and I don't know if Oracle gave Seagate their rights when they sold of their parts of it.  I'll do some more checking, but we will definitely have to go to Seagate and possibly Oracle to continue down this path.  I'm all for trying though.

            Cory, we are now in a good position to complete this work. James has cleaned up the headers to separate the kernel and userspace code, so what is left is to generate a separate patch for each of the files to change the license to LGPL (rather than a single patch for all of them, as I naively tried) and then get a signoff for each patch from all sites that have contributed any substantial changes to those files.

            I will of course approve for any Intel and WC contributors, and you can now cover Cray, Seagate, Xyratex, Oracle, Sun, and CFS contributions, which leaves mostly CEA, LLNL, ORNL, and a few others.

            adilger Andreas Dilger added a comment - Cory, we are now in a good position to complete this work. James has cleaned up the headers to separate the kernel and userspace code, so what is left is to generate a separate patch for each of the files to change the license to LGPL (rather than a single patch for all of them, as I naively tried) and then get a signoff for each patch from all sites that have contributed any substantial changes to those files. I will of course approve for any Intel and WC contributors, and you can now cover Cray, Seagate, Xyratex, Oracle, Sun, and CFS contributions, which leaves mostly CEA, LLNL, ORNL, and a few others.
            spitzcor Cory Spitz added a comment -

            Do we want to get this resolved for 2.11?

            spitzcor Cory Spitz added a comment - Do we want to get this resolved for 2.11?

            Oleg Drokin (oleg.drokin@intel.com) merged in patch https://review.whamcloud.com/26440/
            Subject: LU-5969 obdclass: deprecate OBD_GET_VERSION ioctl
            Project: fs/lustre-release
            Branch: master
            Current Patch Set:
            Commit: 0ddb4be8d85ff5c423b6958d9479a2fa4ab8bcc5

            gerrit Gerrit Updater added a comment - Oleg Drokin (oleg.drokin@intel.com) merged in patch https://review.whamcloud.com/26440/ Subject: LU-5969 obdclass: deprecate OBD_GET_VERSION ioctl Project: fs/lustre-release Branch: master Current Patch Set: Commit: 0ddb4be8d85ff5c423b6958d9479a2fa4ab8bcc5

            Andreas Dilger (andreas.dilger@intel.com) uploaded a new patch: https://review.whamcloud.com/26440
            Subject: LU-5969 obdclass: deprecate OBD_GET_VERSION ioctl
            Project: fs/lustre-release
            Branch: master
            Current Patch Set: 1
            Commit: e87f4290bdf794955a8ded44c5aee325970c0820

            gerrit Gerrit Updater added a comment - Andreas Dilger (andreas.dilger@intel.com) uploaded a new patch: https://review.whamcloud.com/26440 Subject: LU-5969 obdclass: deprecate OBD_GET_VERSION ioctl Project: fs/lustre-release Branch: master Current Patch Set: 1 Commit: e87f4290bdf794955a8ded44c5aee325970c0820

            Oleg Drokin (oleg.drokin@intel.com) merged in patch https://review.whamcloud.com/26047/
            Subject: LU-5969 tests: allow "version" without "lustre:" prefix
            Project: fs/lustre-release
            Branch: master
            Current Patch Set:
            Commit: d73cf7722417c78ad07d88189421cfc8ef3fb8a7

            gerrit Gerrit Updater added a comment - Oleg Drokin (oleg.drokin@intel.com) merged in patch https://review.whamcloud.com/26047/ Subject: LU-5969 tests: allow "version" without "lustre:" prefix Project: fs/lustre-release Branch: master Current Patch Set: Commit: d73cf7722417c78ad07d88189421cfc8ef3fb8a7

            Andreas Dilger (andreas.dilger@intel.com) uploaded a new patch: https://review.whamcloud.com/26047
            Subject: LU-5969 tests: allow "version" without "lustre:" prefix
            Project: fs/lustre-release
            Branch: master
            Current Patch Set: 1
            Commit: 34a97c24c4326712e072fd40d7b03225a8c90e45

            gerrit Gerrit Updater added a comment - Andreas Dilger (andreas.dilger@intel.com) uploaded a new patch: https://review.whamcloud.com/26047 Subject: LU-5969 tests: allow "version" without "lustre:" prefix Project: fs/lustre-release Branch: master Current Patch Set: 1 Commit: 34a97c24c4326712e072fd40d7b03225a8c90e45

            Oleg Drokin (oleg.drokin@intel.com) merged in patch https://review.whamcloud.com/25324/
            Subject: LU-5969 lustreapi: allow "version" without "lustre:"
            Project: fs/lustre-release
            Branch: master
            Current Patch Set:
            Commit: d89191163324200d1f57a095faef1253c7d9fe11

            gerrit Gerrit Updater added a comment - Oleg Drokin (oleg.drokin@intel.com) merged in patch https://review.whamcloud.com/25324/ Subject: LU-5969 lustreapi: allow "version" without "lustre:" Project: fs/lustre-release Branch: master Current Patch Set: Commit: d89191163324200d1f57a095faef1253c7d9fe11

            Andreas Dilger (andreas.dilger@intel.com) uploaded a new patch: https://review.whamcloud.com/25324
            Subject: LU-5969 lustreapi: allow "version" without "lustre:"
            Project: fs/lustre-release
            Branch: master
            Current Patch Set: 1
            Commit: a832cfdbdcf21e113aa42419f5e874b6f3eb29eb

            gerrit Gerrit Updater added a comment - Andreas Dilger (andreas.dilger@intel.com) uploaded a new patch: https://review.whamcloud.com/25324 Subject: LU-5969 lustreapi: allow "version" without "lustre:" Project: fs/lustre-release Branch: master Current Patch Set: 1 Commit: a832cfdbdcf21e113aa42419f5e874b6f3eb29eb

            Oleg Drokin (oleg.drokin@intel.com) merged in patch http://review.whamcloud.com/20809/
            Subject: LU-5969 procfs: restore missing newline for version param
            Project: fs/lustre-release
            Branch: master
            Current Patch Set:
            Commit: 78fa16a2031b0b242e4d7bd441aba0956f9353d2

            gerrit Gerrit Updater added a comment - Oleg Drokin (oleg.drokin@intel.com) merged in patch http://review.whamcloud.com/20809/ Subject: LU-5969 procfs: restore missing newline for version param Project: fs/lustre-release Branch: master Current Patch Set: Commit: 78fa16a2031b0b242e4d7bd441aba0956f9353d2

            People

              hongchao.zhang Hongchao Zhang
              fzago Frank Zago (Inactive)
              Votes:
              1 Vote for this issue
              Watchers:
              28 Start watching this issue

              Dates

                Created:
                Updated: