OSDN Git Service

ext4: add ext4_sb_bread() to disambiguate ENOMEM cases
authorTheodore Ts'o <tytso@mit.edu>
Sun, 25 Nov 2018 22:20:31 +0000 (17:20 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Sun, 25 Nov 2018 22:20:31 +0000 (17:20 -0500)
commitfb265c9cb49e2074ddcdd4de99728aefdd3b3592
tree7504b10469a8cbe92672f54e664ae5495e797c50
parent2e6e902d185027f8e3cb8b7305238f7e35d6a436
ext4: add ext4_sb_bread() to disambiguate ENOMEM cases

Today, when sb_bread() returns NULL, this can either be because of an
I/O error or because the system failed to allocate the buffer.  Since
it's an old interface, changing would require changing many call
sites.

So instead we create our own ext4_sb_bread(), which also allows us to
set the REQ_META flag.

Also fixed a problem in the xattr code where a NULL return in a
function could also mean that the xattr was not found, which could
lead to the wrong error getting returned to userspace.

Fixes: ac27a0ec112a ("ext4: initial copy of files from ext3")
Cc: stable@kernel.org # 2.6.19
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
fs/ext4/ext4.h
fs/ext4/migrate.c
fs/ext4/resize.c
fs/ext4/super.c
fs/ext4/xattr.c