tree: https://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2.git
iomap-write
head: 54ef20a4051e1dba575ff26cfef73206602d4430
commit: 023c731681b6f23e755b192d278078a3026ace12 [3/12] gfs2: hole_size
improvement
config: i386-allyesconfig (attached as .config)
compiler: gcc-7 (Debian
On Mon, May 14, 2018 at 05:36:19PM +0200, Andreas Gruenbacher wrote:
> Add write_begin and write_end operations to struct iomap_ops to provide
> a way of overriding the default behavior of iomap_write_begin and
> iomap_write_end. This is needed for implementing data journaling: in
> the data
On 8 May 2018 at 22:04, Bob Peterson wrote:
> This patch is a first step in rgrp sharing. It allows for glocks
> locked in EX mode to be shared amongst processes on that node.
> Like a Shared glock, multiple processes may hold the lock in
> EX mode at the same time, provided
According to xfstest generic/240, applications see, to expect direct I/O
writes to either complete as a whole or to fail; short direct I/O writes
are apparently not appreciated. This means that when only part of an
asynchronous direct I/O write succeeds, we can either fail the entire
write, or we
Now that generic_file_write_iter is no longer used, there are no
remaining users of these address space operations.
Signed-off-by: Andreas Gruenbacher
---
fs/gfs2/aops.c | 210 -
1 file changed, 210 deletions(-)
diff --git
With that, the direct_IO address space operation can be all but
eliminated: only a dummy remains which indicates that the filesystem
supports direct I/O.
Signed-off-by: Andreas Gruenbacher
---
fs/gfs2/aops.c | 92 +--
fs/gfs2/bmap.c | 11 +++-
With the traditional page-based writes, blocks are allocated separately
for each page written to. With iomap writes, we can allocate a lot more
blocks at once, with a fraction of the allocation overhead for each
page.
Split calculating the number of blocks that can be allocated at a given
Now that gfs2_extent_length is no longer used for determining the size
of a hole and always with an upper size limit, the function can be
simplified.
Signed-off-by: Andreas Gruenbacher
---
fs/gfs2/bmap.c | 24
1 file changed, 8 insertions(+), 16
Add write_begin and write_end operations to struct iomap_ops to provide
a way of overriding the default behavior of iomap_write_begin and
iomap_write_end. This is needed for implementing data journaling: in
the data journaling case, pages are written into the journal before
being written back to
Signed-off-by: Andreas Gruenbacher
---
fs/gfs2/bmap.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/fs/gfs2/bmap.c b/fs/gfs2/bmap.c
index 0590e93494f7..fcf2f7d166de 100644
--- a/fs/gfs2/bmap.c
+++ b/fs/gfs2/bmap.c
@@ -176,8 +176,8 @@ int
Clean up gfs2_iomap_alloc and gfs2_iomap_get. Document how
gfs2_iomap_alloc works: it now needs to be called separately after
gfs2_iomap_get where necessary; this will be used later by iomap write.
Move gfs2_iomap_ops into bmap.c.
Introduce a new gfs2_iomap_get_alloc helper and use it in
Reimplement function hole_size based on a generic function for walking
the metadata tree and rename hole_size to gfs2_hole_size. While
previously, multiple invocations of hole_size were sometimes needed to
walk across the entire hole, the new implementation always returns the
entire hole at once
In journaled data mode, we need to add each buffer head to the current
transaction. In ordered write mode, we only need to add the inode to
the ordered inode list. So far, both cases are handled in
gfs2_trans_add_data. This makes the code look misleading and is
inefficient for small block sizes
First, change the sanity check in gfs2_stuffed_write_end to check for
the actual write size instead of the requested write size.
Second, use the existing teardown code in gfs2_write_end instead of
duplicating it in gfs2_stuffed_write_end.
Signed-off-by: Andreas Gruenbacher
Here is an update of my gfs2 iomap write patch queue, with support for
buffered writes as well as direct I/O reads and writes through iomap.
These patches are intended for the next merge window.
The first five patches are minor cleanups and improvements; the first
actual iomap patch is "iomap:
Although it may not be obvious from the patch contents, this
patch simply moves function gfs2_ordered_wait before its sister
function, gfs2_ordered_write. There are no changes to the code.
This was done to make a follow-on patch more clear and easy to
read.
Signed-off-by: Bob Peterson
Before this patch, the ordered_write function would submit all
the ordered writes with filemap_fdatawrite, which waited for each
one to complete before moving on to the next. This patch allows it
to submit them all, then wait for them after they're submitted.
Signed-off-by: Bob Peterson
This patch set is designed to submit the ordered writes list in bulk.
This is a performance enhancement from the way we currently do it,
which is submit->wait->submit->wait. Submitting them in bulk takes
better advantage of the io elevator and vfs below us.
The first patch merely moves function
On Mon, May 14, 2018 at 02:24:38PM +0100, Andrew Price wrote:
> We can still keep this minimal if that's better for the Debian package.
>
> The issue is due to the log header checksum (lh_hash) being calculated using
> sizeof(struct gfs2_log_header) and that size has increased in the latest
>
On 13/05/18 10:13, Valentin Vidic wrote:
On Wed, May 09, 2018 at 05:53:19PM +0100, Andrew Price wrote:
You should be able to fix this by using the configure.ac and
gfs2/libgfs2/meta.c files from master. The diff should be very small. It'll
need an ./autogen.sh to rebuild the configure script.
20 matches
Mail list logo