News for hackers. Stuff that matters.
Re:Initial Hammer2 filesystem implementation by pmoriarty on Monday August 21, 2017 @08:11PM (#15068802)
Is there any work to get HAMMER2 on Linux?
Re:Initial Hammer2 filesystem implementation by blinkingled on Monday August 21, 2017 @08:27PM (#15068860)
Portability doesn't seem to have been a primary goal for HAMMER/2 - I remember reading on mailing list that the reason was to not let portability impede other goals.

Thus even with FreeBSD a port would not be straight forward because of VFS API differences, required scheduler support and buffer cache implementation differences[1]. Linux I would assume is even more work.

[1]https://wiki.freebsd.org/PortingHAMMERFS

Re:Initial Hammer2 filesystem implementation by craftkiller on Monday August 21, 2017 @10:20PM (#15069257)
According to this forum post[1] HAMMER2 is supposed to be portable, but I don't see any mention of that on the HAMMER2 design document.

[1] https://forums.freebsd.org/threads/49789/#post-278338

Re:Initial Hammer2 filesystem implementation by blinkingled on Monday August 21, 2017 @11:30PM (#15069499)
Right. But quickly skimming over h2 design doc gives the feeling that there's been efforts to reduce OS dependencies/special casing.
Re:Initial Hammer2 filesystem implementation by sipos on Monday August 21, 2017 @08:29PM (#15068870)
It will definitely happen.

I started an improved port of HAMMER to Linux (I don't like the current FUSE one and started building an in-kernel version from scratch) but, stopped working on it before I got it working or published it. I am planning to start working on it again with someone else. I wouldn't be surprised if someone else beats us to it though.

Re:Initial Hammer2 filesystem implementation by loeg on Monday August 21, 2017 @11:09PM (#15069426)
Do you have a good idea of what Dfly code is needed for HAMMER ports? Obviously sys/vfs/hammer2, but what about userspace libraries or binaries?
Re:Initial Hammer2 filesystem implementation by sipos on Wednesday August 23, 2017 @12:46AM (#15078578)
I had a reasonable idea of what was needed, and a roadmap for what order to tackle things in, when I was working on this (briefly) before. I didn't work on it for long and stopped working on this because I changed jobs and had less time for non-work projects, and personal circumstances got in the way too so, I switched to focusing on smaller projects. This was several years ago, before HAMMER2 and, I haven't actually followed developments since that closely (I haven't been looking at the code really) so, I expect some of my conclusions are no longer valid and I need to revisit this. I have been interested in taking this up again for a few months but, hadn't actually decided to start again until a few weeks ago when someone else I know expressed interest too.

What utilities you need and, what you do in userspace, depends on what the goal of the port is somewhat I think. Also, what goes in user-space depends on what you are porting to (FUSE or what OS). My goal was (and is again now) to have first class support on Linux, i.e. you should eventually be able to do everything you can on Dragonfly with HAMMER on Linux, with as good performance as possible. Initially, performance takes a back seat to feature support (unless it were to be so bad that it made features unusable) but, good performance is an important end goal of mine. I think for my goals, an in-kernel driver and user space utilities based on the Dragonfly ones but, with some substantial differences in code, make sense.

There is a FUSE port of HAMMER that lets you read, without history I think. I don't think this is maintained anymore but, it had very different goals to mine and, a port with different goals to my own, might want to pickup this/start a new FUSE port. In particular, if you don't care about supporting every feature, you want to get things that you do plan to support working more quickly, you don't care about performance in the long-run and/or, you want to target other platforms than Linux as well/instead, FUSE might make more sense. I think there are reasons to work on a FUSE port as well as a specific port to Linux (and other OSs), they have slightly different goals and trade-offs.

To be honest, I'm not sure exactly what you want to know here so, if I haven't addressed it, please do ask (but, it is possibly the case that what I know is too out of date to be interesting).

If you're interested in working on this together (there are a few people I know already who have expressed interest in working on this, all based in London so far), hearing more about progress in the near future or, if you are planning your own Linux port or port to another OS, I'd be interested to hear. Let me know if you'd like me to provide contact details for non-public messages (there's no email on my profile right now). I am not planning to make anything I do public until at least we have read support, with no history, working and at least somewhat tested but, I'm not set in stone about that particularly. I don't see any reason to use our port over the existing FUSE one until after then either.

Re:Initial Hammer2 filesystem implementation by rurban on Tuesday August 22, 2017 @06:50AM (#15071153)
The better question is when are you ready to switch to a proper kernel, DragonflyBSD? When you think about HAMMER2 you should really think about all the other improvements also.
Re:Initial Hammer2 filesystem implementation by zsd on Tuesday August 22, 2017 @07:47AM (#15071439)
I use Linux just because it has a large community and good driver support. But I like hearing about innovations in OS development.

What would you say to me or show to me to sell me on the idea of using a BSD?

Re:Initial Hammer2 filesystem implementation by zsd on Sunday August 27, 2017 @04:18PM (#15112493)
I rest my case.
Re:Initial Hammer2 filesystem implementation by sipos on Tuesday August 22, 2017 @10:39PM (#15078135)
There are plenty of reasons to want to/have to use Linux. There is clearly space in the world for more than one kernel. That said, Dragonfly deserves more use.
Re:Initial Hammer2 filesystem implementation by jacquesm on Monday August 21, 2017 @08:26PM (#15068855)
A fuse port would seem to be the way to go.
Re:Initial Hammer2 filesystem implementation by sipos on Tuesday August 22, 2017 @10:46PM (#15078163)
This is certainly the easiest way to get a working implementation, yes. There is an existing (but I don't think maintained) FUSE port of HAMMER and it would not be a huge amount of work to have HAMMER2 FUSE support I don't think. I am interested in a kernel port of HAMMER/HAMMER2 because I think this is likely to give the best performance in the long run.