linux-ext4.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v1 00/31] e2fsprogs September 2013 patchbomb
@ 2013-10-01  1:26 Darrick J. Wong
  2013-10-01  1:26 ` [PATCH 01/31] tune2fs: Don't convert block # to cluster # when clearing uninit_bg Darrick J. Wong
                   ` (30 more replies)
  0 siblings, 31 replies; 90+ messages in thread
From: Darrick J. Wong @ 2013-10-01  1:26 UTC (permalink / raw)
  To: tytso, darrick.wong; +Cc: linux-ext4

Oh boy.  A larger pile of random e2fsprogs patches than last month! :D

The first seven patches fix miscellaneous errors.  The first patch fixes a bug
in one of the patches that was accepted from last month's patchbomb.  The
second fixes a bug where multiple directory entries could be created for a
single call to ext2fs_link.  The third and fourth patches fix some omissions in
the metadata checksumming error catalog.  The fifth patch fixes a bug wherein
ext2fs_link fails to notice to add checksum space when de-hashing a directory.
The sixth patch fixes a crash in getflags because the ioctl is defined to take
an unsigned long, whereas the program only allocates an int.  The seventh patch
causes the large_file feature to be set if someone uses the fileio APIs to
write out a file size bigger than 2GB.

The next four patches fix a number of off-by-one errors in the hole-punching
code.  Most of them stem from a misunderstanding of the 'start' and 'end
parameters to ext2fs_punch; assuming that the API means "punch out block
$start, block $end, and every block between the two", these patches fix that.
There's also a fix for a problem wherein we miss punching extents because
concurrent deleting-while-iterating has the effect of advancing the extent
pointer.

After that, there are eight patches to fix various 64bit value truncation
problems I observed first by trying to resize2fs a 20T filesystem.  I then
rebuilt with -Wconversion and fixed a few more places where we would rip off
the upper 32 bits of a 64-bit value, or use strtoul instead of strtoull.  I
also updated badblocks to deal with extents.

Then comes a patch to add sparse checking to the build process.

For the next six patches, I turned on bigalloc and found a number of bugs
relating to the fact that block_alloc_stats2() takes a block number but
operates on clusters.  I've fixed up all the allocation errors that I found.
I also decided to make the quota code use ext2fs_punch rather than try to
correct its behavior wrt bigalloc.  There was also a bug wherein the
requirement that 64-bit bitmaps be enabled (via EXT2_FLAG_64BITS) for bigalloc
filesystems.

The next three patches provide the ability to toggle the 64bit feature on any
ext4 filesystem.  Since extents are required to address blocks above 2^32, I
also added in warnings to prevent the user from having 64bit,^extents.

The final two patches add the ability to edit extended attributes and add a
fuse2fs driver for e2fsprogs.  I admit that the xattr editing functions
probably clash with the inline_data patches.  The fuse driver should work with
the latest versions of Linux fuse (2.9.2) and osxfuse (2.6.1).  I've been using
the fuse driver to test e2fsprogs functionality, which is how I came across
most of the bugs fixed above.

There are still bigalloc bugs in resize2fs -- it still thinks it's freeing
blocks, when in reality it's freeing clusters.  Also it's silly to have two
xattr implementations; I will probably just end up moving to Zheng Liu's
implementation ("libext2fs: add functions to operate on extended attribute")
since it's sitting in -pu.  For today I have not, because there were plenty of
other bugs to fix! :)  Long term, if fuse2fs actually goes anywhere, I think
it'd be useful to reintroduce journal replay too.  (Or cheat and use e2fsck -E
journal_only...)

I've tested these e2fsprogs changes against the -next branch as of a few days
ago.  After a longish while I think I've managed to reconstruct my old metadata
checksumming test program from the old days, so I've posted that version here:
https://gist.github.com/djwong/6372995 ... though now it has tests for
hole-punching and resizing. :) If you want to test fuse2fs with icsum.sh, use
this script: https://gist.github.com/djwong/6772237

These days, I use a 2GB ramdisk and a 20T "disk" I constructed out of
dm-snapshot to test in an x64 VM.

