projects
/
platform
/
kernel
/
linux-starfive.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
constify dentry_operations: FAT
[platform/kernel/linux-starfive.git]
/
fs
/
buffer.c
diff --git
a/fs/buffer.c
b/fs/buffer.c
index
9f69741
..
891e1c7
100644
(file)
--- a/
fs/buffer.c
+++ b/
fs/buffer.c
@@
-760,15
+760,9
@@
EXPORT_SYMBOL(mark_buffer_dirty_inode);
* If warn is true, then emit a warning if the page is not uptodate and has
* not been truncated.
*/
* If warn is true, then emit a warning if the page is not uptodate and has
* not been truncated.
*/
-static
int
__set_page_dirty(struct page *page,
+static
void
__set_page_dirty(struct page *page,
struct address_space *mapping, int warn)
{
struct address_space *mapping, int warn)
{
- if (unlikely(!mapping))
- return !TestSetPageDirty(page);
-
- if (TestSetPageDirty(page))
- return 0;
-
spin_lock_irq(&mapping->tree_lock);
if (page->mapping) { /* Race with truncate? */
WARN_ON_ONCE(warn && !PageUptodate(page));
spin_lock_irq(&mapping->tree_lock);
if (page->mapping) { /* Race with truncate? */
WARN_ON_ONCE(warn && !PageUptodate(page));
@@
-785,8
+779,6
@@
static int __set_page_dirty(struct page *page,
}
spin_unlock_irq(&mapping->tree_lock);
__mark_inode_dirty(mapping->host, I_DIRTY_PAGES);
}
spin_unlock_irq(&mapping->tree_lock);
__mark_inode_dirty(mapping->host, I_DIRTY_PAGES);
-
- return 1;
}
/*
}
/*
@@
-816,6
+808,7
@@
static int __set_page_dirty(struct page *page,
*/
int __set_page_dirty_buffers(struct page *page)
{
*/
int __set_page_dirty_buffers(struct page *page)
{
+ int newly_dirty;
struct address_space *mapping = page_mapping(page);
if (unlikely(!mapping))
struct address_space *mapping = page_mapping(page);
if (unlikely(!mapping))
@@
-831,9
+824,12
@@
int __set_page_dirty_buffers(struct page *page)
bh = bh->b_this_page;
} while (bh != head);
}
bh = bh->b_this_page;
} while (bh != head);
}
+ newly_dirty = !TestSetPageDirty(page);
spin_unlock(&mapping->private_lock);
spin_unlock(&mapping->private_lock);
- return __set_page_dirty(page, mapping, 1);
+ if (newly_dirty)
+ __set_page_dirty(page, mapping, 1);
+ return newly_dirty;
}
EXPORT_SYMBOL(__set_page_dirty_buffers);
}
EXPORT_SYMBOL(__set_page_dirty_buffers);
@@
-1262,8
+1258,11
@@
void mark_buffer_dirty(struct buffer_head *bh)
return;
}
return;
}
- if (!test_set_buffer_dirty(bh))
- __set_page_dirty(bh->b_page, page_mapping(bh->b_page), 0);
+ if (!test_set_buffer_dirty(bh)) {
+ struct page *page = bh->b_page;
+ if (!TestSetPageDirty(page))
+ __set_page_dirty(page, page_mapping(page), 0);
+ }
}
/*
}
/*