]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/block/rd.c
[S390] channel measurement fix.
[linux-2.6-omap-h63xx.git] / drivers / block / rd.c
index ffd6abd6d5a045f40dd98a92486e1d21ea29e81c..0378da04cfa23c0c38b967a0162aee3563119171 100644 (file)
@@ -186,11 +186,12 @@ static int ramdisk_writepages(struct address_space *mapping,
  */
 static int ramdisk_set_page_dirty(struct page *page)
 {
-       SetPageDirty(page);
+       if (!TestSetPageDirty(page))
+               return 1;
        return 0;
 }
 
-static struct address_space_operations ramdisk_aops = {
+static const struct address_space_operations ramdisk_aops = {
        .readpage       = ramdisk_readpage,
        .prepare_write  = ramdisk_prepare_write,
        .commit_write   = ramdisk_commit_write,
@@ -310,12 +311,12 @@ static int rd_ioctl(struct inode *inode, struct file *file,
         * cache
         */
        error = -EBUSY;
-       down(&bdev->bd_sem);
+       mutex_lock(&bdev->bd_mutex);
        if (bdev->bd_openers <= 2) {
                truncate_inode_pages(bdev->bd_inode->i_mapping, 0);
                error = 0;
        }
-       up(&bdev->bd_sem);
+       mutex_unlock(&bdev->bd_mutex);
        return error;
 }