git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git]
/
drivers
/
block
/
rd.c
diff --git
a/drivers/block/rd.c
b/drivers/block/rd.c
index
145c1fb
..
940bfd7
100644
(file)
--- a/
drivers/block/rd.c
+++ b/
drivers/block/rd.c
@@
-154,7
+154,7
@@
static int ramdisk_commit_write(struct file *file, struct page *page,
/*
* ->writepage to the the blockdev's mapping has to redirty the page so that the
/*
* ->writepage to the the blockdev's mapping has to redirty the page so that the
- * VM doesn't go and steal it. We return WRITEPAGE_ACTIVATE so that the VM
+ * VM doesn't go and steal it. We return
AOP_
WRITEPAGE_ACTIVATE so that the VM
* won't try to (pointlessly) write the page again for a while.
*
* Really, these pages should not be on the LRU at all.
* won't try to (pointlessly) write the page again for a while.
*
* Really, these pages should not be on the LRU at all.
@@
-165,7
+165,7
@@
static int ramdisk_writepage(struct page *page, struct writeback_control *wbc)
make_page_uptodate(page);
SetPageDirty(page);
if (wbc->for_reclaim)
make_page_uptodate(page);
SetPageDirty(page);
if (wbc->for_reclaim)
- return WRITEPAGE_ACTIVATE;
+ return
AOP_
WRITEPAGE_ACTIVATE;
unlock_page(page);
return 0;
}
unlock_page(page);
return 0;
}
@@
-186,7
+186,8
@@
static int ramdisk_writepages(struct address_space *mapping,
*/
static int ramdisk_set_page_dirty(struct page *page)
{
*/
static int ramdisk_set_page_dirty(struct page *page)
{
- SetPageDirty(page);
+ if (!TestSetPageDirty(page))
+ return 1;
return 0;
}
return 0;
}
@@
-310,12
+311,12
@@
static int rd_ioctl(struct inode *inode, struct file *file,
* cache
*/
error = -EBUSY;
* 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;
}
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;
}
return error;
}
@@
-348,7
+349,7
@@
static int rd_open(struct inode *inode, struct file *filp)
struct block_device *bdev = inode->i_bdev;
struct address_space *mapping;
unsigned bsize;
struct block_device *bdev = inode->i_bdev;
struct address_space *mapping;
unsigned bsize;
-
in
t gfp_mask;
+
gfp_
t gfp_mask;
inode = igrab(bdev->bd_inode);
rd_bdev[unit] = bdev;
inode = igrab(bdev->bd_inode);
rd_bdev[unit] = bdev;