Giter Club home page Giter Club logo

gonbdserver's People

Contributors

abligh avatar glendc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

gonbdserver's Issues

Illegal number syntax on testing

I am getting a panic on the golang test cases.

The output when running go test -v ./... is as follows:

? _/tmp/gonbdserver [no test files]
--- FAIL: TestConnection (0.00s)
panic: template: config:21: illegal number syntax: "-" [recovered]
panic: template: config:21: illegal number syntax: "-"

goroutine 6 [running]:
testing.tRunner.func1(0xc82009e120)
/usr/lib/go/src/testing/testing.go:450 +0x171
text/template.Must(0x0, 0x7f475bdae028, 0xc82000b520, 0x0)
/usr/lib/go/src/text/template/helper.go:23 +0x4b
_/tmp/gonbdserver/nbd.StartNbd(0xc82009e120, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
/tmp/gonbdserver/nbd/nbd_test.go:101 +0xd97
_/tmp/gonbdserver/nbd.doTestConnection(0xc82009e120, 0xc80e7d4400)
/tmp/gonbdserver/nbd/nbd_test.go:443 +0x7e
_/tmp/gonbdserver/nbd.TestConnection(0xc82009e120)
/tmp/gonbdserver/nbd/nbd_test.go:459 +0x26
testing.tRunner(0xc82009e120, 0xe6c460)
/usr/lib/go/src/testing/testing.go:456 +0x98
created by testing.RunTests
/usr/lib/go/src/testing/testing.go:561 +0x86d

goroutine 1 [chan receive]:
testing.RunTests(0x8bf418, 0xe6c460, 0xa, 0xa, 0x1)
/usr/lib/go/src/testing/testing.go:562 +0x8ad
testing.(*M).Run(0xc82009dee8, 0x7f475bdb2298)
/usr/lib/go/src/testing/testing.go:494 +0x70
main.main()
_/tmp/gonbdserver/nbd/_test/_testmain.go:72 +0x116

goroutine 17 [syscall, locked to thread]:
runtime.goexit()
/usr/lib/go/src/runtime/asm_amd64.s:1696 +0x1

goroutine 5 [syscall]:
os/signal.loop()
/usr/lib/go/src/os/signal/signal_unix.go:22 +0x18
created by os/signal.init.1
/usr/lib/go/src/os/signal/signal_unix.go:28 +0x37
FAIL _/tmp/gonbdserver/nbd 0.046s

-------- END OF OUTPUT -------

I am running on a fully updated ubuntu 15.10 box with golang version 1.5.1

Rationale for custom allocator?

I can see this project was written a while ago, I wonder if the go garbage collector matured enough since then that this code is no longer necessary.

I wonder what the authors opinions on that are.

nbd device is read-only

Using nbd-client version 3.7 from ubuntu 14.04.1, connecting to gonbdserver, the created nbd device is read-only. blockdev --getro returns 1.

Using blockdev --setrw will cause it --getro to return 0, but writes will fail and dmesg will show "block nbd0: Write on read-only".

Using the nbd-server package to serve the device gives a writable device. Uncommenting the Dispatch debug line shows only NBD_CMD_READs being dispatched until the final NBD_CMD_DISC.

My impression is that something during the initial setup is signaling that it's a read only device somehow.

Any ideas on what I can try to debug this? gonbdserver.conf is:

servers:
- protocol: tcp
address: 127.0.0.1:6666
exports:
- name: foo
driver: file
path: /tmp/test
workers: 2
logging:

Connecting using: nbd-client -N foo 127.0.0.1 6666 /dev/nbd0

Define "NBD" in the README

I wasn't sure what this was about, immediately. There's no way I'm the only person who found this who didn't know what NBD meant right away.

more of a suggestion than an issue, I guess.

Reverse the `noceph` build flag to `ceph`

On a default linux system, without the ceph developer packages installed, the build currently fails:

github.com/ceph/go-ceph/rados/conn.go:5:29: fatal error: rados/librados.h: No such file or directory
 // #include <rados/librados.h>

Wouldn't it be better to reverse the build directive in rbd.go from // +build linux,!noceph to // +build linux,ceph so one can choose to explicitly enable the RbdBackend instead?

This is especially annoying if you want to import the nbd code in an external project where this blocks a normal go get installation.

Question/Suggestion: Replace isTrue/isFalse with strconv.ParseBool

In nbd/config.go there are 3 handwritten functions defined (isTrue, isFalse and isTrueFalse) that all seem to serve the purpose as what strconv.ParseBool. Could it be possible to remove the custom code (and thus avoid having to maintain that), and replace it with the standard Golang (and idiomatic) approach?

Where isFalse is used you would have to simply negate the bool result in a non-error case (!result). Where isTrueFalse you would use in a non-error case the result bool param directly where now the first result param is used, and you would use the negated version (!result) of that bool param where you now use the second result param is used.

Or is there a special reason that I'm missing that would explain why you would write custom code for this?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.