explaingit

barakmich/go-tcmu

Analysis updated 2026-07-18 · repo last pushed 2016-08-31

GoAudience · developerComplexity · 4/5DormantSetup · hard

TLDR

go-tcmu lets you create virtual SCSI storage devices on Linux using Go, by wiring Go readers and writers into the kernel's TCM Userspace storage subsystem.

Mindmap

mindmap
  root((go-tcmu))
    What it does
      Virtual storage devices
      SCSI command handling
      Kernel TCM Userspace
    Tech stack
      Go
      Linux kernel
    Use cases
      Build storage software
      Test block devices
      Custom virtual disks
    Audience
      Systems developers
      Storage engineers

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Expose a disk image file as a real-looking storage device under /dev/ on Linux.

USE CASE 2

Build custom storage software that handles SCSI commands in user-space Go code.

USE CASE 3

Test applications that need real block devices without physical hardware.

USE CASE 4

Implement custom SCSI command handlers for advanced storage behavior.

What is it built with?

GoLinux Kernel

How does it compare?

barakmich/go-tcmu42wim/fabio42wim/go-xmpp
LanguageGoGoGo
Last pushed2016-08-312018-02-042020-01-24
MaintenanceDormantDormantDormant
Setup difficultyhardmoderatemoderate
Complexity4/53/53/5
Audiencedeveloperops devopsdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · hard Time to first run · 1h+

Requires loading a Linux kernel module and root access to create and manage the virtual device.

Copy-paste prompts

Prompt 1
Show me how to use go-tcmu to expose a local disk image file as a virtual SCSI device on Linux.
Prompt 2
Walk me through writing a Go handler with go-tcmu that responds to basic SCSI read and write commands.
Prompt 3
Explain how Linux's TCM Userspace kernel feature lets go-tcmu route storage requests to a user-space Go program.
Prompt 4
Help me extend go-tcmu's default handler to support a custom advanced SCSI command.

Frequently asked questions

What is go-tcmu?

go-tcmu lets you create virtual SCSI storage devices on Linux using Go, by wiring Go readers and writers into the kernel's TCM Userspace storage subsystem.

What language is go-tcmu written in?

Mainly Go. The stack also includes Go, Linux Kernel.

Is go-tcmu actively maintained?

Dormant — no commits in 2+ years (last push 2016-08-31).

How hard is go-tcmu to set up?

Setup difficulty is rated hard, with roughly 1h+ to a first successful run.

Who is go-tcmu for?

Mainly developer.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.