stec-inc / EnhanceIO

EnhanceIO Open Source for Linux
Other
420 stars 176 forks source link

Linux 4.3 changes its include/linux/bio.h #110

Open elmystico opened 8 years ago

elmystico commented 8 years ago

I was trying to compile enhanceio on 4.3 without success. There's problem caused by this commit on kernel (have a look at bio.h changes "block: add a bi_error field to struct bio") also by this commit (bio.h also, "remove bio_get_nr_vecs()"). I couldn't fix it myself easly- few enhaceio source files are affected, it would be good someone experienced had a look. Also, I'm not sure how this could be fixed without breaking older kernels support... fork?

arddennis commented 8 years ago

According to a mail conversation bio_get_nr_vecs was removed and now it is not necessary. At least from this words: "We can always fill up the bio now, no need to estimate the possible size based on queue parameters." I can assume that I can use something like BIO_MAX_PAGES (256) instead of bio_get_nr_vecs(). Also bio_get_nr_vecs found only several times in the code. So it should be not hard to replace. Also, there are more errors shown when you compile against 4.3. For example, function misc_deregister currently void , but in code it tries to return its result as int.

int eio_delete_misc_device()
 {
       return misc_deregister(&eio_misc);
 }

Such coud be easy fixed by adding "return 1" and removing return from misc_deregister... I am not sure this is right way, but 10 minutes seach didn't give me an answer what this function returned before.

The same is with bio_endio which does not return any value and has only one argument...

I made changes to the code to correct compilation errors and managed to compie kernel modules for 4.3, but this simply not enough. Code needs to be checked thoughtfully. I get errors during cache creation:

[Errno 22] Invalid argument 

And this

enhanceio: Setting mode to write through get_policy: policy 2 found
enhanceio_lru: eio_lru_instance_init: created new instance of LRUenhanceio: Setting replacement policy to lru (2)
enhanceio: md_create: Could not read superblock sector 128 error 4096 for cache "*****"
storcium commented 8 years ago

Same here, unable to compile under 4.3.3

flrichar commented 8 years ago

Whom do we have to bribe to patch this? A truckload of beer isn't going to drink itself.

qm3ster commented 8 years ago

https://github.com/Frontier314/EnhanceIO is quite a bit fresher, no? Or https://github.com/feldsam/EnhanceIO/tree/patch-1 ?

elmystico commented 8 years ago

Gentlemen @bhansaliakhil @deepenmehta85

Do you know anything about the future of this issue? Is there anyone working on it, any plans?

storcium commented 8 years ago

Is there anything we can do to help motivate this process? I can get some company funds for Bountysource or whatever will help.

Alex Gorbachev Storcium

On Fri, Feb 19, 2016 at 6:58 AM, elmystico notifications@github.com wrote:

Gentlemen @bhansaliakhil https://github.com/bhansaliakhil @deepenmehta85 https://github.com/deepenmehta85

Do you know anything about the future of this issue? Is there anyone working on it, any plans?

— Reply to this email directly or view it on GitHub https://github.com/stec-inc/EnhanceIO/issues/110#issuecomment-186187662.

sjlongland commented 8 years ago

Just stumbled on this trying to build against kernel 4.4.6. I had a quick look at the repositories suggested by @qm3ster: one appears to be just targeted at fixing build issues under Red Hat, the other, not so sure.

Not looking forward to trying to patch this myself, but I will if I must.

sjlongland commented 8 years ago

Actually, scratch that: there's a patched version here: https://github.com/lanconnected/EnhanceIO and some further clean-ups here: https://github.com/impossibleventures/EnhanceIO

elmystico commented 8 years ago

@sjlongland have you used it? Everything's ok?

sjlongland commented 8 years ago

On 02/05/16 19:04, elmystico wrote:

@sjlongland https://github.com/sjlongland have you used it? Everything's ok?

Not yet, but I will do so in the coming weeks. It compiles at least, which is a big step forward in my book.

https://hackaday.io/project/10529-solar-powered-cloud-computing ← I'm waiting on some parts for that project so I can run the cluster 24/7 with the charger connected, then I should be able to do some experiments

with EnhanceIO and dm-cache.

Stuart Longland (aka Redhatter, VK4MSL)

I haven't lost my mind... ...it's backed up on a tape somewhere.

elmystico commented 8 years ago

to @sjlongland and others information Hi! Kernel part seems flawless- I'm using it for few weeks now with btrfs/raid/md without problem (linux 4.4/4.5/4.6) Userspace part was messy though. I've just finished fixing eio_cli regarding udev and systemd, works fine. I've lost few days for this damn thing but I'm satisfied. As soon as I find some time I'll send patches. Stay tuned.

elmystico commented 8 years ago

@sjlongland Works with linux 4.6 and systemd https://github.com/elmystico/EnhanceIO

raxip commented 8 years ago

@elmystico I tried your git branch on ubuntu 16.04 with kernel 4.4.0-34 and it's broken. It compiled and installed, and allowed me to create a cache, but shortly thereafter it crashed. The filesystem became unresponsive, and it wouldn't let me delete the cache either.

I had to hard boot the server, and enhanceio could not load the cache on boot up. [ 97.465486] enhanceio: module verification failed: signature and/or required key missing - tainting kernel [ 97.704849] enhanceio: md_load: Cache superblock mismatch detected. (current: 3, ondisk: 0) [ 97.704853] enhanceio: md_load: Can't enable cache . Either superblock version is invalid or cache has been deleted [ 97.759607] enhanceio: Cache metadata loaded from disk with 0 valid 0 dirty blocks [ 97.759618] enhanceio: Cache creation failed: Failed to reload cache. [ 126.599099] enhanceio: Cache creation failed: get_device for cache device failed. [ 126.685175] enhanceio: Cache creation failed: get_device for cache device failed. [ 126.728092] enhanceio: Cache creation failed: get_device for cache device failed. [ 126.767133] enhanceio: Cache creation failed: get_device for cache device failed. [ 126.865539] enhanceio: Cache creation failed: get_device for cache device failed.

How do I either fix or completely remove enhanceio?