On Fri, May 16, 2014 at 05:50:59PM -0700, Daniel Phillips wrote:If nobody objects to the flood then we will be happy to post patches, one per file. We thought that maybe the patch flood could be avoided by pointing to gitweb, but if that does not work for you then here come the patches. Andrew wanted patches too, way back, so that would be a quorum I think.
We would like to offer Tux3 for review for mainline merge. We havePost patches for review, please. Go and look at the process used to
prepared a new repository suitable for pulling:
https://git.kernel.org/cgit/linux/kernel/git/daniel/linux-tux3.git/
Tux3 kernel module files are here:
https://git.kernel.org/cgit/linux/kernel/git/daniel/linux-tux3.git/tree/fs/tux3
Tux3 userspace tools and tests are here:
https://git.kernel.org/cgit/linux/kernel/git/daniel/linux-tux3.git/tree/fs/tux3/user?h=user
merge f2fs for an example of how to filesystem merged....
Example:This was mentioned in the cover mail, it is our shorthand for "FIXME". I like that usage but if it is not to your taste we will change those to C99 comments.
static const struct inode_operations tux_file_iops = {
// .permission = ext4_permission,
.setattr = tux3_setattr,
.getattr = tux3_getattr,
#ifdef CONFIG_EXT4DEV_FS_XATTR
// .setxattr = generic_setxattr,
// .getxattr = generic_getxattr,
// .listxattr = ext4_listxattr,
// .removexattr = generic_removexattr,
#endif
// .fallocate = ext4_fallocate,
// .fiemap = ext4_fiemap,
.update_time = tux3_file_update_time,
};
The hacks around VFS and MM functionality need to have demonstratedThank you. A design review, hack by hack, is exactly what we want. Would you prefer to do them all at once, or one at a time?
methods for being removed. We're not going to merge that page
forking stuff (like you were told at LSF 2013 more than a year ago:
http://lwn.net/Articles/548091/) without rigorous design review and
a demonstration of the solutions to all the hard corner cases it
has.
The current code doesn't solve them (e.g. direct IO doesn'tIf you don't mind, we will leave direct IO for after merge. Direct IO is an enterprise feature on our to-do list, but Implementing it right now does not seem like a good reason to continue working out of tree. We would be happy to discuss our approach to direct IO if you wish.
work in tux3), and there's no clear patch set we can review that
demonstrates how it is all supposed to work.
i.e. you need toAgreed.
separate out all the page forking code into a separate patchset for
review, independent of the tux3 code and applies to the core mm/
code.
Then there's all the writeback hacks. You've simply copy-n-pastedThis is intentional. The files named "*_hack" were kept as close as possible to the original core code to clarify exactly where core needs to change in order to remove our workarounds. If you think we should pretty up that code then we will happily do it. Or maybe we can hammer out acceptable core patches right now, and include those with our merge proposal. That would make us even happier. We hate those hacks as much as you do.
most of fs-writeback.c, including duplicating structures like struct
wb_writeback_work and then hacked in crap (kallsyms lookups!) to be
able to access core structures from kernel module context
(tux3_setup_writeback(), I'm looking at you).
you need to separate out all theOK, patches are coming. I think it makes sense to post the core patches with our one-file-per-patch lkml bomb that will be coming soon. These will just be "git format-patch" patches from a new branch in our repository.
writeback changes you need into an independent patchset so that they
can be reviewed independently of the tux3 code that uses it.
Now, one of the big features tux3 you hyped is built-in snapshottingWe decided to add the versioning after merge because there seems to be no shortage of people who are more interested in base functionality like performance and reliability than snapshotting.It was called "versioned pointers" way back when and is now called "version tags". Here is the prototype and test harness:
capability. All that talk efficient pointer trees (or whatever they
were called) and being so much better than ZFS/btrfs-like COW.
Well, I can't find it anywhere in the code - the only references to
snapshots are 5 comments like this:
* FIXME: what happen if snapshot was introduced?
IOWs, tux3 is just a prototype of a standard journaling filesystem.No. Tux3 supports strong ordering without taking a performance hit for it. The technology is nothing like journalling. Tux3 is closer in spirit to a logging filesystem, but not very much like that either because Tux3 does not need any cleaning pass.
The tux3 code is still missing large parts of it's intended coreI believe I said that.
functionality
and there is nothing to tell us when that mightAs I said, the glaring omission is proper ENOSPC handling, which is work in progress. I do not view that as an obstacle to merging. After all, Btrfs did not have proper ENOSPC handling when it was merged. The design is here:
appear.
It really appears to me that tux3 is where btrfs was 5-6I totally agree. We take this very seriously and do not want to repeat that experience. You can't blame the Btrfs team, Btrfs is just really complicated. The progress they have made is impressive and they might be nearly there.
years ago - the core of an idea, but a long, long way from being
feature complete or production ready. btrfs still doesn't handle
ENOSPC well and given that tux3's is following the same development
path (BUG on ENOSPC) it doesn't fill me with any confidence that
tux3 is going to turn out any better than btrfs in 5 years time.
Really, I don't see how you plan to bring tux3 to be featureThat seems about right. I suppose I will be running around with Tux3 on my root filesystem pretty soon, but users really need to be clear on the fact that it takes years to make a fileystem stable. It is said that merging is a good way to speed that up.
complete and production ready in less than 2-3 years.
The current code is barely functional at this pointDisagree. Tux3 pases lots of stress tests including yours. It is showing interesting performance results, and stability is looking good. The atomic commit and crash recovery seems to be pretty solid. What Tux3 needs most is to be hammered on a lot by developers.
and there's still questionsIf you have specific questions, please raise them. I think our issues are actually a lot less than other filesystems that have been merged, including yours.
that haven't been answered about whether core tux3 functionality can
even be made to work properly, let alone integrated effectively.
IMO, it's a waste of time right now asking anyone to review thisWe asked for review and you are doing a great job, very much appreciated. We will soldier on.
code for inclusion until it has been cleaned up, the core
infrastructure problems have been solved and the core filesystem
code is much closer to feature complete.....