Commit f678c890 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'affs-for-6.6-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux

Pull affs updates from David Sterba:
 "Two minor updates for AFFS:

   - reimplement writepage() address space callback on top of
     migrate_folio()

   - fix a build warning, local parameters 'toupper' collide with the
     standard ctype.h name"

* tag 'affs-for-6.6-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux:
  affs: rename local toupper() to fn() to avoid confusion
  affs: remove writepage implementation
parents 3bb156a5 4d4f1468
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include <linux/uio.h> #include <linux/uio.h>
#include <linux/blkdev.h> #include <linux/blkdev.h>
#include <linux/mpage.h>
#include "affs.h" #include "affs.h"
static struct buffer_head *affs_get_extblock_slow(struct inode *inode, u32 ext); static struct buffer_head *affs_get_extblock_slow(struct inode *inode, u32 ext);
...@@ -370,9 +371,10 @@ affs_get_block(struct inode *inode, sector_t block, struct buffer_head *bh_resul ...@@ -370,9 +371,10 @@ affs_get_block(struct inode *inode, sector_t block, struct buffer_head *bh_resul
return -ENOSPC; return -ENOSPC;
} }
static int affs_writepage(struct page *page, struct writeback_control *wbc) static int affs_writepages(struct address_space *mapping,
struct writeback_control *wbc)
{ {
return block_write_full_page(page, affs_get_block, wbc); return mpage_writepages(mapping, wbc, affs_get_block);
} }
static int affs_read_folio(struct file *file, struct folio *folio) static int affs_read_folio(struct file *file, struct folio *folio)
...@@ -456,10 +458,11 @@ const struct address_space_operations affs_aops = { ...@@ -456,10 +458,11 @@ const struct address_space_operations affs_aops = {
.dirty_folio = block_dirty_folio, .dirty_folio = block_dirty_folio,
.invalidate_folio = block_invalidate_folio, .invalidate_folio = block_invalidate_folio,
.read_folio = affs_read_folio, .read_folio = affs_read_folio,
.writepage = affs_writepage, .writepages = affs_writepages,
.write_begin = affs_write_begin, .write_begin = affs_write_begin,
.write_end = affs_write_end, .write_end = affs_write_end,
.direct_IO = affs_direct_IO, .direct_IO = affs_direct_IO,
.migrate_folio = buffer_migrate_folio,
.bmap = _affs_bmap .bmap = _affs_bmap
}; };
...@@ -835,9 +838,10 @@ const struct address_space_operations affs_aops_ofs = { ...@@ -835,9 +838,10 @@ const struct address_space_operations affs_aops_ofs = {
.dirty_folio = block_dirty_folio, .dirty_folio = block_dirty_folio,
.invalidate_folio = block_invalidate_folio, .invalidate_folio = block_invalidate_folio,
.read_folio = affs_read_folio_ofs, .read_folio = affs_read_folio_ofs,
//.writepage = affs_writepage_ofs, //.writepages = affs_writepages_ofs,
.write_begin = affs_write_begin_ofs, .write_begin = affs_write_begin_ofs,
.write_end = affs_write_end_ofs .write_end = affs_write_end_ofs,
.migrate_folio = filemap_migrate_folio,
}; };
/* Free any preallocated blocks. */ /* Free any preallocated blocks. */
......
...@@ -43,7 +43,7 @@ affs_get_toupper(struct super_block *sb) ...@@ -43,7 +43,7 @@ affs_get_toupper(struct super_block *sb)
* Note: the dentry argument is the parent dentry. * Note: the dentry argument is the parent dentry.
*/ */
static inline int static inline int
__affs_hash_dentry(const struct dentry *dentry, struct qstr *qstr, toupper_t toupper, bool notruncate) __affs_hash_dentry(const struct dentry *dentry, struct qstr *qstr, toupper_t fn, bool notruncate)
{ {
const u8 *name = qstr->name; const u8 *name = qstr->name;
unsigned long hash; unsigned long hash;
...@@ -57,7 +57,7 @@ __affs_hash_dentry(const struct dentry *dentry, struct qstr *qstr, toupper_t tou ...@@ -57,7 +57,7 @@ __affs_hash_dentry(const struct dentry *dentry, struct qstr *qstr, toupper_t tou
hash = init_name_hash(dentry); hash = init_name_hash(dentry);
len = min(qstr->len, AFFSNAMEMAX); len = min(qstr->len, AFFSNAMEMAX);
for (; len > 0; name++, len--) for (; len > 0; name++, len--)
hash = partial_name_hash(toupper(*name), hash); hash = partial_name_hash(fn(*name), hash);
qstr->hash = end_name_hash(hash); qstr->hash = end_name_hash(hash);
return 0; return 0;
...@@ -80,7 +80,7 @@ affs_intl_hash_dentry(const struct dentry *dentry, struct qstr *qstr) ...@@ -80,7 +80,7 @@ affs_intl_hash_dentry(const struct dentry *dentry, struct qstr *qstr)
} }
static inline int __affs_compare_dentry(unsigned int len, static inline int __affs_compare_dentry(unsigned int len,
const char *str, const struct qstr *name, toupper_t toupper, const char *str, const struct qstr *name, toupper_t fn,
bool notruncate) bool notruncate)
{ {
const u8 *aname = str; const u8 *aname = str;
...@@ -106,7 +106,7 @@ static inline int __affs_compare_dentry(unsigned int len, ...@@ -106,7 +106,7 @@ static inline int __affs_compare_dentry(unsigned int len,
return 1; return 1;
for (; len > 0; len--) for (; len > 0; len--)
if (toupper(*aname++) != toupper(*bname++)) if (fn(*aname++) != fn(*bname++))
return 1; return 1;
return 0; return 0;
...@@ -135,7 +135,7 @@ affs_intl_compare_dentry(const struct dentry *dentry, ...@@ -135,7 +135,7 @@ affs_intl_compare_dentry(const struct dentry *dentry,
*/ */
static inline int static inline int
affs_match(struct dentry *dentry, const u8 *name2, toupper_t toupper) affs_match(struct dentry *dentry, const u8 *name2, toupper_t fn)
{ {
const u8 *name = dentry->d_name.name; const u8 *name = dentry->d_name.name;
int len = dentry->d_name.len; int len = dentry->d_name.len;
...@@ -148,7 +148,7 @@ affs_match(struct dentry *dentry, const u8 *name2, toupper_t toupper) ...@@ -148,7 +148,7 @@ affs_match(struct dentry *dentry, const u8 *name2, toupper_t toupper)
return 0; return 0;
for (name2++; len > 0; len--) for (name2++; len > 0; len--)
if (toupper(*name++) != toupper(*name2++)) if (fn(*name++) != fn(*name2++))
return 0; return 0;
return 1; return 1;
} }
...@@ -156,12 +156,12 @@ affs_match(struct dentry *dentry, const u8 *name2, toupper_t toupper) ...@@ -156,12 +156,12 @@ affs_match(struct dentry *dentry, const u8 *name2, toupper_t toupper)
int int
affs_hash_name(struct super_block *sb, const u8 *name, unsigned int len) affs_hash_name(struct super_block *sb, const u8 *name, unsigned int len)
{ {
toupper_t toupper = affs_get_toupper(sb); toupper_t fn = affs_get_toupper(sb);
u32 hash; u32 hash;
hash = len = min(len, AFFSNAMEMAX); hash = len = min(len, AFFSNAMEMAX);
for (; len > 0; len--) for (; len > 0; len--)
hash = (hash * 13 + toupper(*name++)) & 0x7ff; hash = (hash * 13 + fn(*name++)) & 0x7ff;
return hash % AFFS_SB(sb)->s_hashsize; return hash % AFFS_SB(sb)->s_hashsize;
} }
...@@ -171,7 +171,7 @@ affs_find_entry(struct inode *dir, struct dentry *dentry) ...@@ -171,7 +171,7 @@ affs_find_entry(struct inode *dir, struct dentry *dentry)
{ {
struct super_block *sb = dir->i_sb; struct super_block *sb = dir->i_sb;
struct buffer_head *bh; struct buffer_head *bh;
toupper_t toupper = affs_get_toupper(sb); toupper_t fn = affs_get_toupper(sb);
u32 key; u32 key;
pr_debug("%s(\"%pd\")\n", __func__, dentry); pr_debug("%s(\"%pd\")\n", __func__, dentry);
...@@ -189,7 +189,7 @@ affs_find_entry(struct inode *dir, struct dentry *dentry) ...@@ -189,7 +189,7 @@ affs_find_entry(struct inode *dir, struct dentry *dentry)
bh = affs_bread(sb, key); bh = affs_bread(sb, key);
if (!bh) if (!bh)
return ERR_PTR(-EIO); return ERR_PTR(-EIO);
if (affs_match(dentry, AFFS_TAIL(sb, bh)->name, toupper)) if (affs_match(dentry, AFFS_TAIL(sb, bh)->name, fn))
return bh; return bh;
key = be32_to_cpu(AFFS_TAIL(sb, bh)->hash_chain); key = be32_to_cpu(AFFS_TAIL(sb, bh)->hash_chain);
} }
......
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