Home | Links | git | Mailing List

OSC software OSD implementation

As part of investigations into using OSDs as storage devices in direct-attached parallel file systems, systems researchers at OSC (Ohio Supercomputer Center)  have developed these codes. The background for the project can be found on this overview page.

A git Mirror of OSC's OSD internal svn repository. Can be found here at (See below)
Thanks to Ananth Devulapalli, the maintainer of the project at OSC, for letting us do this.

I have also tied the project with TOMO's tgt git-tree as a submodule, so a user that needs an OSD2 target need only clone one head and everything will sync automatically.

The git tree is here:
  git-clone --recursive git://
for behind a firewall:   git-clone --recursive
  or viewed on the web

The tgt submodule can also be accessed at:
  or viewed on the web
[Please don't clone directly. Use the git-submodule command from within osc-osd project to sync everything  automatically. See below]

Tree description

osc-old-git - branch: Historic git-tree
  This is the dead git tree that is still available at:
  web -
  or git://
  It is no longer updated and won't even compile at current state. But it has the longest available history of the project.

osc - branch: OSC's svn Mirror
  Is a branch I manually rebase-merged between the osc-old-git and a git-branch I made with the help of the script. OSC would let me have a read-only access to their GPL parts of the SVN repository, with the help of a script I import this repository into git. The script is incremental and is run from time-to-time to update on OSC's progress. From today on all commits to this branch will be made only by the script.

  This tags the patch that adds the first version of script and friends, from here on the tree branches from the original git tree and starts the SVN import.

master - branch
  At this branch I keep open-osd patches to the OSC project, as well as the integration with the tgt submodule. Checking out this branch should give a user working results. Other branches might not compile and/or need farther manual configuration. Here I will try to keep a working version.

The "osc" branch might advance faster then "master". I will try to only cut master at points that compile and pass my tests, so users have a good chance of a working set. Needless to say that osc-old-git is frozen.

osc will never rebase, and will only advance forward. Other then exact commits from svn it will contain updates to the svn_fetch* scripts if needed.

master will rebase, with open-osd pending patches flouting above osc branch. When/if some of the patches get accepted by Ananth or are fixed in some other way, they will get dropped. So for users, they should "git-remote update" plus "git-checkout -b ..." and not just "git-pull" from master.

How to get started?

One might follow these steps:
$ git clone --recursive git://
(Please use relatively new git version > 1.5.3.x)
$ cd osc-osd/
$ git submodule init
$ git submodule update
The --recursive switch will auto-clone the tgt git tree and will checkout
the exact point of the tree needed at that point of the osc-osd tree.
$ make
And it should all compile. See the osd-initiator README and osd-target/README for additional *-devel packages you might need, but I don't remember any.

From time to time if you want to update on osc-osd progress you might do:
$ git tag WORKS_FOR_ME master
This can later be removed if you're happy with the new stuff. I might keep these tagged as well.
$ git remote update
if you are on your own branch then:
$ git branch -f master origin/master
this will not work if you're on master. In that case do:
$ git-reset --hard origin/master
and one extra step
$ git-submodule update
This will sync tgt to the proper commit point

-- BoazHarrosh - 23 Sep 2008