btrfs: use offset_in_page instead of open-coding it
Constructs like 'var & (PAGE_SIZE - 1)' or 'var & ~PAGE_MASK' can denote an offset into a page. So replace them by the offset_in_page() macro instead of open-coding it if they're not used as an alignment check. Reviewed-by: Nikolay Borisov <nborisov@suse.com> Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:

committed by
David Sterba

parent
cb5583dd52
commit
7073017aeb
@@ -2585,7 +2585,7 @@ readpage_ok:
|
||||
unsigned off;
|
||||
|
||||
/* Zero out the end if this page straddles i_size */
|
||||
off = i_size & (PAGE_SIZE-1);
|
||||
off = offset_in_page(i_size);
|
||||
if (page->index == end_index && off)
|
||||
zero_user_segment(page, off, PAGE_SIZE);
|
||||
SetPageUptodate(page);
|
||||
@@ -2888,7 +2888,7 @@ static int __do_readpage(struct extent_io_tree *tree,
|
||||
|
||||
if (page->index == last_byte >> PAGE_SHIFT) {
|
||||
char *userpage;
|
||||
size_t zero_offset = last_byte & (PAGE_SIZE - 1);
|
||||
size_t zero_offset = offset_in_page(last_byte);
|
||||
|
||||
if (zero_offset) {
|
||||
iosize = PAGE_SIZE - zero_offset;
|
||||
@@ -3432,7 +3432,7 @@ static int __extent_writepage(struct page *page, struct writeback_control *wbc,
|
||||
|
||||
ClearPageError(page);
|
||||
|
||||
pg_offset = i_size & (PAGE_SIZE - 1);
|
||||
pg_offset = offset_in_page(i_size);
|
||||
if (page->index > end_index ||
|
||||
(page->index == end_index && !pg_offset)) {
|
||||
page->mapping->a_ops->invalidatepage(page, 0, PAGE_SIZE);
|
||||
@@ -5307,7 +5307,7 @@ void read_extent_buffer(const struct extent_buffer *eb, void *dstv,
|
||||
struct page *page;
|
||||
char *kaddr;
|
||||
char *dst = (char *)dstv;
|
||||
size_t start_offset = eb->start & ((u64)PAGE_SIZE - 1);
|
||||
size_t start_offset = offset_in_page(eb->start);
|
||||
unsigned long i = (start_offset + start) >> PAGE_SHIFT;
|
||||
|
||||
if (start + len > eb->len) {
|
||||
@@ -5317,7 +5317,7 @@ void read_extent_buffer(const struct extent_buffer *eb, void *dstv,
|
||||
return;
|
||||
}
|
||||
|
||||
offset = (start_offset + start) & (PAGE_SIZE - 1);
|
||||
offset = offset_in_page(start_offset + start);
|
||||
|
||||
while (len > 0) {
|
||||
page = eb->pages[i];
|
||||
@@ -5342,14 +5342,14 @@ int read_extent_buffer_to_user(const struct extent_buffer *eb,
|
||||
struct page *page;
|
||||
char *kaddr;
|
||||
char __user *dst = (char __user *)dstv;
|
||||
size_t start_offset = eb->start & ((u64)PAGE_SIZE - 1);
|
||||
size_t start_offset = offset_in_page(eb->start);
|
||||
unsigned long i = (start_offset + start) >> PAGE_SHIFT;
|
||||
int ret = 0;
|
||||
|
||||
WARN_ON(start > eb->len);
|
||||
WARN_ON(start + len > eb->start + eb->len);
|
||||
|
||||
offset = (start_offset + start) & (PAGE_SIZE - 1);
|
||||
offset = offset_in_page(start_offset + start);
|
||||
|
||||
while (len > 0) {
|
||||
page = eb->pages[i];
|
||||
@@ -5383,7 +5383,7 @@ int map_private_extent_buffer(const struct extent_buffer *eb,
|
||||
size_t offset;
|
||||
char *kaddr;
|
||||
struct page *p;
|
||||
size_t start_offset = eb->start & ((u64)PAGE_SIZE - 1);
|
||||
size_t start_offset = offset_in_page(eb->start);
|
||||
unsigned long i = (start_offset + start) >> PAGE_SHIFT;
|
||||
unsigned long end_i = (start_offset + start + min_len - 1) >>
|
||||
PAGE_SHIFT;
|
||||
@@ -5420,14 +5420,14 @@ int memcmp_extent_buffer(const struct extent_buffer *eb, const void *ptrv,
|
||||
struct page *page;
|
||||
char *kaddr;
|
||||
char *ptr = (char *)ptrv;
|
||||
size_t start_offset = eb->start & ((u64)PAGE_SIZE - 1);
|
||||
size_t start_offset = offset_in_page(eb->start);
|
||||
unsigned long i = (start_offset + start) >> PAGE_SHIFT;
|
||||
int ret = 0;
|
||||
|
||||
WARN_ON(start > eb->len);
|
||||
WARN_ON(start + len > eb->start + eb->len);
|
||||
|
||||
offset = (start_offset + start) & (PAGE_SIZE - 1);
|
||||
offset = offset_in_page(start_offset + start);
|
||||
|
||||
while (len > 0) {
|
||||
page = eb->pages[i];
|
||||
@@ -5476,13 +5476,13 @@ void write_extent_buffer(struct extent_buffer *eb, const void *srcv,
|
||||
struct page *page;
|
||||
char *kaddr;
|
||||
char *src = (char *)srcv;
|
||||
size_t start_offset = eb->start & ((u64)PAGE_SIZE - 1);
|
||||
size_t start_offset = offset_in_page(eb->start);
|
||||
unsigned long i = (start_offset + start) >> PAGE_SHIFT;
|
||||
|
||||
WARN_ON(start > eb->len);
|
||||
WARN_ON(start + len > eb->start + eb->len);
|
||||
|
||||
offset = (start_offset + start) & (PAGE_SIZE - 1);
|
||||
offset = offset_in_page(start_offset + start);
|
||||
|
||||
while (len > 0) {
|
||||
page = eb->pages[i];
|
||||
@@ -5506,13 +5506,13 @@ void memzero_extent_buffer(struct extent_buffer *eb, unsigned long start,
|
||||
size_t offset;
|
||||
struct page *page;
|
||||
char *kaddr;
|
||||
size_t start_offset = eb->start & ((u64)PAGE_SIZE - 1);
|
||||
size_t start_offset = offset_in_page(eb->start);
|
||||
unsigned long i = (start_offset + start) >> PAGE_SHIFT;
|
||||
|
||||
WARN_ON(start > eb->len);
|
||||
WARN_ON(start + len > eb->start + eb->len);
|
||||
|
||||
offset = (start_offset + start) & (PAGE_SIZE - 1);
|
||||
offset = offset_in_page(start_offset + start);
|
||||
|
||||
while (len > 0) {
|
||||
page = eb->pages[i];
|
||||
@@ -5551,13 +5551,12 @@ void copy_extent_buffer(struct extent_buffer *dst, struct extent_buffer *src,
|
||||
size_t offset;
|
||||
struct page *page;
|
||||
char *kaddr;
|
||||
size_t start_offset = dst->start & ((u64)PAGE_SIZE - 1);
|
||||
size_t start_offset = offset_in_page(dst->start);
|
||||
unsigned long i = (start_offset + dst_offset) >> PAGE_SHIFT;
|
||||
|
||||
WARN_ON(src->len != dst_len);
|
||||
|
||||
offset = (start_offset + dst_offset) &
|
||||
(PAGE_SIZE - 1);
|
||||
offset = offset_in_page(start_offset + dst_offset);
|
||||
|
||||
while (len > 0) {
|
||||
page = dst->pages[i];
|
||||
@@ -5593,7 +5592,7 @@ static inline void eb_bitmap_offset(struct extent_buffer *eb,
|
||||
unsigned long *page_index,
|
||||
size_t *page_offset)
|
||||
{
|
||||
size_t start_offset = eb->start & ((u64)PAGE_SIZE - 1);
|
||||
size_t start_offset = offset_in_page(eb->start);
|
||||
size_t byte_offset = BIT_BYTE(nr);
|
||||
size_t offset;
|
||||
|
||||
@@ -5605,7 +5604,7 @@ static inline void eb_bitmap_offset(struct extent_buffer *eb,
|
||||
offset = start_offset + start + byte_offset;
|
||||
|
||||
*page_index = offset >> PAGE_SHIFT;
|
||||
*page_offset = offset & (PAGE_SIZE - 1);
|
||||
*page_offset = offset_in_page(offset);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -5747,7 +5746,7 @@ void memcpy_extent_buffer(struct extent_buffer *dst, unsigned long dst_offset,
|
||||
size_t cur;
|
||||
size_t dst_off_in_page;
|
||||
size_t src_off_in_page;
|
||||
size_t start_offset = dst->start & ((u64)PAGE_SIZE - 1);
|
||||
size_t start_offset = offset_in_page(dst->start);
|
||||
unsigned long dst_i;
|
||||
unsigned long src_i;
|
||||
|
||||
@@ -5765,10 +5764,8 @@ void memcpy_extent_buffer(struct extent_buffer *dst, unsigned long dst_offset,
|
||||
}
|
||||
|
||||
while (len > 0) {
|
||||
dst_off_in_page = (start_offset + dst_offset) &
|
||||
(PAGE_SIZE - 1);
|
||||
src_off_in_page = (start_offset + src_offset) &
|
||||
(PAGE_SIZE - 1);
|
||||
dst_off_in_page = offset_in_page(start_offset + dst_offset);
|
||||
src_off_in_page = offset_in_page(start_offset + src_offset);
|
||||
|
||||
dst_i = (start_offset + dst_offset) >> PAGE_SHIFT;
|
||||
src_i = (start_offset + src_offset) >> PAGE_SHIFT;
|
||||
@@ -5796,7 +5793,7 @@ void memmove_extent_buffer(struct extent_buffer *dst, unsigned long dst_offset,
|
||||
size_t src_off_in_page;
|
||||
unsigned long dst_end = dst_offset + len - 1;
|
||||
unsigned long src_end = src_offset + len - 1;
|
||||
size_t start_offset = dst->start & ((u64)PAGE_SIZE - 1);
|
||||
size_t start_offset = offset_in_page(dst->start);
|
||||
unsigned long dst_i;
|
||||
unsigned long src_i;
|
||||
|
||||
@@ -5820,10 +5817,8 @@ void memmove_extent_buffer(struct extent_buffer *dst, unsigned long dst_offset,
|
||||
dst_i = (start_offset + dst_end) >> PAGE_SHIFT;
|
||||
src_i = (start_offset + src_end) >> PAGE_SHIFT;
|
||||
|
||||
dst_off_in_page = (start_offset + dst_end) &
|
||||
(PAGE_SIZE - 1);
|
||||
src_off_in_page = (start_offset + src_end) &
|
||||
(PAGE_SIZE - 1);
|
||||
dst_off_in_page = offset_in_page(start_offset + dst_end);
|
||||
src_off_in_page = offset_in_page(start_offset + src_end);
|
||||
|
||||
cur = min_t(unsigned long, len, src_off_in_page + 1);
|
||||
cur = min(cur, dst_off_in_page + 1);
|
||||
|
Reference in New Issue
Block a user