block: Use PAGE_SECTORS_SHIFT
[linux-2.6-microblaze.git] / block / partitions / core.c
index 8a0ec92..269c865 100644 (file)
@@ -709,21 +709,15 @@ void *read_part_sector(struct parsed_partitions *state, sector_t n, Sector *p)
 
        if (n >= get_capacity(state->disk)) {
                state->access_beyond_eod = true;
-               return NULL;
+               goto out;
        }
 
-       page = read_mapping_page(mapping,
-                       (pgoff_t)(n >> (PAGE_SHIFT - 9)), NULL);
+       page = read_mapping_page(mapping, n >> PAGE_SECTORS_SHIFT, NULL);
        if (IS_ERR(page))
                goto out;
-       if (PageError(page))
-               goto out_put_page;
 
        p->v = page;
-       return (unsigned char *)page_address(page) +
-                       ((n & ((1 << (PAGE_SHIFT - 9)) - 1)) << SECTOR_SHIFT);
-out_put_page:
-       put_page(page);
+       return page_address(page) + offset_in_page(n * SECTOR_SIZE);
 out:
        p->v = NULL;
        return NULL;