Commit 7f0f0d87 authored by NeilBrown's avatar NeilBrown Committed by Shaohua Li

md: fix some issues with alloc_disk_sb()

1/ don't print a warning if allocation fails.
 page_alloc() does that already.
2/ always check return status for error.
Signed-off-by: default avatarNeilBrown <neilb@suse.com>
Signed-off-by: default avatarShaohua Li <shli@fb.com>
parent cbb38732
...@@ -684,11 +684,8 @@ static inline sector_t calc_dev_sboffset(struct md_rdev *rdev) ...@@ -684,11 +684,8 @@ static inline sector_t calc_dev_sboffset(struct md_rdev *rdev)
static int alloc_disk_sb(struct md_rdev *rdev) static int alloc_disk_sb(struct md_rdev *rdev)
{ {
rdev->sb_page = alloc_page(GFP_KERNEL); rdev->sb_page = alloc_page(GFP_KERNEL);
if (!rdev->sb_page) { if (!rdev->sb_page)
printk(KERN_ALERT "md: out of memory.\n");
return -ENOMEM; return -ENOMEM;
}
return 0; return 0;
} }
...@@ -8788,15 +8785,18 @@ static int read_rdev(struct mddev *mddev, struct md_rdev *rdev) ...@@ -8788,15 +8785,18 @@ static int read_rdev(struct mddev *mddev, struct md_rdev *rdev)
* variable in case we err in the future * variable in case we err in the future
*/ */
rdev->sb_page = NULL; rdev->sb_page = NULL;
alloc_disk_sb(rdev); err = alloc_disk_sb(rdev);
ClearPageUptodate(rdev->sb_page); if (err == 0) {
rdev->sb_loaded = 0; ClearPageUptodate(rdev->sb_page);
err = super_types[mddev->major_version].load_super(rdev, NULL, mddev->minor_version); rdev->sb_loaded = 0;
err = super_types[mddev->major_version].
load_super(rdev, NULL, mddev->minor_version);
}
if (err < 0) { if (err < 0) {
pr_warn("%s: %d Could not reload rdev(%d) err: %d. Restoring old values\n", pr_warn("%s: %d Could not reload rdev(%d) err: %d. Restoring old values\n",
__func__, __LINE__, rdev->desc_nr, err); __func__, __LINE__, rdev->desc_nr, err);
put_page(rdev->sb_page); if (rdev->sb_page)
put_page(rdev->sb_page);
rdev->sb_page = swapout; rdev->sb_page = swapout;
rdev->sb_loaded = 1; rdev->sb_loaded = 1;
return err; return err;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment