All of lore.kernel.org
 help / color / mirror / Atom feed
From: Suzuki Kp <suzuki@in.ibm.com>
To: lkml <linux-kernel@vger.kernel.org>, linux-fsdevel@vger.kernel.org
Cc: Andrew Morton <akpm@osdl.org>
Subject: [RFC] PATCH to fix rescan_partitions to return errors properly
Date: Tue, 03 Oct 2006 18:00:36 -0700	[thread overview]
Message-ID: <452307B4.3050006@in.ibm.com> (raw)

[resending]

Hi,

Currently the rescan_partition returns 0 (success), even if it is unable
to rescan the partition information ( may be due to disks offline, I/O
error reading the table or unknown partition ). This would make ioctl()
calls succeed for BLKRRPART requests even if partitions were not scanned
properly, which is not a good thing to do.

Attached here is patch to fix the issue. The patch makes
rescan_partition to return -EINVAL for unknown partitions and -EIO for
disk I/O errors ( or when disks are offline ).

Comments ?

Thanks,

Suzuki K P <suzuki@in.ibm.com>
Linux Technology Centre,
IBM Systems & Technology Labs.




* Fix recscan_partitions to return error when the partition is unknown
or there is an I/O error reading the partition information.


Signed Off by : Suzuki K P <suzuki@in.ibm.com>

Index: linux-2.6.18/fs/partitions/check.c
===================================================================
--- linux-2.6.18.orig/fs/partitions/check.c     2006-09-26
04:41:55.000000000 +0530
+++ linux-2.6.18/fs/partitions/check.c  2006-09-26 05:09:29.000000000 +0530
@@ -177,7 +177,7 @@
         else if (warn_no_part)
                 printk(" unable to read partition table\n");
         kfree(state);
-       return NULL;
+       return ERR_PTR(res);
  }

  /*
@@ -458,8 +458,13 @@
                 delete_partition(disk, p);
         if (disk->fops->revalidate_disk)
                 disk->fops->revalidate_disk(disk);
-       if (!get_capacity(disk) || !(state = check_partition(disk, bdev)))
-               return 0;
+       if (!get_capacity(disk))
+               return -EINVAL;
+       state = check_partition(disk, bdev);
+       if (!state)
+               return -EINVAL;
+       if (IS_ERR(state))
+               return -EIO;
         for (p = 1; p < state->limit; p++) {
                 sector_t size = state->parts[p].size;
                 sector_t from = state->parts[p].from;




             reply	other threads:[~2006-10-04  1:00 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-10-04  1:00 Suzuki Kp [this message]
2006-10-04 13:09 ` [RFC] PATCH to fix rescan_partitions to return errors properly Erik Mouw
2006-10-04 16:50   ` Suzuki Kp
2006-10-04 17:08     ` Erik Mouw
2006-10-04 17:37       ` Suzuki Kp
2006-10-05 10:40         ` Erik Mouw
2006-10-05 20:32           ` [RFC] PATCH to fix rescan_partitions to return errors properly - take 2 Suzuki Kp
2006-10-05 22:07             ` Andrew Morton
2006-10-06 12:53             ` Erik Mouw
2006-10-06 17:43               ` Suzuki K P
2006-10-06 21:07                 ` Erik Mouw
2006-10-07  1:46                   ` [RFC] Fix check_partition routines ( was Re: [RFC] PATCH to fix rescan_partitions to return errors properly - take 2) Suzuki K P
2006-10-07  2:45                     ` Andrew Morton

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=452307B4.3050006@in.ibm.com \
    --to=suzuki@in.ibm.com \
    --cc=akpm@osdl.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.