Re: [PATCH] nilfs2: standardize the inode number type to u64

Viacheslav Dubeyko <[email protected]>
Newsgroups org.kernel.vger.linux-nilfs,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
On Tue, 2026-08-11 at 02:48 +0900, Ryusuke Konishi wrote:
> Variables handling inode numbers - such as the 'i_ino' member of the
> inode structure - have been converted to 'u64' within the kernel to
> ensure consistency.  However, some parts of the nilfs2 implementation
> still use 'ino_t' or 'unsigned long' - both of which are
> architecture-dependent types - to handle inode numbers.
> 
> Replace those remaining instances of 'ino_t' or 'unsigned long' with
> 'u64'.
> 
> Signed-off-by: Ryusuke Konishi <[email protected]>
> ---
> Hi Viacheslav,
> 
> Please apply this for the next cycle.
> 
> Following the treewide conversion of inode numbers to 64-bit, this
> cleans up the remaining architecture-dependent types in the nilfs2
> implementation, standardizing them to 'u64'.
> 
> Thanks,
> Ryusuke Konishi
> 
>  fs/nilfs2/dir.c      | 11 +++++------
>  fs/nilfs2/ifile.c    | 13 ++++++-------
>  fs/nilfs2/ifile.h    | 10 ++++++----
>  fs/nilfs2/inode.c    | 24 +++++++++++-------------
>  fs/nilfs2/ioctl.c    |  2 +-
>  fs/nilfs2/namei.c    |  6 +++---
>  fs/nilfs2/nilfs.h    | 15 +++++++--------
>  fs/nilfs2/page.c     |  9 ++++-----
>  fs/nilfs2/recovery.c |  4 ++--
>  fs/nilfs2/segment.c  |  2 +-
>  10 files changed, 46 insertions(+), 50 deletions(-)
> 
> diff --git a/fs/nilfs2/dir.c b/fs/nilfs2/dir.c
> index 3653db5cdb65..8b53802b6ebd 100644
> --- a/fs/nilfs2/dir.c
> +++ b/fs/nilfs2/dir.c
> @@ -169,17 +169,16 @@ static bool nilfs_check_folio(struct folio
> *folio, char *kaddr)
>  	error = "disallowed inode number";
>  bad_entry:
>  	nilfs_error(sb,
> -		    "bad entry in directory #%llu: %s - offset=%lu,
> inode=%lu, rec_len=%zd, name_len=%d",
> +		    "bad entry in directory #%llu: %s - offset=%lu,
> inode=%llu, rec_len=%zd, name_len=%d",
>  		    dir->i_ino, error, (folio->index << PAGE_SHIFT)
> + offs,
> -		    (unsigned long)le64_to_cpu(p->inode),
> -		    rec_len, p->name_len);
> +		    le64_to_cpu(p->inode), rec_len, p->name_len);
>  	goto fail;
>  Eend:
>  	p = (struct nilfs_dir_entry *)(kaddr + offs);
>  	nilfs_error(sb,
> -		    "entry in directory #%llu spans the page
> boundary offset=%lu, inode=%lu",
> +		    "entry in directory #%llu spans the page
> boundary offset=%lu, inode=%llu",
>  		    dir->i_ino, (folio->index << PAGE_SHIFT) + offs,
> -		    (unsigned long)le64_to_cpu(p->inode));
> +		    le64_to_cpu(p->inode));
>  fail:
>  	return false;
>  }
> @@ -387,7 +386,7 @@ struct nilfs_dir_entry *nilfs_dotdot(struct inode
> *dir, struct folio **foliop)
>  	return NULL;
>  }
>  
> -int nilfs_inode_by_name(struct inode *dir, const struct qstr *qstr,
> ino_t *ino)
> +int nilfs_inode_by_name(struct inode *dir, const struct qstr *qstr,
> u64 *ino)
>  {
>  	struct nilfs_dir_entry *de;
>  	struct folio *folio;
> diff --git a/fs/nilfs2/ifile.c b/fs/nilfs2/ifile.c
> index 99eb8a59009e..c99e1e6356ae 100644
> --- a/fs/nilfs2/ifile.c
> +++ b/fs/nilfs2/ifile.c
> @@ -49,7 +49,7 @@ static inline struct nilfs_ifile_info
> *NILFS_IFILE_I(struct inode *ifile)
>   * * %-ENOMEM	- Insufficient memory available.
>   * * %-ENOSPC	- No inode left.
>   */
> -int nilfs_ifile_create_inode(struct inode *ifile, ino_t *out_ino,
> +int nilfs_ifile_create_inode(struct inode *ifile, u64 *out_ino,
>  			     struct buffer_head **out_bh)
>  {
>  	struct nilfs_palloc_req req;
> @@ -72,7 +72,7 @@ int nilfs_ifile_create_inode(struct inode *ifile,
> ino_t *out_ino,
>  	nilfs_palloc_commit_alloc_entry(ifile, &req);
>  	mark_buffer_dirty(req.pr_entry_bh);
>  	nilfs_mdt_mark_dirty(ifile);
> -	*out_ino = (ino_t)req.pr_entry_nr;
> +	*out_ino = req.pr_entry_nr;
>  	*out_bh = req.pr_entry_bh;
>  	return 0;
>  }
> @@ -88,7 +88,7 @@ int nilfs_ifile_create_inode(struct inode *ifile,
> ino_t *out_ino,
>   * * %-ENOENT	- Inode number unallocated.
>   * * %-ENOMEM	- Insufficient memory available.
>   */
> -int nilfs_ifile_delete_inode(struct inode *ifile, ino_t ino)
> +int nilfs_ifile_delete_inode(struct inode *ifile, u64 ino)
>  {
>  	struct nilfs_palloc_req req = {
>  		.pr_entry_nr = ino, .pr_entry_bh = NULL
> @@ -123,21 +123,20 @@ int nilfs_ifile_delete_inode(struct inode
> *ifile, ino_t ino)
>  	return 0;
>  }
>  
> -int nilfs_ifile_get_inode_block(struct inode *ifile, ino_t ino,
> +int nilfs_ifile_get_inode_block(struct inode *ifile, u64 ino,
>  				struct buffer_head **out_bh)
>  {
>  	struct super_block *sb = ifile->i_sb;
>  	int err;
>  
>  	if (unlikely(!NILFS_VALID_INODE(sb, ino))) {
> -		nilfs_error(sb, "bad inode number: %lu", (unsigned
> long)ino);
> +		nilfs_error(sb, "bad inode number: %llu", ino);
>  		return -EINVAL;
>  	}
>  
>  	err = nilfs_palloc_get_entry_block(ifile, ino, 0, out_bh);
>  	if (unlikely(err))
> -		nilfs_warn(sb, "error %d reading inode: ino=%lu",
> -			   err, (unsigned long)ino);
> +		nilfs_warn(sb, "error %d reading inode: ino=%llu",
> err, ino);
>  	return err;
>  }
>  
> diff --git a/fs/nilfs2/ifile.h b/fs/nilfs2/ifile.h
> index 5d116a566d9e..d38a46f5ae41 100644
> --- a/fs/nilfs2/ifile.h
> +++ b/fs/nilfs2/ifile.h
> @@ -19,7 +19,7 @@
>  
>  
>  static inline struct nilfs_inode *
> -nilfs_ifile_map_inode(struct inode *ifile, ino_t ino, struct
> buffer_head *ibh)
> +nilfs_ifile_map_inode(struct inode *ifile, u64 ino, struct
> buffer_head *ibh)
>  {
>  	size_t __offset_in_folio = nilfs_palloc_entry_offset(ifile,
> ino, ibh);
>  
> @@ -31,9 +31,11 @@ static inline void nilfs_ifile_unmap_inode(struct
> nilfs_inode *raw_inode)
>  	kunmap_local(raw_inode);
>  }
>  
> -int nilfs_ifile_create_inode(struct inode *, ino_t *, struct
> buffer_head **);
> -int nilfs_ifile_delete_inode(struct inode *, ino_t);
> -int nilfs_ifile_get_inode_block(struct inode *, ino_t, struct
> buffer_head **);
> +int nilfs_ifile_create_inode(struct inode *ifile, u64 *out_ino,
> +			struct buffer_head **out_bh);
> +int nilfs_ifile_delete_inode(struct inode *ifile, u64 ino);
> +int nilfs_ifile_get_inode_block(struct inode *ifile, u64 ino,
> +				struct buffer_head **out_bh);
>  
>  int nilfs_ifile_count_free_inodes(struct inode *, u64 *, u64 *);
>  
> diff --git a/fs/nilfs2/inode.c b/fs/nilfs2/inode.c
> index 51f7e125a311..34e6096069ad 100644
> --- a/fs/nilfs2/inode.c
> +++ b/fs/nilfs2/inode.c
> @@ -287,8 +287,7 @@ const struct address_space_operations
> nilfs_buffer_cache_aops = {
>  };
>  
>  static int nilfs_insert_inode_locked(struct inode *inode,
> -				     struct nilfs_root *root,
> -				     unsigned long ino)
> +				struct nilfs_root *root, u64 ino)
>  {
>  	struct nilfs_iget_args args = {
>  		.ino = ino, .root = root, .cno = 0, .type =
> NILFS_I_TYPE_NORMAL
> @@ -305,7 +304,7 @@ struct inode *nilfs_new_inode(struct inode *dir,
> umode_t mode)
>  	struct nilfs_root *root;
>  	struct buffer_head *bh;
>  	int err = -ENOMEM;
> -	ino_t ino;
> +	u64 ino;
>  
>  	inode = new_inode(sb);
>  	if (unlikely(!inode))
> @@ -443,7 +442,7 @@ int nilfs_read_inode_common(struct inode *inode,
>  }
>  
>  static int __nilfs_read_inode(struct super_block *sb,
> -			      struct nilfs_root *root, unsigned long
> ino,
> +			      struct nilfs_root *root, u64 ino,
>  			      struct inode *inode)
>  {
>  	struct the_nilfs *nilfs = sb->s_fs_info;
> @@ -482,8 +481,8 @@ static int __nilfs_read_inode(struct super_block
> *sb,
>  			huge_decode_dev(le64_to_cpu(raw_inode-
> >i_device_code)));
>  	} else {
>  		nilfs_error(sb,
> -			    "invalid file type bits in mode 0%o for
> inode %lu",
> -			    inode->i_mode, ino);
> +			"invalid file type bits in mode 0%o for
> inode %llu",
> +			inode->i_mode, ino);
>  		err = -EIO;
>  		goto failed_unmap;
>  	}
> @@ -533,7 +532,7 @@ static int nilfs_iget_set(struct inode *inode,
> void *opaque)
>  }
>  
>  struct inode *nilfs_ilookup(struct super_block *sb, struct
> nilfs_root *root,
> -			    unsigned long ino)
> +			    u64 ino)
>  {
>  	struct nilfs_iget_args args = {
>  		.ino = ino, .root = root, .cno = 0, .type =
> NILFS_I_TYPE_NORMAL
> @@ -542,8 +541,8 @@ struct inode *nilfs_ilookup(struct super_block
> *sb, struct nilfs_root *root,
>  	return ilookup5(sb, ino, nilfs_iget_test, &args);
>  }
>  
> -struct inode *nilfs_iget_locked(struct super_block *sb, struct
> nilfs_root *root,
> -				unsigned long ino)
> +struct inode *nilfs_iget_locked(struct super_block *sb,
> +				struct nilfs_root *root, u64 ino)
>  {
>  	struct nilfs_iget_args args = {
>  		.ino = ino, .root = root, .cno = 0, .type =
> NILFS_I_TYPE_NORMAL
> @@ -553,7 +552,7 @@ struct inode *nilfs_iget_locked(struct
> super_block *sb, struct nilfs_root *root,
>  }
>  
>  struct inode *nilfs_iget(struct super_block *sb, struct nilfs_root
> *root,
> -			 unsigned long ino)
> +			 u64 ino)
>  {
>  	struct inode *inode;
>  	int err;
> @@ -579,8 +578,7 @@ struct inode *nilfs_iget(struct super_block *sb,
> struct nilfs_root *root,
>  	return inode;
>  }
>  
> -struct inode *nilfs_iget_for_gc(struct super_block *sb, unsigned
> long ino,
> -				__u64 cno)
> +struct inode *nilfs_iget_for_gc(struct super_block *sb, u64 ino,
> __u64 cno)
>  {
>  	struct nilfs_iget_args args = {
>  		.ino = ino, .root = NULL, .cno = cno, .type =
> NILFS_I_TYPE_GC
> @@ -740,7 +738,7 @@ void nilfs_write_inode_common(struct inode
> *inode,
>  
>  void nilfs_update_inode(struct inode *inode, struct buffer_head
> *ibh, int flags)
>  {
> -	ino_t ino = inode->i_ino;
> +	u64 ino = inode->i_ino;
>  	struct nilfs_inode_info *ii = NILFS_I(inode);
>  	struct inode *ifile = ii->i_root->ifile;
>  	struct nilfs_inode *raw_inode;
> diff --git a/fs/nilfs2/ioctl.c b/fs/nilfs2/ioctl.c
> index 0957316e58b8..01a04080ef70 100644
> --- a/fs/nilfs2/ioctl.c
> +++ b/fs/nilfs2/ioctl.c
> @@ -612,7 +612,7 @@ static int nilfs_ioctl_move_blocks(struct
> super_block *sb,
>  	struct nilfs_vdesc *vdesc;
>  	struct buffer_head *bh, *n;
>  	LIST_HEAD(buffers);
> -	ino_t ino;
> +	u64 ino;
>  	__u64 cno;
>  	int i, ret;
>  
> diff --git a/fs/nilfs2/namei.c b/fs/nilfs2/namei.c
> index e2fe95de3d71..6a482da7c682 100644
> --- a/fs/nilfs2/namei.c
> +++ b/fs/nilfs2/namei.c
> @@ -54,7 +54,7 @@ static struct dentry *
>  nilfs_lookup(struct inode *dir, struct dentry *dentry, unsigned int
> flags)
>  {
>  	struct inode *inode;
> -	ino_t ino;
> +	u64 ino;
>  	int res;
>  
>  	if (dentry->d_name.len > NILFS_NAME_LEN)
> @@ -69,7 +69,7 @@ nilfs_lookup(struct inode *dir, struct dentry
> *dentry, unsigned int flags)
>  		inode = nilfs_iget(dir->i_sb, NILFS_I(dir)->i_root,
> ino);
>  		if (inode == ERR_PTR(-ESTALE)) {
>  			nilfs_error(dir->i_sb,
> -					"deleted inode referenced:
> %lu", ino);
> +				"deleted inode referenced: %llu",
> ino);
>  			return ERR_PTR(-EIO);
>  		}
>  	}
> @@ -463,7 +463,7 @@ static int nilfs_rename(struct mnt_idmap *idmap,
>   */
>  static struct dentry *nilfs_get_parent(struct dentry *child)
>  {
> -	ino_t ino;
> +	u64 ino;
>  	int res;
>  	struct nilfs_root *root;
>  
> diff --git a/fs/nilfs2/nilfs.h b/fs/nilfs2/nilfs.h
> index b7e3d91b6243..4fc42d3787a4 100644
> --- a/fs/nilfs2/nilfs.h
> +++ b/fs/nilfs2/nilfs.h
> @@ -144,7 +144,7 @@ enum {
>  	 ((ino) < NILFS_USER_INO && (NILFS_SYS_INO_BITS &
> BIT(ino))))
>  
>  #define NILFS_PRIVATE_INODE(ino)
> ({					\
> -	ino_t __ino =
> (ino);						\
> +	u64 __ino =
> (ino);						\
>  	((__ino) < NILFS_USER_INO && (__ino) != NILFS_ROOT_INO
> &&	\
>  	 (__ino) != NILFS_SKETCH_INO); })
>  
> @@ -255,7 +255,7 @@ static inline __u32 nilfs_mask_flags(umode_t
> mode, __u32 flags)
>  
>  /* dir.c */
>  int nilfs_add_link(struct dentry *, struct inode *);
> -int nilfs_inode_by_name(struct inode *dir, const struct qstr *qstr,
> ino_t *ino);
> +int nilfs_inode_by_name(struct inode *dir, const struct qstr *qstr,
> u64 *ino);
>  int nilfs_make_empty(struct inode *, struct inode *);
>  struct nilfs_dir_entry *nilfs_find_entry(struct inode *, const
> struct qstr *,
>  		struct folio **);
> @@ -287,13 +287,12 @@ extern int nilfs_read_inode_common(struct inode
> *, struct nilfs_inode *);
>  void nilfs_write_inode_common(struct inode *inode,
>  			      struct nilfs_inode *raw_inode);
>  struct inode *nilfs_ilookup(struct super_block *sb, struct
> nilfs_root *root,
> -			    unsigned long ino);
> -struct inode *nilfs_iget_locked(struct super_block *sb, struct
> nilfs_root *root,
> -				unsigned long ino);
> +			    u64 ino);
> +struct inode *nilfs_iget_locked(struct super_block *sb,
> +				struct nilfs_root *root, u64 ino);
>  struct inode *nilfs_iget(struct super_block *sb, struct nilfs_root
> *root,
> -			 unsigned long ino);
> -extern struct inode *nilfs_iget_for_gc(struct super_block *sb,
> -				       unsigned long ino, __u64
> cno);
> +			 u64 ino);
> +struct inode *nilfs_iget_for_gc(struct super_block *sb, u64 ino,
> __u64 cno);
>  int nilfs_attach_btree_node_cache(struct inode *inode);
>  void nilfs_detach_btree_node_cache(struct inode *inode);
>  struct inode *nilfs_iget_for_shadow(struct inode *inode);
> diff --git a/fs/nilfs2/page.c b/fs/nilfs2/page.c
> index 1d00bce21c37..cf4f1c6798f5 100644
> --- a/fs/nilfs2/page.c
> +++ b/fs/nilfs2/page.c
> @@ -154,7 +154,7 @@ void nilfs_folio_bug(struct folio *folio)
>  {
>  	struct buffer_head *bh, *head;
>  	struct address_space *m;
> -	unsigned long ino;
> +	u64 ino;
>  
>  	if (unlikely(!folio)) {
>  		printk(KERN_CRIT "NILFS_FOLIO_BUG(NULL)\n");
> @@ -164,10 +164,9 @@ void nilfs_folio_bug(struct folio *folio)
>  	m = folio->mapping;
>  	ino = m ? m->host->i_ino : 0;
>  
> -	printk(KERN_CRIT "NILFS_FOLIO_BUG(%p): cnt=%d index#=%llu
> flags=0x%lx "
> -	       "mapping=%p ino=%lu\n",
> -	       folio, folio_ref_count(folio),
> -	       (unsigned long long)folio->index, folio->flags.f, m,
> ino);
> +	printk(KERN_CRIT "NILFS_FOLIO_BUG(%p): cnt=%d index#=%lu
> flags=0x%lx  mapping=%p ino=%llu\n",
> +		folio, folio_ref_count(folio), folio->index, folio-
> >flags.f,
> +		m, ino);
>  
>  	head = folio_buffers(folio);
>  	if (head) {
> diff --git a/fs/nilfs2/recovery.c b/fs/nilfs2/recovery.c
> index 4d5a6aa5214c..45fb37215669 100644
> --- a/fs/nilfs2/recovery.c
> +++ b/fs/nilfs2/recovery.c
> @@ -34,7 +34,7 @@ enum {
>  
>  /* work structure for recovery */
>  struct nilfs_recovery_block {
> -	ino_t ino;		/*
> +	u64 ino;		/*
>  				 * Inode number of the file that
> this block
>  				 * belongs to
>  				 */
> @@ -333,7 +333,7 @@ static int nilfs_scan_dsync_log(struct the_nilfs
> *nilfs, sector_t start_blocknr,
>  	unsigned int offset;
>  	u32 nfinfo, sumbytes;
>  	sector_t blocknr;
> -	ino_t ino;
> +	u64 ino;
>  	int err = -EIO;
>  
>  	nfinfo = le32_to_cpu(sum->ss_nfinfo);
> diff --git a/fs/nilfs2/segment.c b/fs/nilfs2/segment.c
> index 5896fdae5669..829573cb6131 100644
> --- a/fs/nilfs2/segment.c
> +++ b/fs/nilfs2/segment.c
> @@ -1610,7 +1610,7 @@ nilfs_segctor_update_payload_blocknr(struct
> nilfs_sc_info *sci,
>  	struct nilfs_finfo *finfo = NULL;
>  	union nilfs_binfo binfo;
>  	struct buffer_head *bh, *bh_org;
> -	ino_t ino = 0;
> +	u64 ino = 0;
>  	int err = 0;
>  
>  	if (!nfinfo)

Applied.

Thanks,
Slava.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.