projects
/
firefly-linux-kernel-4.4.55.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[PATCH] gxfb: Support flat panel timings
[firefly-linux-kernel-4.4.55.git]
/
drivers
/
md
/
md.c
diff --git
a/drivers/md/md.c
b/drivers/md/md.c
index 57fa64f93e5f1815ce57c398d8f1ae9cc64d32b1..53bd46dba0cbe69d5da6f1affbcfc008145f0dd9 100644
(file)
--- a/
drivers/md/md.c
+++ b/
drivers/md/md.c
@@
-39,10
+39,10
@@
#include <linux/raid/bitmap.h>
#include <linux/sysctl.h>
#include <linux/buffer_head.h> /* for invalidate_bdev */
#include <linux/raid/bitmap.h>
#include <linux/sysctl.h>
#include <linux/buffer_head.h> /* for invalidate_bdev */
-#include <linux/suspend.h>
#include <linux/poll.h>
#include <linux/mutex.h>
#include <linux/ctype.h>
#include <linux/poll.h>
#include <linux/mutex.h>
#include <linux/ctype.h>
+#include <linux/freezer.h>
#include <linux/init.h>
#include <linux/init.h>
@@
-974,12
+974,13
@@
static void super_90_sync(mddev_t *mddev, mdk_rdev_t *rdev)
* version 1 superblock
*/
* version 1 superblock
*/
-static
unsigned int
calc_sb_1_csum(struct mdp_superblock_1 * sb)
+static
__le32
calc_sb_1_csum(struct mdp_superblock_1 * sb)
{
{
- unsigned int disk_csum, csum;
+ __le32 disk_csum;
+ u32 csum;
unsigned long long newcsum;
int size = 256 + le32_to_cpu(sb->max_dev)*2;
unsigned long long newcsum;
int size = 256 + le32_to_cpu(sb->max_dev)*2;
-
unsigned int *isuper = (unsigned int
*)sb;
+
__le32 *isuper = (__le32
*)sb;
int i;
disk_csum = sb->sb_csum;
int i;
disk_csum = sb->sb_csum;
@@
-989,7
+990,7
@@
static unsigned int calc_sb_1_csum(struct mdp_superblock_1 * sb)
newcsum += le32_to_cpu(*isuper++);
if (size == 2)
newcsum += le32_to_cpu(*isuper++);
if (size == 2)
- newcsum += le16_to_cpu(*(
unsigned short
*) isuper);
+ newcsum += le16_to_cpu(*(
__le16
*) isuper);
csum = (newcsum & 0xffffffff) + (newcsum >> 32);
sb->sb_csum = disk_csum;
csum = (newcsum & 0xffffffff) + (newcsum >> 32);
sb->sb_csum = disk_csum;
@@
-1106,7
+1107,7
@@
static int super_1_load(mdk_rdev_t *rdev, mdk_rdev_t *refdev, int minor_version)
if (le32_to_cpu(sb->chunksize))
rdev->size &= ~((sector_t)le32_to_cpu(sb->chunksize)/2 - 1);
if (le32_to_cpu(sb->chunksize))
rdev->size &= ~((sector_t)le32_to_cpu(sb->chunksize)/2 - 1);
- if (le
32
_to_cpu(sb->size) > rdev->size*2)
+ if (le
64
_to_cpu(sb->size) > rdev->size*2)
return -EINVAL;
return ret;
}
return -EINVAL;
return ret;
}
@@
-1228,7
+1229,7
@@
static void super_1_sync(mddev_t *mddev, mdk_rdev_t *rdev)
else
sb->resync_offset = cpu_to_le64(0);
else
sb->resync_offset = cpu_to_le64(0);
- sb->cnt_corrected_read =
atomic_read(&rdev->corrected_errors
);
+ sb->cnt_corrected_read =
cpu_to_le32(atomic_read(&rdev->corrected_errors)
);
sb->raid_disks = cpu_to_le32(mddev->raid_disks);
sb->size = cpu_to_le64(mddev->size<<1);
sb->raid_disks = cpu_to_le32(mddev->raid_disks);
sb->size = cpu_to_le64(mddev->size<<1);
@@
-1412,7
+1413,7
@@
static int lock_rdev(mdk_rdev_t *rdev, dev_t dev)
struct block_device *bdev;
char b[BDEVNAME_SIZE];
struct block_device *bdev;
char b[BDEVNAME_SIZE];
- bdev = open_
partition_
by_devnum(dev, FMODE_READ|FMODE_WRITE);
+ bdev = open_by_devnum(dev, FMODE_READ|FMODE_WRITE);
if (IS_ERR(bdev)) {
printk(KERN_ERR "md: could not open %s.\n",
__bdevname(dev, b));
if (IS_ERR(bdev)) {
printk(KERN_ERR "md: could not open %s.\n",
__bdevname(dev, b));
@@
-1422,7
+1423,7
@@
static int lock_rdev(mdk_rdev_t *rdev, dev_t dev)
if (err) {
printk(KERN_ERR "md: could not bd_claim %s.\n",
bdevname(bdev, b));
if (err) {
printk(KERN_ERR "md: could not bd_claim %s.\n",
bdevname(bdev, b));
- blkdev_put
_partition
(bdev);
+ blkdev_put(bdev);
return err;
}
rdev->bdev = bdev;
return err;
}
rdev->bdev = bdev;
@@
-1436,7
+1437,7
@@
static void unlock_rdev(mdk_rdev_t *rdev)
if (!bdev)
MD_BUG();
bd_release(bdev);
if (!bdev)
MD_BUG();
bd_release(bdev);
- blkdev_put
_partition
(bdev);
+ blkdev_put(bdev);
}
void md_autodetect_dev(dev_t dev);
}
void md_autodetect_dev(dev_t dev);
@@
-2002,6
+2003,7
@@
static mdk_rdev_t *md_import_device(dev_t newdev, int super_format, int super_mi
kobject_init(&rdev->kobj);
rdev->desc_nr = -1;
kobject_init(&rdev->kobj);
rdev->desc_nr = -1;
+ rdev->saved_raid_disk = -1;
rdev->flags = 0;
rdev->data_offset = 0;
rdev->sb_events = 0;
rdev->flags = 0;
rdev->data_offset = 0;
rdev->sb_events = 0;
@@
-3198,6
+3200,7
@@
static int do_md_run(mddev_t * mddev)
mddev->changed = 1;
md_new_event(mddev);
mddev->changed = 1;
md_new_event(mddev);
+ kobject_uevent(&mddev->gendisk->kobj, KOBJ_CHANGE);
return 0;
}
return 0;
}
@@
-4043,11
+4046,8
@@
static int update_size(mddev_t *mddev, unsigned long size)
return -EBUSY;
ITERATE_RDEV(mddev,rdev,tmp) {
sector_t avail;
return -EBUSY;
ITERATE_RDEV(mddev,rdev,tmp) {
sector_t avail;
- if (rdev->sb_offset > rdev->data_offset)
- avail = (rdev->sb_offset*2) - rdev->data_offset;
- else
- avail = get_capacity(rdev->bdev->bd_disk)
- - rdev->data_offset;
+ avail = rdev->size * 2;
+
if (fit && (size == 0 || size > avail/2))
size = avail/2;
if (avail < ((sector_t)size << 1))
if (fit && (size == 0 || size > avail/2))
size = avail/2;
if (avail < ((sector_t)size << 1))
@@
-4423,7
+4423,7
@@
static int md_open(struct inode *inode, struct file *file)
mddev_t *mddev = inode->i_bdev->bd_disk->private_data;
int err;
mddev_t *mddev = inode->i_bdev->bd_disk->private_data;
int err;
- if ((err = m
ddev_lock(mddev
)))
+ if ((err = m
utex_lock_interruptible_nested(&mddev->reconfig_mutex, 1
)))
goto out;
err = 0;
goto out;
err = 0;
@@
-4486,6
+4486,7
@@
static int md_thread(void * arg)
* many dirty RAID5 blocks.
*/
* many dirty RAID5 blocks.
*/
+ current->flags |= PF_NOFREEZE;
allow_signal(SIGKILL);
while (!kthread_should_stop()) {
allow_signal(SIGKILL);
while (!kthread_should_stop()) {
@@
-4502,7
+4503,6
@@
static int md_thread(void * arg)
test_bit(THREAD_WAKEUP, &thread->flags)
|| kthread_should_stop(),
thread->timeout);
test_bit(THREAD_WAKEUP, &thread->flags)
|| kthread_should_stop(),
thread->timeout);
- try_to_freeze();
clear_bit(THREAD_WAKEUP, &thread->flags);
clear_bit(THREAD_WAKEUP, &thread->flags);
@@
-4846,8
+4846,8
@@
static int md_seq_show(struct seq_file *seq, void *v)
chunk_kb ? "KB" : "B");
if (bitmap->file) {
seq_printf(seq, ", file: ");
chunk_kb ? "KB" : "B");
if (bitmap->file) {
seq_printf(seq, ", file: ");
- seq_path(seq, bitmap->file->f_
vfs
mnt,
- bitmap->file->f_dentry," \t\n");
+ seq_path(seq, bitmap->file->f_
path.
mnt,
+ bitmap->file->f_
path.
dentry," \t\n");
}
seq_printf(seq, "\n");
}
seq_printf(seq, "\n");
@@
-4912,6
+4912,7
@@
static unsigned int mdstat_poll(struct file *filp, poll_table *wait)
}
static struct file_operations md_seq_fops = {
}
static struct file_operations md_seq_fops = {
+ .owner = THIS_MODULE,
.open = md_seq_open,
.read = seq_read,
.llseek = seq_lseek,
.open = md_seq_open,
.read = seq_read,
.llseek = seq_lseek,