/* We can block now, but we have no other choice anyway */
submit_bio(WRITE, bio);
submit_bio(bio);
//blk_flush_plug(current);
return 0; / We do not wait for io to finish. /
After this changes I completely build new mainline 4.8.3 linux kernel with R4 module and I may load him, create, mount, write and destroy any data on R4 partitions or container files.
With regards,Deblanck.
Last edit: Deblanck 2016-10-23
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I looked in Linux source. submit_bio() from 4.7 assign rw in bio->bi_rw.
In Reiser4 source, for example, in reiser4_page_io()bio initialise by page_bio(), but in page_bio()rw set to bi_end_io. So, i think, we got an error.
The correct option (this probably a dirty hack) will look something like this:
#define reiser4_submit_bio(rw, bio) (((bio)->bi_rw |= (rw)), submit_bio((bio)))
Last edit: BratSinot 2016-10-31
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
In such situations I prefer to take a look at the respective upstream changes and how other file systems were adjusterd to them. As we can see, now the caller of submit_bio() is responsible for setting the rw flag: http://lists.infradead.org/pipermail/linux-mtd/2016-January/064755.html
so I think that the macro above with some corrections (use ";" instead of "," in the right) should work.
Thanks,
Edward.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
In this case, there is no difference between ',' and ';'. I just gave an example of the correct use (i hope so :) ).
And i just do fast check for patch from Deblanck.
So we have no other major changes, so we can test this option? What do this function (to make it easier to track the problem)?
P.S. То-бишь можно попробовать тот вариант? А за что вообще отвечает данная функция? Дабы было проще отслеживать проблемы.
Last edit: BratSinot 2016-11-02
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
When is the Next Kernel Patch? (Когда следующий патч для ядра)
Last edit: epsilon 2016-10-14
Tried patching linux-4.8.1 with reiser4-4.7.0 --->
./include/linux/fs.h:2787:17: note: expected ‘struct bio *’ but argument is of type ‘int’
?.?.?
Hello,
I'll try to prepare after my vacations (at the beginning of November).
Thanks,
Edward.
It need edit two files in the reiser4 tree:
fs/reiser4/page_cache.h
fs/reiser4/status_flags.c
In fs/reiser4/page_cache.h:
@@ -21 +21,3 @@
-#define reiser4_submit_bio(rw, bio) submit_bio((rw), (bio))
+#define reiser4_submit_bio(rw, bio) submit_bio(bio)
In fs/reiser4/status_flags.c:
@@ -61 +61,3 @@
//blk_flush_plug(current);
@@ -159 +159,3 @@
/* We can block now, but we have no other choice anyway */
//blk_flush_plug(current);
return 0; / We do not wait for io to finish. /
After this changes I completely build new mainline 4.8.3 linux kernel with R4 module and I may load him, create, mount, write and destroy any data on R4 partitions or container files.
With regards,Deblanck.
Last edit: Deblanck 2016-10-23
I looked in Linux source. submit_bio() from 4.7 assign rw in bio->bi_rw.
In Reiser4 source, for example, in reiser4_page_io() bio initialise by page_bio(), but in page_bio() rw set to bi_end_io. So, i think, we got an error.
The correct option (this probably a dirty hack) will look something like this:
#define reiser4_submit_bio(rw, bio) (((bio)->bi_rw |= (rw)), submit_bio((bio)))
Last edit: BratSinot 2016-10-31
In such situations I prefer to take a look at the respective upstream changes and how other file systems were adjusterd to them. As we can see, now the caller of submit_bio() is responsible for setting the rw flag:
http://lists.infradead.org/pipermail/linux-mtd/2016-January/064755.html
so I think that the macro above with some corrections (use ";" instead of "," in the right) should work.
Thanks,
Edward.
In this case, there is no difference between ',' and ';'. I just gave an example of the correct use (i hope so :) ).
And i just do fast check for patch from Deblanck.
So we have no other major changes, so we can test this option? What do this function (to make it easier to track the problem)?
P.S. То-бишь можно попробовать тот вариант? А за что вообще отвечает данная функция? Дабы было проще отслеживать проблемы.
Last edit: BratSinot 2016-11-02