Comments and questions are, as always, welcome.

--D

^ permalink raw reply	[flat|nested] 90+ messages in thread

end of thread, other threads:[~2013-10-13  3:16 UTC | newest]

Thread overview: 90+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-10-01  1:26 [PATCH v1 00/31] e2fsprogs September 2013 patchbomb Darrick J. Wong
2013-10-01  1:26 ` [PATCH 01/31] tune2fs: Don't convert block # to cluster # when clearing uninit_bg Darrick J. Wong
2013-10-03 16:53   ` Lukáš Czerner
2013-10-03 19:04     ` Darrick J. Wong
2013-10-07 12:49       ` Lukáš Czerner
2013-10-07 13:03       ` Theodore Ts'o
2013-10-09 22:10         ` Darrick J. Wong
2013-10-10  0:26           ` Theodore Ts'o
2013-10-10 22:04             ` Darrick J. Wong
2013-10-13  3:09   ` Theodore Ts'o
2013-10-01  1:26 ` [PATCH 02/31] libext2fs: Only link an inode into a directory once Darrick J. Wong
2013-10-01 15:37   ` jon ernst
2013-10-01 21:11     ` Darrick J. Wong
2013-10-07 13:17   ` Theodore Ts'o
2013-10-07 18:53     ` Darrick J. Wong
2013-10-01  1:27 ` [PATCH 03/31] Define an error code for block bitmap checksum failures Darrick J. Wong
2013-10-13  3:12   ` Theodore Ts'o
2013-10-01  1:27 ` [PATCH 04/31] libext2fs: Fix a minor grammatical error in the error catalog Darrick J. Wong
2013-10-07 13:20   ` Theodore Ts'o
2013-10-01  1:27 ` [PATCH 05/31] libext2fs: Add space for metadata checksum when unconverting a hashed directory block Darrick J. Wong
2013-10-13  3:16   ` Theodore Ts'o
2013-10-01  1:27 ` [PATCH 06/31] e2p: Fix f[gs]etflags argument size mismatch Darrick J. Wong
2013-10-07 13:33   ` Theodore Ts'o
2013-10-07 20:40     ` Darrick J. Wong
2013-10-07 23:23       ` Darrick J. Wong
2013-10-08  0:06         ` Theodore Ts'o
2013-10-08  0:28           ` Darrick J. Wong
2013-10-01  1:27 ` [PATCH 07/31] libext2fs: When writing a file that has a i_size > 2GB, set the large_file feature flag and update the superblock Darrick J. Wong
2013-10-07 13:14   ` Theodore Ts'o
2013-10-01  1:27 ` [PATCH 08/31] libext2fs: Fix off-by-one error in file truncation Darrick J. Wong
2013-10-07 14:02   ` Lukáš Czerner
2013-10-08 15:52   ` Theodore Ts'o
2013-10-01  1:27 ` [PATCH 09/31] libext2fs: Rewind extent pointer when totally deleting an extent Darrick J. Wong
2013-10-07 13:37   ` Theodore Ts'o
2013-10-07 18:24     ` Darrick J. Wong
2013-10-01  1:27 ` [PATCH 10/31] libext2fs: Allow callers to punch a single block Darrick J. Wong
2013-10-01 19:09   ` jon ernst
2013-10-01 21:25     ` Darrick J. Wong
2013-10-07 13:40   ` Theodore Ts'o
2013-10-08 15:54   ` Theodore Ts'o
2013-10-01  1:27 ` [PATCH 11/31] libext2fs: ind_punch() must not stop examining blocks prematurely Darrick J. Wong
2013-10-07 13:43   ` Theodore Ts'o
2013-10-01  1:27 ` [PATCH 12/31] e2fsprogs: Fix blk_t <- blk64_t assignment mismatches Darrick J. Wong
2013-10-07 13:52   ` Theodore Ts'o
2013-10-01  1:28 ` [PATCH 13/31] e2fsprogs: Less critical fixes to use the appropriate blk*t types Darrick J. Wong
2013-10-07 13:59   ` Theodore Ts'o
2013-10-01  1:28 ` [PATCH 14/31] libext2fs: Fix ext2fs_open2() truncation of the superblock parameter Darrick J. Wong
2013-10-07 14:30   ` Lukáš Czerner
2013-10-07 18:42     ` Darrick J. Wong
2013-10-08 15:58   ` Theodore Ts'o
2013-10-08 17:47     ` Darrick J. Wong
2013-10-01  1:28 ` [PATCH 15/31] e2fsck: Teach EA refcounting code to handle 48bit block addresses Darrick J. Wong
2013-10-07 15:30   ` Lukáš Czerner
2013-10-07 18:37     ` Darrick J. Wong
2013-10-08 16:01       ` Theodore Ts'o
2013-10-09 21:53         ` Darrick J. Wong
2013-10-01  1:28 ` [PATCH 16/31] debugfs: Handle 64bit block numbers Darrick J. Wong
2013-10-07 15:49   ` Lukáš Czerner
2013-10-07 18:49     ` Darrick J. Wong
2013-10-01  1:28 ` [PATCH 17/31] libext2fs: Refactor u32-list to handle 32 and 64-bit data types Darrick J. Wong
2013-10-10 14:46   ` Lukáš Czerner
2013-10-10 18:05     ` Darrick J. Wong
2013-10-01  1:28 ` [PATCH 18/31] libext2fs: Badblocks should handle 48-bit block numbers correctly Darrick J. Wong
2013-10-08 16:03   ` Theodore Ts'o
2013-10-09 21:57     ` Darrick J. Wong
2013-10-01  1:28 ` [PATCH 19/31] badblocks: Use the new badblocks APIs for 64-bit block numbers Darrick J. Wong
2013-10-10 15:01   ` Lukáš Czerner
2013-10-01  1:28 ` [PATCH 20/31] e2fsprogs: Add (optional) sparse checking to the build Darrick J. Wong
2013-10-12  3:13   ` Theodore Ts'o
2013-10-01  1:28 ` [PATCH 21/31] libext2fs: Be more thorough in searching a range of blocks for a cluster Darrick J. Wong
2013-10-08 16:09   ` Theodore Ts'o
2013-10-01  1:29 ` [PATCH 22/31] libext2fs: During punch, only free a cluster if we're sure that all blocks in the cluster are being punched Darrick J. Wong
2013-10-10 15:53   ` Lukáš Czerner
2013-10-10 19:29     ` Darrick J. Wong
2013-10-01  1:29 ` [PATCH 23/31] libext2fs: expanddir and mkjournal need not update the summary counts when performing an implied cluster allocation Darrick J. Wong
2013-10-10 16:02   ` Lukáš Czerner
2013-10-01  1:29 ` [PATCH 24/31] libext2fs: Use ext2fs_punch() to truncate quota file Darrick J. Wong
2013-10-10 16:06   ` Lukáš Czerner
2013-10-01  1:29 ` [PATCH 25/31] e2fsck: Only release clusters when shortening a directory during a rehash Darrick J. Wong
2013-10-10 16:13   ` Lukáš Czerner
2013-10-01  1:29 ` [PATCH 26/31] libext2fs: openfs() musn't allow bigalloc without EXT2_FLAGS_64BITS Darrick J. Wong
2013-10-07 12:50   ` Lukáš Czerner
2013-10-12  1:36     ` Theodore Ts'o
2013-10-01  1:29 ` [PATCH 27/31] resize2fs: Convert fs to and from 64bit mode Darrick J. Wong
2013-10-01  1:29 ` [PATCH 28/31] mke2fs: Complain about creating 64bit filesystems without extents Darrick J. Wong
2013-10-12  1:14   ` Theodore Ts'o
2013-10-01  1:29 ` [PATCH 29/31] e2fsck: Enable extents on all 64bit filesystems Darrick J. Wong
2013-10-12  1:19   ` Theodore Ts'o
2013-10-01  1:29 ` [PATCH 30/31] libext2fs: Support modifying arbitrary extended attributes Darrick J. Wong
2013-10-01  1:30 ` [PATCH 31/31] misc: Add fuse2fs, a FUSE server for e2fsprogs Darrick J. Wong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).