On Wed, Feb 19, 2020 at 05:44:29PM -0800, Darrick J. Wong wrote: > Hi all, > > Let's fix all the xfs read/get buffer functions to return the usual > integer error codes and pass the buffer pointer as a out-argument. This > makes it so that we can return useful error output instead of making > callers infer ENOMEM or EAGAIN or whatever other reality they crave from > the NULL pointer that they get when things don't go perfectly. > > FWIW, all XBF_TRYLOCK callers must now trigger retries if they receive > EAGAIN. This may lead to a slight behavioral change in that TRYLOCK > callers will no longer retry for things like ENOMEM, though I didn't see > any obvious changes in user-visible behavior when running fstests. > > After finishing the error code conversion, we straighten out the TRYLOCK > callers to remove all this null pointer checks in favor of explicit > EAGAIN checks; and then we change the buffer IO/corruption error > reporting so that we report whoever called the buffer code even when > reading a buffer in transaction context. > > The userspace port of the kernel patchset was very difficult, so I am > submitting this series to avoid dumping the work on Eric. I should've noted that the "xfsprogs: refactor buffer function names" series applies against 5.5; this series is a backport of the second half of the kernel 5.6 merge. I didn't send that part because I didn't feel that it was significant enough to increase the patchbomb spew. SO... the order is: 1. "refactor buffer function names", which is the thread before this one 2. "sync with 5.6", available at [1] 3. "make buffer functions return error codes", which is this one --D [1] https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfsprogs-dev.git/tag/?h=libxfs-5.6-sync_2020-02-19 > If you're going to start using this mess, you probably ought to just > pull from my git trees, which are linked below. > > This is an extraordinary way to destroy everything. Enjoy! > Comments and questions are, as always, welcome. > > --D > > xfsprogs git tree: > https://git.kernel.org/cgit/linux/kernel/git/djwong/xfsprogs-dev.git/log/?h=buf-return-errorcodes