Commit df3319a5 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'erofs-for-5.10-rc4-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs

Pull erofs fixes from Gao Xiang:
 "A week ago, Vladimir reported an issue that the kernel log would
  become polluted if the page allocation debug option is enabled. I also
  found this when I cleaned up magical page->mapping and originally
  planned to submit these all for 5.11 but it seems the impact can be
  noticed so submit the fix in advance.

  In addition, nl6720 also reported that atime is empty although EROFS
  has the only one on-disk timestamp as a practical consideration for
  now but it's better to derive it as what we did for the other
  timestamps.

  Summary:

   - fix setting up pcluster improperly for temporary pages

   - derive atime instead of leaving it empty"

* tag 'erofs-for-5.10-rc4-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs:
  erofs: fix setting up pcluster for temporary pages
  erofs: derive atime instead of leaving it empty
parents f8394f23 a30573b3
...@@ -107,11 +107,9 @@ static struct page *erofs_read_inode(struct inode *inode, ...@@ -107,11 +107,9 @@ static struct page *erofs_read_inode(struct inode *inode,
i_gid_write(inode, le32_to_cpu(die->i_gid)); i_gid_write(inode, le32_to_cpu(die->i_gid));
set_nlink(inode, le32_to_cpu(die->i_nlink)); set_nlink(inode, le32_to_cpu(die->i_nlink));
/* ns timestamp */ /* extended inode has its own timestamp */
inode->i_mtime.tv_sec = inode->i_ctime.tv_sec = inode->i_ctime.tv_sec = le64_to_cpu(die->i_ctime);
le64_to_cpu(die->i_ctime); inode->i_ctime.tv_nsec = le32_to_cpu(die->i_ctime_nsec);
inode->i_mtime.tv_nsec = inode->i_ctime.tv_nsec =
le32_to_cpu(die->i_ctime_nsec);
inode->i_size = le64_to_cpu(die->i_size); inode->i_size = le64_to_cpu(die->i_size);
...@@ -149,11 +147,9 @@ static struct page *erofs_read_inode(struct inode *inode, ...@@ -149,11 +147,9 @@ static struct page *erofs_read_inode(struct inode *inode,
i_gid_write(inode, le16_to_cpu(dic->i_gid)); i_gid_write(inode, le16_to_cpu(dic->i_gid));
set_nlink(inode, le16_to_cpu(dic->i_nlink)); set_nlink(inode, le16_to_cpu(dic->i_nlink));
/* use build time to derive all file time */ /* use build time for compact inodes */
inode->i_mtime.tv_sec = inode->i_ctime.tv_sec = inode->i_ctime.tv_sec = sbi->build_time;
sbi->build_time; inode->i_ctime.tv_nsec = sbi->build_time_nsec;
inode->i_mtime.tv_nsec = inode->i_ctime.tv_nsec =
sbi->build_time_nsec;
inode->i_size = le32_to_cpu(dic->i_size); inode->i_size = le32_to_cpu(dic->i_size);
if (erofs_inode_is_data_compressed(vi->datalayout)) if (erofs_inode_is_data_compressed(vi->datalayout))
...@@ -167,6 +163,11 @@ static struct page *erofs_read_inode(struct inode *inode, ...@@ -167,6 +163,11 @@ static struct page *erofs_read_inode(struct inode *inode,
goto err_out; goto err_out;
} }
inode->i_mtime.tv_sec = inode->i_ctime.tv_sec;
inode->i_atime.tv_sec = inode->i_ctime.tv_sec;
inode->i_mtime.tv_nsec = inode->i_ctime.tv_nsec;
inode->i_atime.tv_nsec = inode->i_ctime.tv_nsec;
if (!nblks) if (!nblks)
/* measure inode.i_blocks as generic filesystems */ /* measure inode.i_blocks as generic filesystems */
inode->i_blocks = roundup(inode->i_size, EROFS_BLKSIZ) >> 9; inode->i_blocks = roundup(inode->i_size, EROFS_BLKSIZ) >> 9;
......
...@@ -1078,8 +1078,11 @@ static struct page *pickup_page_for_submission(struct z_erofs_pcluster *pcl, ...@@ -1078,8 +1078,11 @@ static struct page *pickup_page_for_submission(struct z_erofs_pcluster *pcl,
cond_resched(); cond_resched();
goto repeat; goto repeat;
} }
set_page_private(page, (unsigned long)pcl);
SetPagePrivate(page); if (tocache) {
set_page_private(page, (unsigned long)pcl);
SetPagePrivate(page);
}
out: /* the only exit (for tracing and debugging) */ out: /* the only exit (for tracing and debugging) */
return page; return page;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment